UC-OVG-FP-002 — Ouder-/voogdcontext bepalen
1. Kerngegevens
| Veld | Waarde |
|---|---|
| Usecase-ID | UC-OVG-FP-002 |
| Naam | Ouder-/voogdcontext bepalen |
| Domein | Ouder/voogd / Frontpage en context |
| Primaire actor | Ouder/voogd |
| Secundaire actor(en) | Frontend, backend, autorisatiecomponent, database |
| Rolcontext | Actieve ouder-/voogdcontext; server-side bepaald vanuit de ingelogde gebruiker |
| Betrokken schermen | Ouder-/voogd-frontpage, rolcontext-routering |
| Gerelateerde usecases | UC-OVG-FP-001, UC-OVG-FP-005, UC-GEN-ACC-002, UC-GEN-PROF-007 |
| Primaire entiteiten | Users, Roles, UserRoles, UserSettings |
| Secundaire entiteiten / events | Rolcontext-readmodel; geen domeinevents |
| Gerelateerde popups | Niet van toepassing |
| Popupregister | Ontwerpbronnen — Popup-register |
| MoSCoW | Must |
2. Omschrijving
De usecase beschrijft hoe OefenHub bepaalt of de ingelogde gebruiker de ouder-/voogdcontext mag gebruiken. De context wordt niet uit de URL of browserstate afgeleid, maar uit de server-side sessie, actieve rollen en geldige applicatiestatus.
Wanneer een gebruiker meerdere niet-leerlingrollen heeft, kan de applicatie een gecombineerde of contextspecifieke frontendweergave samenstellen. De rol Leerling blijft uitgesloten van combinaties met Ouder/voogd.
Uitgangspunten
- De server-side rolcontext is leidend boven clientstate.
- Leerling mag nooit gecombineerd worden met Ouder/voogd.
- Ouder/voogd mag gecombineerd zijn met Docent en/of Beheerder.
- Een actieve ouder-/voogdcontext betekent nog niet dat er actieve kindrelaties bestaan.
- Contextbepaling wijzigt geen rollen of relaties.
3. Scope
Deze usecase beschrijft:
- Server-side bepalen of de ouder-/voogdcontext actief mag worden.
- Uitsluiten van leerlingrolcombinaties.
- Bepalen van gecombineerde context wanneer Docent en Ouder/voogd samen aanwezig zijn.
- Veilig afhandelen van oude routeparameters of clientstate.
Deze usecase beschrijft niet:
- Rollen beheren; dit hoort bij beheerder/accountbeheer.
- Relaties maken of accepteren; dit hoort bij generiek/relaties.
- Kinderenoverzicht laden; dit hoort bij UC-OVG-KIND-001.
3.1 Afbakening met aangrenzende domeinen
| Onderdeel | Afbakening |
|---|---|
| Generiek / Relaties | Relatie-uitnodigingen, acceptatie en algemene relatievorming blijven bronhoudend in het generieke relatiedomein. |
| Generiek / Berichten | Systeemberichten en leesstatussen blijven bronhoudend in het centrale berichtendomein. |
| Leerling | De leerling blijft eigenaar van eigen oefenuitvoering; ouder/voogd kan niet namens het kind oefenen. |
| Docent | Docentautorisaties en docentresultaatinzage blijven begrensd door docentcontext; ouder-/voogdcontext gebruikt eigen relatiegrens. |
4. Pre-condities
| ID | Waarde |
|---|---|
| 001 | De gebruiker heeft een geldige OefenHub-sessie. |
| 002 | UserRoles zijn beschikbaar voor server-side autorisatie. |
| 003 | De rolcontext-routering is actief. |
5. Post-condities
| ID | Waarde |
|---|---|
| 001 | De ouder-/voogdcontext is vastgesteld, geweigerd of gecombineerd volgens de rolregels. |
| 002 | Er is geen rol, relatie of voorkeur gewijzigd. |
| 003 | Vervolgschermen gebruiken dezelfde server-side context. |
6. Trigger
De usecase start wanneer de ouder/voogd de betreffende ouder-/voogdroute opent of de beschreven actie uitvoert binnen de actieve ouder-/voogdcontext.
7. Normale processtroom
| Stap | Actor / component | Actie | Resultaat | Data / controle |
|---|---|---|---|---|
| 1 | Frontend | Vraagt context voor ouder-/voogdroute op | Backend ontvangt routeverzoek | Sessie |
| 2 | Backend | Leest actieve rollen | Beschikbare rolcontexten zijn bekend | UserRoles |
| 3 | Backend | Controleert leerlinguitsluiting | Leerlingcombinatie wordt geblokkeerd | Rolregels |
| 4 | Backend | Bepaalt ouder-/voogdcontext | Context wordt toegestaan of geweigerd | Autorisatie |
| 5 | Backend | Bepaalt gecombineerde context | Docent + Ouder/voogd wordt als gecombineerde frontend behandeld | Rolprioriteit |
| 6 | Frontend | Rendert passende route | Frontpage of veilige afhandeling verschijnt | Contextresultaat |
7.1 Scherm- en routegedrag
- De pagina wordt opgebouwd als overzichts- en oriëntatiepagina, niet als mutatiepagina.
- Blokken tonen compacte waarden en verwijzen naar onderliggende routes voor detailacties.
- Bij lege of niet beschikbare data wordt een veilige lege staat getoond in plaats van gedeeltelijk ongeautoriseerde data.
- De frontend mag visuele keuzes tonen, maar backendautorisatie bepaalt de dataset.
8. Alternatieve en exceptionele processtromen
| ID | Waarde |
|---|---|
| 001 | Geen ouder-/voogdrol: toegang tot ouder-/voogdroute wordt geweigerd. |
| 002 | Gebruiker heeft leerlingrol: ouder-/voogdcontext wordt niet gecombineerd en route wordt geweigerd. |
| 003 | Oude browsercontext wijst naar ouder-/voogd maar rol is ingetrokken: server-side rolcontrole is leidend. |
| 004 | Docent + Ouder/voogd: gecombineerde frontpage wordt runtime samengesteld volgens vaste volgorde. |
| 005 | Beheerder + Docent + Ouder/voogd: beheerderprioriteit geldt in de beheerderfrontpage; ouder-/voogdcontext blijft wel afzonderlijk bereikbaar waar toegestaan. |
8.1 Afhandeling van verouderde of ongeldige clientstate
- De backend herhaalt de autorisatiecontrole bij iedere vervolgactie.
- Oude selectie-, route- of browsercontext wordt genegeerd wanneer de actuele server-side context geen toegang meer geeft.
- De frontend mag verouderde weergave herstellen door opnieuw het actuele viewmodel op te vragen.
9. Business rules
| ID | Waarde |
|---|---|
| 001 | De server-side rolcontext is leidend boven clientstate. |
| 002 | Leerling mag nooit gecombineerd worden met Ouder/voogd. |
| 003 | Ouder/voogd mag gecombineerd zijn met Docent en/of Beheerder. |
| 004 | Een actieve ouder-/voogdcontext betekent nog niet dat er actieve kindrelaties bestaan. |
| 005 | Contextbepaling wijzigt geen rollen of relaties. |
9.1 Readmodel- en tellerdefinities
| Waarde | Definitie | Uitsluitingen / grenzen |
|---|---|---|
| Beschikbare rolcontexten | Afgeleid uit actieve UserRoles van de ingelogde gebruiker. | Clientstate en routeparameters mogen geen extra rolcontext creëren. |
| Combinatie Docent + Ouder/voogd | Runtime bepaald wanneer beide rollen actief zijn. | Er wordt geen apart persistent combinatierecord gebruikt. |
| Leerlinguitsluiting | Afgeleid uit aanwezigheid van leerlingrol. | Leerling mag niet gecombineerd worden met ouder-/voogdcontext. |
9.2 Autorisatie- en privacygrenzen
- De zichtbare dataset wordt altijd server-side beperkt tot de actieve ouder-/voogdcontext.
- Persoonsgegevens van kinderen worden alleen getoond zolang er een actieve ouder-/voogdrelatie bestaat.
- Historische oefenresultaten worden gelezen binnen de toegestane context, maar niet gewijzigd door raadplegen of samenvatten.
10. Datavalidatie
| ID | Waarde |
|---|---|
| 001 | UserId uit sessie moet bestaan en actief zijn. |
| 002 | De rol Ouder/voogd moet actief zijn op het moment van routecontrole. |
| 003 | Routeparameters mogen geen andere rolcontext afdwingen dan server-side toegestaan. |
| 004 | Bij combinatierollen moet de vaste volgorde voor frontpages toepasbaar zijn. |
11. Datamutaties en events
| ID | Waarde |
|---|---|
| 001 | Geen domeinmutaties. |
| 002 | Contextbepaling is runtime autorisatie- en routeringslogica op basis van de actuele sessie en rollen. |
12. Geen datamutaties
| ID | Waarde |
|---|---|
| 001 | UserRoles worden niet gewijzigd. |
| 002 | UserRelationships worden niet gelezen als autorisatiebron voor de rol zelf. |
| 003 | UserSettings worden niet aangepast door contextbepaling. |
13. State diagram
Niet van toepassing. Deze usecase wijzigt geen persistent statusobject. De ouder-/voogdcontext is een runtimebesluit en geen opgeslagen lifecyclestatus.
14. Decision flow
15. Data lifecycle diagram
16. Sequence diagrammen
17. Popupverwijzingen
| PopupKey | Gebruik | Opmerking |
|---|---|---|
| Niet van toepassing | Deze usecase gebruikt geen popupregister-popup. | Lege staten en inline meldingen zijn scherminhoud en geen popupdefinitie. |
18. Afleiding naar Functioneel Ontwerp / Technisch Ontwerp / Software Requirements Specification
| Aspect | Afleiding |
|---|---|
| FO/TO/SRS-001 | Ouder/voogd is een zelfstandige rolcontext. |
| FO/TO/SRS-002 | De rol Leerling kan niet gecombineerd worden met Ouder/voogd. |
| FO/TO/SRS-003 | Docent en Ouder/voogd mogen gecombineerd voorkomen. |
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-OVG-FP-002-001 | SRS-AUTH-001 SRS-GUA-001 AC-AUTH-001 AC-GUA-001 | Ouder-/voogdcontext server-side bepalen |
REQ-UC-OVG-FP-002-002 | SRS-AUTH-001 SRS-LRN-009 SRS-GUA-001 AC-AUTH-001 AC-LRN-009 AC-GUA-001 | Leerlingcombinaties met ouder-/voogd blokkeren |
REQ-UC-OVG-FP-002-003 | SRS-AUTH-001 SRS-AUTH-002 SRS-GUA-001 AC-AUTH-001 AC-AUTH-002 AC-GUA-001 | Oude clientstate negeren wanneer die niet overeenkomt met actuele rollen |
REQ-UC-OVG-FP-002-004 | SRS-AUTH-003 SRS-LRN-009 SRS-TCH-001 SRS-GUA-001 AC-AUTH-003 AC-LRN-009 AC-TCH-001 AC-GUA-001 | Gecombineerde Docent + Ouder/voogd-context runtime kunnen samenstellen |
REQ-UC-OVG-FP-002-005 | SRS-REL-001 SRS-GUA-001 AC-REL-001 AC-GUA-001 | Contextbepaling niet gebruiken om rollen of relaties te wijzigen |