UC-BEH-FP-002 — Beheercontext bepalen
1. Kerngegevens
| Veld | Waarde |
|---|---|
| Usecase-ID | UC-BEH-FP-002 |
| Naam | Beheercontext bepalen |
| Domein | Beheerder / Frontpage en context |
| Primaire actor | Beheerder |
| Secundaire actor(en) | Frontend, backend, database, autorisatiecomponent, readmodelqueries |
| Rolcontext | Actieve beheerdercontext; bij combinatierollen samengesteld volgens prioriteit Beheerder, Docent, Ouder/voogd |
| Betrokken schermen | Beheerder-frontpage, gezamenlijke frontpage bij combinatierollen, hoofdmenu |
| Gerelateerde usecases | UC-BEH-FP-001, UC-BEH-FP-005, UC-GEN-ACC-002, UC-GEN-ACC-003, UC-GEN-PROF-003 |
| Primaire entiteiten | Users, Roles, UserRoles, UserSettings |
| Secundaire entiteiten / events | FrontendContext, ContentBlocks, SiteNotifications |
| Gerelateerde popups | Niet van toepassing |
| Popupregister | Ontwerpbronnen — Popup-register |
| MoSCoW | Must |
2. Omschrijving
Deze usecase beschrijft hoe OefenHub bepaalt of de ingelogde gebruiker in beheerdercontext mag werken en welke frontendcontext leidend is bij combinatierollen. De contextbepaling vormt de toegangspoort voor de beheerder-frontpage en alle beheerdernavigatie.
Een gebruiker kan Beheerder combineren met Docent en/of Ouder/voogd, maar nooit met Leerling. Wanneer Beheerder aanwezig en actief is, krijgt de beheerdercontext bij frontpageweergave de hoogste prioriteit. De applicatie toont geen dubbele navigatie-items en laat clientstate of routeparameters nooit de server-side context overschrijven.
De usecase beschrijft uitsluitend contextbepaling en routebesluitvorming. Het uitvoeren van beheeracties, het wijzigen van rollen en het samenstellen van gecombineerde frontpageblokken zijn afzonderlijke usecases.
Uitgangspunten
- De externe identity provider levert authenticatie; OefenHub bepaalt de interne applicatiecontext.
- Users.ExternalId koppelt de identity-providerlogin aan het interne account.
- Users.IsActive blokkeert reguliere toegang wanneer het account inactief is.
- De rol Leerling kan niet gecombineerd worden met Beheerder, Docent of Ouder/voogd.
3. Scope
Deze usecase beschrijft:
- Bepalen of een ingelogde gebruiker beheerdercontext heeft.
- Toepassen van de prioriteitsvolgorde Beheerder, Docent, Ouder/voogd.
- Blokkeren van beheerdercontext bij inactief account, ontbrekende rol of conflicterende leerlingrol.
- Bepalen welke navigatie- en frontpagecontext leidend is.
- Voorkomen dat browserstate, oude route of querystring een rolcontext afdwingt.
Deze usecase beschrijft niet:
- Toekennen of intrekken van rollen; dit hoort bij Accountbeheer.
- Samenstellen van alle gecombineerde frontpageblokken; dit hoort bij UC-BEH-FP-005.
- Accountprovisioning; dit blijft bij generiek/account.
- Wijzigen van profiel- of niveaucontext.
- Autorisatie per afzonderlijke beheeractie op detailpagina’s.
3.1 Afbakening met aangrenzende usecases
| Onderdeel | Afbakening |
|---|---|
| UC-GEN-ACC-002 | Verwerkt login en sessie; deze usecase bepaalt daarna de beheergerichte applicatiecontext. |
| UC-BEH-FP-001 | Gebruikt het contextbesluit om de beheerder-frontpage te tonen. |
| UC-BEH-FP-005 | Gebruikt de volledige rolset voor runtime-samenstelling bij combinatierollen. |
| Accountbeheer | Kent of trekt rollen toe; deze usecase leest rollen alleen. |
| Site Instellingen | Gebruikt dezelfde beheerdercontext, maar autoriseert eigen routes opnieuw. |
4. Pre-condities
| ID | Voorwaarde |
|---|---|
| PRE-001 | De gebruiker is teruggekeerd uit een succesvolle identity-providerflow of heeft een bestaande geldige applicatiesessie. |
| PRE-002 | Het interne account kan via Users.ExternalId of sessiecontext worden gevonden. |
| PRE-003 | Rollen en rolstatussen zijn server-side beschikbaar. |
| PRE-004 | De applicatie kan vaststellen of de gebruiker een conflicterende leerlingrol heeft. |
| PRE-005 | De route of terugkeerroute waarvoor context wordt bepaald is bekend. |
| PRE-006 | Clientstate wordt niet als bron van waarheid voor rolcontext gebruikt. |
5. Post-condities
| ID | Resultaat |
|---|---|
| POST-001 | Er is een server-side frontpage- en navigatiecontext bepaald. |
| POST-002 | Bij geldige beheerderrol is beheerdercontext leidend. |
| POST-003 | Bij ontbrekende of ongeldige beheerderrol wordt geen beheerdercontext afgegeven. |
| POST-004 | Eventuele combinatierollen zijn vastgelegd voor runtime-samenstelling van frontpageblokken. |
| POST-005 | Er zijn geen rollen, relaties of autorisaties gewijzigd. |
| POST-006 | De gebruiker wordt naar een veilige context geleid wanneer de gevraagde beheerroute niet is toegestaan. |
6. Trigger
De usecase start na succesvolle interne sessieverwerking, bij het openen van een beheerderroute of wanneer de applicatie de actieve frontpagecontext opnieuw moet bepalen.
7. Normale processtroom
| Stap | Actor | Scherm / component | Actie | Systeemrespons | Data / regel |
|---|---|---|---|---|---|
| 1 | Frontend | Applicatieshell | Vraagt de actieve context op. | De backend ontvangt account- en routecontext. | Geen rolcontext uit clientstate vertrouwen. |
| 2 | Backend | Accountservice | Laadt het interne account. | Accountstatus en basisprofiel worden gecontroleerd. | Users.IsActive moet actief zijn. |
| 3 | Backend | Rolservice | Laadt actieve rollen van de gebruiker. | De set beschikbare rolcontexten wordt bepaald. | UserRoles, Roles. |
| 4 | Backend | Rolvalidatie | Controleert of Leerling gecombineerd is met niet-leerlingrollen. | Bij conflicterende combinatie wordt veilige accountafhandeling gekozen. | Leerling mag niet gecombineerd met Beheerder. |
| 5 | Backend | Contextbepaling | Controleert of Beheerder actief is. | Als Beheerder actief is, wordt beheerdercontext als hoogste prioriteit gekozen. | Prioriteit: Beheerder, Docent, Ouder/voogd. |
| 6 | Backend | Routecontrole | Controleert of de gevraagde route binnen beheerdercontext toegankelijk is. | Toegestane beheerderroute wordt bevestigd of veilig afgewezen. | Server-side autorisatie. |
| 7 | Backend | Navigatiecomponent | Bouwt navigatie voor beheerdercontext. | Site Instellingen, Content en Accounts beheren zijn beschikbaar wanneer toegestaan. | Geen dubbele navigatie-items. |
| 8 | Backend | Frontend | Levert contextbesluit. | Frontend ontvangt actieve context, aanvullende rollen en toegestane navigatie. | Geen domeinmutatie. |
| 9 | Frontend | Applicatieshell | Past de actieve weergave toe. | De juiste frontpage of route wordt getoond. | UC-BEH-FP-001 of UC-BEH-FP-005. |
8. Alternatieve en exceptionele processtromen
| ID | Vanaf stap | Situatie | Systeemgedrag | Popup / melding | Datamutatie |
|---|---|---|---|---|---|
| ALT-001 | 2 | Het interne account ontbreekt. | De applicatie volgt de bestaande provisioning- of onvolledig-accountafhandeling. | Bestaande generieke accountflow. | Geen beheercontext. |
| ALT-002 | 2 | Het interne account is inactief. | Reguliere toegang wordt geblokkeerd. | Veilige accountmelding of redirect. | Geen. |
| ALT-003 | 3 | De gebruiker heeft geen rollen. | De gebruiker krijgt de beperkte context zonder rol. | Geen beheerdermelding. | Geen. |
| ALT-004 | 4 | Leerlingrol is gecombineerd met Beheerder. | De combinatie wordt niet als geldige beheercontext geaccepteerd en vraagt accountcorrectie via beheer. | Veilige blokkade. | Geen automatische rolwijziging. |
| ALT-005 | 5 | Gebruiker heeft Docent en Ouder/voogd maar geen Beheerder. | De docent/ouder-context wordt volgens lagere prioriteit afgehandeld buiten deze usecase. | Niet van toepassing. | Geen. |
| ALT-006 | 6 | De oorspronkelijke terugkeerroute is een beheerroute maar beheerderrol ontbreekt. | De terugkeerroute wordt genegeerd en de gebruiker gaat naar een veilige context. | Inline of redirect. | Geen. |
| ALT-007 | 6 | Beheerderrol is net ingetrokken tijdens sessie. | De eerstvolgende server-side contextcontrole blokkeert beheerdercontext. | Veilige toegang geweigerd. | Geen. |
| ALT-008 | 7 | Navigatie bevat hetzelfde doel via meerdere rolcontexten. | De beheerdercontext bepaalt één zichtbaar navigatie-item; dubbele items worden samengevoegd. | Niet van toepassing. | Geen. |
9. Business rules
| ID | Regel |
|---|---|
| BR-UC-BEH-FP-002-001 | De actieve beheercontext wordt uitsluitend server-side bepaald. |
| BR-UC-BEH-FP-002-002 | Een gebruiker met Beheerder, Docent en Ouder/voogd krijgt voor frontpages de prioriteit Beheerder, daarna Docent, daarna Ouder/voogd. |
| BR-UC-BEH-FP-002-003 | De rol Leerling mag niet gecombineerd worden met Beheerder, Docent of Ouder/voogd. |
| BR-UC-BEH-FP-002-004 | Een inactief intern account kan geen beheercontext krijgen, ook niet met geldige identity-providerlogin. |
| BR-UC-BEH-FP-002-005 | Een terugkeerroute na login mag alleen worden gebruikt wanneer de server-side context toegang tot die route toestaat. |
| BR-UC-BEH-FP-002-006 | Navigatie-items worden niet dubbel getoond wanneer meerdere rolcontexten hetzelfde doel aanbieden. |
| BR-UC-BEH-FP-002-007 | Contextbepaling wijzigt geen rollen, relaties, instellingen of autorisaties. |
| BR-UC-BEH-FP-002-008 | Beheerdercontext geeft geen recht op live meekijken tijdens actieve leerlingoefeningen. |
10. Datavalidatie
| Veld / object | Validatie |
|---|---|
| Users.ExternalId | Moet verwijzen naar precies één intern actief account voor normale toegang. |
| Users.IsActive | Moet true zijn voor beheercontext. |
| UserRoles | Moet een actieve koppeling bevatten met rol Beheerder. |
| Roles.IsPublic | Niet-publieke rollen zoals Beheerder mogen alleen via beheer worden toegekend; contextbepaling kent ze niet toe. |
| Rolcombinatie | Leerlingrol mag niet aanwezig zijn naast Beheerder. |
| Route | De gevraagde route moet passen binnen de server-side bepaalde context. |
| Clientstate | Mag alleen als voorkeur of UI-hint worden gebruikt en nooit als autorisatiebron. |
| Navigatie | Moet worden afgeleid uit actieve rollen en toegestane routes. |
10.1 Autorisatie en server-side controles
| Controle | Uitwerking |
|---|---|
| Accountstatus | Controleer dat het interne account actief is voordat beheerdata wordt geladen. |
| Rolstatus | Controleer dat de beheerderrol actief is op het moment van het verzoek. |
| Clientstate | Gebruik browserstate uitsluitend als UI-hint en nooit als autorisatiebron. |
| Directe URL | Voer dezelfde controle uit bij directe routes als bij navigatie via menu of tegel. |
| Veilige response | Geef bij blokkade geen beheerdata, technische sleutels of querydetails terug. |
| Rolcombinatie | Blokkeer beheercontext wanneer Leerling gecombineerd voorkomt met Beheerder. |
| Prioriteit | Pas Beheerder, Docent, Ouder/voogd toe als vaste volgorde voor frontpages. |
| Terugkeerroute | Controleer een oorspronkelijke route opnieuw voordat deze na login wordt gebruikt. |
11. Datamutaties en events
| Stap | Type | Entiteit / event | Mutatie |
|---|---|---|---|
| 1-9 | Database | Niet van toepassing | Contextbepaling voert geen mutaties uit. |
| 1-9 | Sessiecontext | Actieve frontendcontext | De server bepaalt de leidende frontendcontext voor de lopende sessie; rollen, relaties en brondomeinen blijven ongewijzigd. |
| 1-9 | Audit | Niet van toepassing | Een normale contextbepaling is geen beheerwijziging. |
12. Geen datamutaties
| Entiteit | Reden |
|---|---|
| Users | Accountstatus en profielvelden worden niet gewijzigd. |
| Roles en UserRoles | Rollen worden gelezen maar niet toegekend of ingetrokken. |
| UserRelationships | Relaties worden niet aangemaakt of beëindigd. |
| ContentBlocks | Contextbepaling wijzigt geen content. |
| Tickets en LiveViewAudit | Er wordt geen melding geopend en geen live meekijksessie gestart. |
13. State diagram
Niet van toepassing. Deze usecase wijzigt geen persistente domeinstatus, workflowstatus of lifecycle-status. De flow bestaat uit server-side contextcontrole, readmodelopbouw en veilige weergave-afhandeling.
14. Decision flow
15. Data lifecycle diagram
16. Sequence diagrammen
Contextbepaling na routeverzoek
Terugkeerroute niet toegestaan
17. Popupverwijzingen
Deze usecase gebruikt geen popupregister-popup. Eventuele fout- of blokkademeldingen worden als inline melding, veilige redirect of statusweergave afgehandeld.
| PopupKey | Moment | Doel |
|---|---|---|
| Niet van toepassing | Geen bevestigings- of invoerpopup in deze usecase. | Niet van toepassing. |
18. Afleiding naar Functioneel Ontwerp / Technisch Ontwerp / Software Requirements Specification
| Doeldocument | Afleiding |
|---|---|
| Functioneel Ontwerp | Beschrijft beheercontext als server-side afgeleide frontendcontext met prioriteit Beheerder, Docent, Ouder/voogd en expliciete uitsluiting van leerlingcombinaties. |
| Technisch Ontwerp | Technisch Ontwerp: technische rolflows, readmodels en beheersamenvattingen en frontendcompositie beschrijven de technische uitwerking. Leg contextbepaling vast als onderdeel van sessieverwerking en routeautorisatie, met UserRoles als bron en clientstate uitsluitend als niet-autoriserende UI-informatie. |
| Software Requirements Specification | Neem eisen op voor server-side contextcontrole, rolprioriteit, blokkade bij conflicterende rollen en veilige afhandeling van onbevoegde beheerderoutes. |
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 |
|---|---|---|
REQ-UC-BEH-FP-002-001 | SRS-AUTH-001 SRS-ADM-001 AC-AUTH-001 AC-ADM-001 | De actieve beheercontext uitsluitend server-side bepalen |
REQ-UC-BEH-FP-002-002 | SRS-ACC-001 SRS-ADM-002 SRS-ADM-001 AC-ACC-001 AC-ADM-002 AC-ADM-001 | Een beheerdercontext alleen afgeven bij een actief intern account met actieve beheerderrol |
REQ-UC-BEH-FP-002-003 | SRS-AUTH-003 SRS-TCH-001 SRS-GUA-001 SRS-ADM-002 SRS-ADM-001 AC-AUTH-003 AC-TCH-001 AC-GUA-001 AC-ADM-002 AC-ADM-001 | Bij combinatierollen de prioriteit Beheerder, Docent, Ouder/voogd toepassen |
REQ-UC-BEH-FP-002-004 | SRS-AUTH-001 SRS-LRN-009 SRS-ADM-001 AC-AUTH-001 AC-LRN-009 AC-ADM-001 | De combinatie Leerling met Beheerder blokkeren als geldige frontendcontext |
REQ-UC-BEH-FP-002-005 | SRS-AUTH-001 SRS-ADM-001 AC-AUTH-001 AC-ADM-001 | Een routeparameter, terugkeerroute of browserstate niet gebruiken als autorisatiebron |
REQ-UC-BEH-FP-002-006 | SRS-AUTH-003 SRS-ADM-002 SRS-ADM-001 AC-AUTH-003 AC-ADM-002 AC-ADM-001 | Dubbele navigatie-items bij combinatierollen voorkomen |
REQ-UC-BEH-FP-002-007 | SRS-AUTH-001 SRS-ADM-001 SRS-NFR-SEC-001 AC-AUTH-001 AC-ADM-001 AC-NFR-SEC-001 | Onbevoegde beheerderoutes veilig afhandelen zonder beheerdata te tonen |
REQ-UC-BEH-FP-002-008 | SRS-AUTH-001 SRS-REL-001 SRS-ADM-002 SRS-ADM-001 AC-AUTH-001 AC-REL-001 AC-ADM-002 AC-ADM-001 | Het bepalen van beheercontext mag geen rollen, relaties of autorisaties wijzigen |