UC-BEH-ACC-001 — Accountoverzicht bekijken
1. Kerngegevens
| Veld | Waarde |
|---|---|
| Usecase-ID | UC-BEH-ACC-001 |
| Naam | Accountoverzicht bekijken |
| Domein | Beheerder / Accountbeheer |
| Primaire actor | Beheerder |
| Secundaire actor(en) | Frontend, backend, database, autorisatiecomponent, identity-providerkoppeling, presence/readmodelcomponent |
| Rolcontext | Actieve beheerdercontext; server-side bepaald vanuit de ingelogde gebruiker |
| Betrokken schermen | Accounts beheren |
| Gerelateerde usecases | UC-BEH-ACC-002, UC-BEH-ACC-003, UC-BEH-ACC-004, UC-BEH-ACC-005, UC-BEH-ACC-006, UC-BEH-ACC-007, UC-BEH-ACC-008, UC-BEH-ACC-009, UC-BEH-ACC-010, UC-GEN-ACC-001, UC-GEN-ACC-002, UC-GEN-ACC-005 |
| Primaire entiteiten | Users, Roles, UserRoles, UserSettings, ProfileAvatars |
| Secundaire entiteiten / events | UserRelationships, RelationshipInvitations, TeacherLevels, TeacherLevelAuthorizations, LevelCollaborators, ExerciseRuns, LiveViewAudit, SystemMessages, PrivateMessageThreads, Tickets |
| Gerelateerde popups | Niet van toepassing |
| Popupregister | Ontwerpbronnen — Popup-register |
| MoSCoW | Must |
2. Omschrijving
De usecase beschrijft hoe een beheerder het accountoverzicht opent. Het overzicht is bedoeld om gebruikers vindbaar te maken op basis van functionele accountgegevens, rolcontext en status, zonder credentials of identity-providerdetails te tonen.
Per account worden minimaal weergavenaam, e-mailadres, actieve rollen, actieve status, laatste activiteit en een online-indicatie getoond. De online-indicatie is een afgeleide actuele applicatiewaarde en geen bewijs van een blijvende sessie in de database.
Het overzicht is een selectie- en oriëntatiepagina. Wijzigingen aan rollen, status, instellingen of lifecycle worden pas uitgevoerd vanuit accountdetail of een daarvoor bedoelde vervolgflow.
Uitgangspunten
- Het accountoverzicht gebruikt Users, UserRoles, Roles en UserSettings als functionele bron.
- Identity-providergegevens worden alleen gebruikt voor authenticatiecontext en worden niet als credentialdetail getoond.
- Zoeken en filteren gebeurt server-side binnen de geautoriseerde beheercontext.
- Online-status is afgeleid en wordt niet gebruikt als autorisatiebron.
- Het overzicht toont geen wachtwoord-, token-, secret- of credentialinformatie.
3. Scope
Deze usecase beschrijft:
- Laden van een server-side gefilterd accountoverzicht.
- Zoeken op naam, e-mailadres en rolgerelateerde accountcontext.
- Filteren op actieve status en rollen.
- Tonen van actieve rollen en niet-publieke roltoekenningen.
- Tonen van LastSeenAtUtc en een actuele online-indicatie.
- Selecteren van precies één account voor accountdetail.
Deze usecase beschrijft niet:
- Wachtwoorden, tokens, secrets, identity-provider-sessies of credentialstatus beheren.
- Een Keycloak- of identity-provideraccount rechtstreeks wijzigen of verwijderen.
- Vrij relatiebeheer tussen gebruikers uitvoeren; relatieflows blijven bronhoudend in het relatiedomein.
- Profielwijzigingen als selfservice-gebruikersflow dupliceren; eigen profielbeheer blijft bronhoudend in generiek/profiel.
- Popupteksten, knopteksten of inputlabels specificeren; usecases verwijzen uitsluitend naar PopupKey.
- Accountrollen wijzigen; dit hoort bij UC-BEH-ACC-003 en UC-BEH-ACC-004.
- Account deactiveren, heractiveren of anonimiseren; dit hoort bij UC-BEH-ACC-005, UC-BEH-ACC-006 en UC-BEH-ACC-007.
- Individuele gebruikersinstellingen wijzigen; dit hoort bij UC-BEH-ACC-009.
3.1 Afbakening met aangrenzende domeinen
| Onderdeel | Afbakening |
|---|---|
| Generiek / Account | Login, provisioning, logout en selfservice-accountverwijdering blijven bronhoudend in het generieke accountdomein. |
| Generiek / Profiel en voorkeuren | Eigen profiel- en voorkeurenbeheer blijft gebruikergericht; accountbeheer bevat alleen beheerdercorrecties en uitzonderingsacties. |
| Generiek / Relaties | Relatie-uitnodigingen, acceptatie en normale ontkoppeling blijven in het relatiedomein; accountbeheer kan wel afhankelijke toegang beëindigen bij lifecycle-acties. |
| Beheerder / Docentondersteuning | Docentstructuur, leerlingtoegang en collaborators worden daar supportmatig beheerd; accountbeheer ziet accountbrede identiteit, rollen en lifecycle. |
| Identity provider | Authenticatie, wachtwoorden, verificatie, tokens en credentials blijven buiten OefenHub-accountbeheer. |
4. Pre-condities
| ID | Voorwaarde |
|---|---|
| PRE-001 | De gebruiker is succesvol ingelogd in OefenHub. |
| PRE-002 | De backend heeft server-side vastgesteld dat de gebruiker een actieve beheerderrol heeft. |
| PRE-003 | De beheerder bevindt zich binnen Accounts beheren of een onderliggende accountbeheerroute. |
| PRE-004 | Clientstate, routeparameters of verborgen formuliervelden bepalen nooit welk account gewijzigd mag worden. |
| PRE-005 | De identity provider blijft bronhouder voor authenticatie, wachtwoorden, tokens, sessies en credential lifecycle. |
| PRE-006 | Er bestaan nul of meer Users-records. |
| PRE-007 | De beheerder heeft toegang tot de accountbeheerpagina. |
5. Post-condities
| ID | Resultaat |
|---|---|
| POST-001 | De beheerder ziet een actueel accountoverzicht of een lege staat. |
| POST-002 | Geen Users-, UserRoles- of UserSettings-record is gewijzigd. |
| POST-003 | Geen accountlifecycleactie is uitgevoerd. |
| POST-004 | Bij selectie van precies één account kan de beheerder accountdetail openen. |
| POST-005 | Credentialinformatie van de identity provider is niet opgehaald of getoond. |
6. Trigger
De usecase start wanneer de beheerder via de beheeromgeving de pagina Accounts beheren opent.
7. Normale processtroom
| Stap | Actor | Component / context | Actie | Resultaat | Data / controle |
|---|---|---|---|---|---|
| 1 | Beheerder | Beheernavigatie | Opent Accounts beheren. | De frontend vraagt het accountoverzicht op. | Route: Accounts beheren. |
| 2 | Backend | Autorisatiecomponent | Controleert actieve beheerdercontext. | Alleen een beheerder krijgt accountoverzichtdata. | Server-side rolcontrole. |
| 3 | Backend | Accountquery | Laadt Users met status- en profielvelden. | Accountrecords worden voorbereid voor weergave. | Users. |
| 4 | Backend | Rolquery | Laadt actieve UserRoles en Roles. | Actieve rolset per account wordt toegevoegd. | UserRoles.IsActive = true. |
| 5 | Backend | Readmodel | Bepaalt LastSeen en online-indicatie. | Online-indicatie wordt afgeleid uit actuele applicatiecontext. | LastSeenAtUtc en realtime aanwezigheidsbron. |
| 6 | Frontend | Accountoverzicht | Toont zoekveld, filters en lijst. | De beheerder kan filteren, zoeken en één account selecteren. | Read-only overzicht. |
| 7 | Beheerder | Accountoverzicht | Selecteert één account. | Actie Open detail wordt beschikbaar. | Geselecteerde Users.Id. |
8. Alternatieve en exceptionele processtromen
| Stap | Situatie | Afhandeling | PopupKey | Datagevolg |
|---|---|---|---|---|
| 2 | Gebruiker heeft geen actieve beheerderrol. | De backend weigert toegang en toont een veilige toegang-geweigerdafhandeling. | Niet van toepassing. | Geen. |
| 3 | Geen accounts gevonden. | Het overzicht toont een lege staat zonder mutatie. | Niet van toepassing. | Geen. |
| 4 | Rolreadmodel kan niet volledig worden geladen. | Accounts worden niet met onvolledige autorisatie-informatie als volledig geldig getoond; de pagina toont een veilige foutafhandeling. | Niet van toepassing. | Geen. |
| 5 | Online-indicatie is tijdelijk niet beschikbaar. | Het overzicht toont LastSeenAtUtc en markeert online-status als niet beschikbaar, niet als offline. | Niet van toepassing. | Geen. |
| 7 | Geselecteerd account bestaat niet meer of is geanonimiseerd tijdens de selectie. | De selectie wordt geweigerd en het overzicht wordt opnieuw geladen. | Niet van toepassing. | Geen. |
9. Business rules
| ID | Business rule |
|---|---|
| BR-001 | Het accountoverzicht is read-only. |
| BR-002 | Credentialgegevens uit de identity provider worden niet getoond. |
| BR-003 | Zoeken en filteren gebeurt server-side binnen de beheerderautorisatie. |
| BR-004 | Leerlingrol mag in accountweergave niet als combineerbaar met ouder/voogd, docent, beheerder of TestDocent worden behandeld. |
| BR-005 | Niet-publieke rollen zoals Beheerder en TestDocent moeten herkenbaar zijn als beheerrollen. |
| BR-006 | Online-status is informatief en bepaalt geen autorisatie. |
| BR-007 | Geanonimiseerde accounts blijven waar nodig herkenbaar als geanonimiseerde historische accounts, zonder persoonsgegevens te tonen. |
10. Datavalidatie
| ID | Validatie |
|---|---|
| VAL-001 | Zoekterm mag leeg zijn en wordt veilig genormaliseerd. |
| VAL-002 | Filterwaarden voor rol en status moeten tot toegestane enum-/rolwaarden behoren. |
| VAL-003 | Users.Id uit selectie moet server-side bestaan. |
| VAL-004 | Rolnamen worden afgeleid uit Roles en niet uit clientlabels. |
| VAL-005 | Online-indicatie mag niet als clientwaarde worden aangeleverd. |
| VAL-006 | Paginering- en sorteerparameters worden begrensd. |
11. Datamutaties en events
| Onderdeel | Mutatie / event |
|---|---|
| Geen domeinmutatie | Het openen van het overzicht wijzigt geen accountdata. |
| Geen lifecycle-event | Er wordt geen accountlogregel of domeinevent geschreven voor louter raadplegen. |
12. Geen datamutaties
| Object / gegeven | Niet wijzigen |
|---|---|
| Users | Geen profiel-, status- of lifecyclevelden wijzigen. |
| UserRoles | Geen roltoekenningen toevoegen of intrekken. |
| UserSettings | Geen instellingen wijzigen. |
| Identity provider | Geen credentials of sessies opvragen of aanpassen. |
| Relaties en autorisaties | Geen afhankelijke toegang wijzigen. |
13. State diagram
Niet van toepassing. Deze usecase wijzigt geen persistente domeinstatus. De weergegeven toestand is een read-only scherm- of readmodeltoestand en wordt daarom niet als statusmodel opgenomen.
14. Decision flow
15. Data lifecycle diagram
16. Sequence diagrammen
17. Popupverwijzingen
Niet van toepassing
18. Afleiding naar Functioneel Ontwerp / Technisch Ontwerp / Software Requirements Specification
| Document | Afleiding |
|---|---|
| Functioneel Ontwerp | Accountbeheer bevat een overzicht waarmee beheerders gebruikers, rollen, status en online-indicatie kunnen raadplegen. |
| Technisch Ontwerp | Technisch Ontwerp: identiteit en accountlifecycle, autorisatie, logging en foutafhandeling en privacy en anonimisering beschrijven de technische uitwerking. Queries voor overzicht, rollen en online-indicatie worden server-side opgebouwd en gepagineerd. |
| Software Requirements Specification | SRS moet vastleggen welke velden zichtbaar zijn en dat credentials nooit worden getoond. |
| Database | Gebruikt Users, Roles, UserRoles en afgeleide aanwezigheidsinformatie; geen mutatie. |
19. SRS-trace
Deze usecase bevat geen normatieve requirementtekst. De centrale eis en acceptatiecriteria staan in de SRS; onderstaande tabel koppelt de usecase-afleiding alleen aan centrale SRS-*- en AC-*-items.
| Usecase-afleiding | Dekt | Usecasecontext |
|---|---|---|
UC-BEH-ACC-001-REQ-001 | SRS-RDM-001 SRS-RDM-004 SRS-ACC-002 SRS-ADM-002 SRS-ADM-001 AC-RDM-001 AC-RDM-004 AC-ACC-002 AC-ADM-002 AC-ADM-001 | Een beheerder een accountoverzicht kunnen tonen |
UC-BEH-ACC-001-REQ-002 | SRS-AUTH-001 SRS-RDM-001 SRS-RDM-004 SRS-ACC-002 SRS-ADM-002 SRS-ADM-001 AC-AUTH-001 AC-RDM-001 AC-RDM-004 AC-ACC-002 AC-ADM-002 AC-ADM-001 | Accountoverzichtdata server-side autoriseren |
UC-BEH-ACC-001-REQ-003 | SRS-ACC-002 SRS-ADM-002 SRS-ADM-001 AC-ACC-002 AC-ADM-002 AC-ADM-001 | Actieve rollen per account tonen |
UC-BEH-ACC-001-REQ-004 | SRS-RDM-001 SRS-ADM-001 AC-RDM-001 AC-ADM-001 | Actieve status en LastSeenAtUtc tonen |
UC-BEH-ACC-001-REQ-005 | SRS-RDM-001 SRS-ADM-001 AC-RDM-001 AC-ADM-001 | Online-status als afgeleide indicatie tonen wanneer beschikbaar |
UC-BEH-ACC-001-REQ-006 | SRS-ADM-001 SRS-NFR-SEC-001 SRS-NFR-PRV-001 AC-ADM-001 AC-NFR-SEC-001 AC-NFR-PRV-001 | Geen wachtwoord-, token-, secret- of credentialinformatie tonen |
UC-BEH-ACC-001-REQ-007 | SRS-AUTH-001 SRS-RDM-001 SRS-ADM-001 AC-AUTH-001 AC-RDM-001 AC-ADM-001 | Zoeken, filteren en pagineren server-side begrenzen |