UC-DOC-FP-002 — Docentcontext bepalen
1. Kerngegevens
| Veld | Waarde |
|---|---|
| Usecase-ID | UC-DOC-FP-002 |
| Naam | Docentcontext bepalen |
| Domein | Docent / Frontpage en context |
| Primaire actor | Systeem |
| Secundaire actor(en) | Docent, OefenHub frontend, OefenHub backend, routeguard, autorisatielaag, database |
| Rolcontext | Ingelogde gebruiker met een actieve docentrol of gecombineerde docentcontext. |
| Betrokken schermen | Docent-frontpage, routeguard, contextresolver, rolgebaseerde navigatie. |
| Gerelateerde usecases | UC-DOC-FP-001 — Docent-frontpage bekijken; UC-DOC-FP-005 — Gecombineerde docent-ouder-frontpage tonen; UC-GEN-ACC-002 — Inloggen en sessie verwerken; UC-GEN-ACC-003 — Geen rol of onvolledig account afhandelen |
| Primaire entiteiten | Users, UserRoles, Roles, UserSettings |
| Secundaire entiteiten / events | server-side contextresolver, routeguardbeslissing, gecombineerd rolcontextmodel |
| Gerelateerde popups | Niet van toepassing |
| Popupregister | Niet van toepassing |
| MoSCoW | Must |
2. Omschrijving
Deze usecase beschrijft hoe OefenHub na login of bij het openen van een docentroute bepaalt of een docentcontext beschikbaar is. De contextbepaling is server-side applicatielogica en wordt niet als aparte sessietabel of contextentiteit opgeslagen.
De docentcontext bepaalt welke navigatie, frontpageblokken en vervolgpunten beschikbaar zijn. Wanneer de gebruiker daarnaast ook ouder/voogd of beheerder is, wordt de zichtbare frontpage volgens vaste prioriteitsregels samengesteld.
De usecase beschrijft niet het toekennen van rollen. Rollen worden elders beheerd; deze usecase gebruikt uitsluitend de actuele actieve roltoekenningen als input.
3. Scope
Deze usecase omvat wel:
- server-side bepalen of de gebruiker een actieve docentrol heeft
- negeren van inactieve of verlopen roltoekenningen
- toepassen van vaste prioriteit bij gecombineerde rollen
- bepalen welke docentnavigatie beschikbaar is
- veilig blokkeren van docentroutes zonder geldige docentcontext
- vaststellen dat persistent relevante contextkeuzes uit
UserSettingsmogen worden gelezen
Deze usecase omvat niet:
- wijzigen van niveaukerngegevens, categorieën of oefeningen
- toekennen of intrekken van niveau-autorisaties
- openen van volledige leerlinggeschiedenis of resultaatdetails
- starten van live meekijken of het tonen van live voortgang
- beheer van relaties of uitnodigingen tussen docent en leerling
- beheer van ouder-/voogdfunctionaliteit buiten de gecombineerde frontpageweergave
- uitwerken van systeemnotificaties; die lopen via de generieke notificatie-usecases
DRY-afbakening: deze usecase beschrijft alleen de docent-frontpage- of contextlaag. De bronwaarheid voor leerlingenbeheer, oefenaanbodbeheer, live meekijken, relaties, profielinstellingen en systeemnotificaties blijft bij de daarvoor bedoelde usecases en ontwerpbronnen.
4. Pre-condities
| ID | Voorwaarde |
|---|---|
| PRE-001 | De gebruiker heeft een geldige OefenHub-sessie. |
| PRE-002 | Actieve rollen kunnen uit UserRoles en Roles worden gelezen. |
| PRE-003 | De routeguard kan de gevraagde route classificeren als docentroute of gecombineerde rolroute. |
| PRE-004 | De applicatie kent de vaste prioriteitsvolgorde voor gecombineerde rolfrontpages. |
5. Post-condities
| ID | Resultaat |
|---|---|
| POST-001 | De docentcontext is server-side vastgesteld of veilig geweigerd. |
| POST-002 | Inactieve rollen zijn niet gebruikt voor zichtbaarheid of navigatie. |
| POST-003 | Er is geen aparte context- of sessietabel aangemaakt. |
| POST-004 | Bij gecombineerde rollen is de samenstelling volgens vaste prioriteit bepaald. |
| POST-005 | Ongeldige directe routes zijn niet geopend. |
6. Trigger
De usecase start wanneer OefenHub na login, refresh of directe navigatie moet bepalen of een docentcontext beschikbaar is.
7. Normale processtroom
| Stap | Actor | Scherm / component | Actie | Systeemrespons | Data / regel |
|---|---|---|---|---|---|
| 1 | OefenHub frontend | Routeguard | Vraagt contextbepaling voor een docentroute of frontpage. | Backend ontvangt route en server-side sessiecontext. | Geen vertrouwen op clientstate. |
| 2 | OefenHub backend | Accountcontext | Laadt het interne account. | Actieve gebruiker wordt gevalideerd. | Users.IsActive = true is vereist. |
| 3 | OefenHub backend | Rolcontext | Leest actieve roltoekenningen. | Alleen actieve UserRoles tellen mee. | Inactieve rollen worden genegeerd. |
| 4 | OefenHub backend | Contextresolver | Controleert of rol Docent beschikbaar is. | Docentcontext wordt beschikbaar of geweigerd. | Docentrol is verplicht voor docentroutes. |
| 5 | OefenHub backend | Prioriteitsregels | Controleert gecombineerde rollen. | Samenstelling van frontpagecontext wordt bepaald. | Beheerder > Docent > Ouder/voogd bij bredere combinaties. |
| 6 | OefenHub backend | UserSettings | Leest alleen persistent relevante voorkeuren. | Voorkeuren mogen presentatie beïnvloeden, geen autorisatie. | Geen nieuwe contextentiteit. |
| 7 | OefenHub backend | Navigatiemodel | Bepaalt zichtbare docentnavigatie. | Oefenaanbod, Leerlingen en Online kunnen beschikbaar zijn. | Routes blijven apart beschermd. |
| 8 | OefenHub frontend | Frontpage/navigatie | Rendert de toegestane context. | Gebruiker ziet docentcontext of veilige blokkade. | Geen domeinmutatie. |
8. Alternatieve en exceptionele processtromen
| ID | Vanaf stap | Situatie | Systeemgedrag | Popup / melding | Datamutatie |
|---|---|---|---|---|---|
| ALT-001 | 3 | Geen actieve docentrol | Docentroute wordt geblokkeerd. | Routeguard/toegangafhandeling | Geen |
| ALT-002 | 3 | Alleen inactieve docentrol gevonden | Rol wordt niet gebruikt; docentcontext is niet beschikbaar. | Routeguard/toegangafhandeling | Geen |
| ALT-003 | 5 | Gebruiker heeft Docent en Ouder/voogd | Gecombineerde frontpage wordt volgens vaste volgorde samengesteld. | Niet van toepassing | Geen |
| ALT-004 | 5 | Gebruiker heeft Beheerder en Docent | Beheerdercontext krijgt hogere prioriteit in gecombineerde frontpage. | Niet van toepassing | Geen |
| ALT-005 | 6 | Voorkeur ontbreekt of is ongeldig | Systeem gebruikt veilige default zonder autorisatie te wijzigen. | Niet van toepassing | Geen |
9. Business rules
| ID | Regel |
|---|---|
| BR-001 | De docent-frontpage is een overzichts- en oriëntatiepagina en geen beheer- of mutatiepagina. |
| BR-002 | Contextafhankelijke acties waarvoor eerst een leerling, niveau, categorie of oefening gekozen moet worden, starten niet als losse generieke frontpageactie. |
| BR-003 | Alle getoonde aantallen en samenvattingen worden server-side afgeleid uit bestaande brondata. |
| BR-004 | Clientstate, routeparameters of oude browsercontext mogen niet bepalen welke docentcontext actief is. |
| BR-005 | Systeemnotificaties blokkeren het laden van de frontpage niet en worden pas na normale weergave gecontroleerd. |
| BR-006 | De frontpage introduceert geen aparte frontpagecache als bron van waarheid. |
| BR-007 | Een gebruiker met de rol Leerling kan niet tegelijk docent zijn binnen dezelfde accountcontext. |
| BR-008 | Docent- en ouder-/voogdcontext mogen wel gecombineerd voorkomen en worden volgens vaste prioriteit samengesteld. |
| BR-009 | De specifieke flow UC-DOC-FP-002 mag alleen gegevens tonen of bepalen die binnen de actuele docent- of gecombineerde rolcontext vallen. |
| BR-010 | Lege staten mogen functioneel informatief zijn, maar mogen geen automatische domeinmutaties starten. |
| BR-011 | Vervolgacties vanaf de frontpage moeten opnieuw server-side worden gevalideerd op de doelroute. |
10. Datavalidatie
| Veld / object | Validatie |
|---|---|
| Sessiegebruiker | Moet server-side bekend, ingelogd en actief zijn. |
| Rolcontext | Moet worden afgeleid uit actieve UserRoles en Roles. |
| Docentcontext | Mag alleen actief zijn wanneer de gebruiker de actieve rol Docent bezit. |
| Clientstate | Mag alleen ondersteunend zijn en nooit als autorisatiebron gelden. |
| Samenvattingswaarden | Moeten een eenduidige definitie hebben van bronrecords, statusvoorwaarden en contextfilters. |
| Frontpageweergave | Mag geen gegevens tonen buiten de actuele docent- of gecombineerde rolcontext. |
| Docentfrontpageblok | Moet alleen informatie tonen die als compacte samenvatting is toegestaan. |
| Vervolgroute | Moet opnieuw via routeguard en autorisatielaag worden gecontroleerd. |
| Lege staat | Moet duidelijk zijn en mag geen gegevens uit andere contexten tonen. |
11. Datamutaties en events
Deze usecase bepaalt context en autoriseerbaarheid. Er worden geen rollen, voorkeuren of contextrecords aangemaakt of gewijzigd.
| Onderdeel | Gedrag |
|---|---|
| Accountcontext | Wordt gelezen uit het actieve interne OefenHub-account. |
| Rolcontext | Wordt afgeleid uit actieve UserRoles en Roles; inactieve roltoekenningen worden genegeerd. |
| Gecombineerde context | Wordt runtime bepaald op basis van de actieve rollen en vaste prioriteitsregels. |
| Voorkeuren | Kunnen presentatie beïnvloeden, maar wijzigen geen zichtbare gegevensset of autorisatie. |
| Domeinevents | Niet van toepassing; contextbepaling is autorisatie- en readmodelgedrag, geen persistente domeinmutatie. |
12. Geen datamutaties
| Entiteit | Reden |
|---|---|
Users | De frontpage- of contextflow wijzigt geen accountgegevens. |
UserRoles | Rollen worden gelezen maar niet toegekend of ingetrokken. |
Roles | Roldefinities worden gelezen maar niet gewijzigd. |
UserRelationships | Relaties worden hoogstens gelezen voor context of samenvatting. |
TeacherLevels | Niveaus worden gelezen of geteld, maar niet aangemaakt of gewijzigd. |
TeacherLevelCategories | Categorie-koppelingen worden gelezen of geteld, maar niet aangepast. |
Exercises | Oefeningen worden gelezen of geteld, maar niet geconfigureerd. |
TeacherStudentAuthorizations | Autorisaties worden gelezen of geteld, maar niet aangepast. |
SystemMessages | Deze usecase maakt geen systeemberichten aan. |
SystemNotifications | Systeemnotificaties worden niet door deze usecase gemuteerd. |
13. State diagram
Niet van toepassing als statusdiagram. De docentcontext is geen opgeslagen statusobject maar een server-side afgeleide requestcontext.
14. Decision flow
15. Data lifecycle diagram
16. Sequence diagrammen
16.1 Frontpage- of contextweergave
16.2 Vervolgroute vanaf frontpage
17. Popupverwijzingen
| PopupKey | Moment | Doel |
|---|---|---|
| Niet van toepassing | Gehele usecase | Deze frontpage- en contextafhandeling gebruikt routeguardgedrag, componentmeldingen, lege staten en bestaande generieke flows; er is geen domeinspecifieke popupregister-popup. |
18. Afleiding naar Functioneel Ontwerp / Technisch Ontwerp / Software Requirements Specification
| Doeldocument | Afleiding |
|---|---|
| Functioneel Ontwerp | Beschrijft dat docentcontext server-side wordt bepaald en dat clientstate geen rol- of frontpagecontext mag afdwingen. |
| Technisch Ontwerp | Technisch Ontwerp: technische rolflows, readmodels en tellers en frontendcompositie beschrijven de technische uitwerking. Leg de contextresolver vast als read-only autorisatielaag die actieve rollen, gecombineerde rollen en voorkeuren scheidt. |
| Software Requirements Specification | Beschrijft requirements voor actieve docentrol, negeren van inactieve roltoekenningen, veilige blokkade zonder docentcontext en vaste prioriteit bij gecombineerde rollen. |
| Database-informatie | Beschrijft dat rollen, roltoekenningen en gebruikersinstellingen voldoende informatie leveren voor contextbepaling zonder aparte contexttabel. |
| Ontwerpbronnen/registers | Verwerk business rules, autorisatiematrix en usecase-schermmatrix; command- en eventregisters hoeven voor deze contextcontrole niet te worden uitgebreid. |
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-DOC-FP-002-001 | SRS-AUTH-001 SRS-TCH-001 AC-AUTH-001 AC-TCH-001 | De docentcontext server-side bepalen uit actieve rollen |
REQ-UC-DOC-FP-002-002 | SRS-TCH-001 AC-TCH-001 | Inactieve roltoekenningen niet gebruiken voor de docentcontext |
REQ-UC-DOC-FP-002-003 | SRS-AUTH-001 SRS-TCH-001 AC-AUTH-001 AC-TCH-001 | Docentroutes blokkeren wanneer geen actieve docentcontext beschikbaar is |
REQ-UC-DOC-FP-002-004 | SRS-AUTH-003 SRS-TCH-001 AC-AUTH-003 AC-TCH-001 | Gecombineerde frontpagecontexten volgens vaste prioriteit samenstellen |
REQ-UC-DOC-FP-002-005 | SRS-TCH-001 AC-TCH-001 | De contextkeuze niet als aparte sessie- of contextentiteit opslaan |
REQ-UC-DOC-FP-002-006 | SRS-AUTH-001 SRS-ACC-003 SRS-RDM-008 SRS-TCH-001 AC-AUTH-001 AC-ACC-003 AC-RDM-008 AC-TCH-001 | Voorkeuren alleen toepassen op presentatiegedrag en niet op autorisatie |