UC-LLN-TOEG-004 — Toegang vervalt door ingetrokken autorisatie
1. Kerngegevens
| Veld | Waarde |
|---|---|
| Usecase-ID | UC-LLN-TOEG-004 |
| Naam | Toegang vervalt door ingetrokken autorisatie |
| Domein | Leerling / Oefenaanbod en toegang |
| Primaire actor | Leerling |
| Secundaire actor(en) | OefenHub frontend, OefenHub backend, autorisatielaag, database, routeguard, berichtencomponent |
| Rolcontext | Leerling waarvan een eerder toegankelijke niveaucontext, categorie of oefening niet meer geldig is door ingetrokken autorisatie, beëindigde relatie of gewijzigde contentstatus. |
| Betrokken schermen | Leerling-frontpage, oefenaanbod, oefeningroute, profielniveaukeuze, geschiedenisroute, berichtenoverzicht als aparte generieke context. |
| Gerelateerde usecases | UC-LLN-TOEG-003 — Oefeningstoegang controleren bij openen; UC-LLN-TOEG-006 — Privéniveau gebruiken via autorisatie; UC-LLN-OEF-002 — Verder gaan met niet-afgeronde oefening; UC-LLN-HIS-004 — Geschiedenis alles bekijken; UC-GEN-MSG-003 — Bericht openen |
| Primaire entiteiten | Users, UserSettings, TeacherStudentLevelAccess, UserRelationships, TeacherLevels, ExerciseRuns |
| Secundaire entiteiten / events | TeacherLevelCategories, TeacherLevelCategoryExercises, Exercises, SystemMessages |
| Gerelateerde popups | Niet van toepassing |
| Popupregister | Niet van toepassing |
| MoSCoW | Must |
2. Omschrijving
Deze usecase beschrijft de leerlingzijde wanneer eerder beschikbare toegang tot een niveau of oefening vervalt. De intrekking zelf gebeurt in docent-, beheerder- of relatieflows en wordt hier niet opnieuw uitgevoerd. Deze usecase beschrijft wat de leerling daarna wel of niet meer mag zien, openen, starten of hervatten.
Wanneer toegang tot een privéniveau wordt ingetrokken, mag de leerling geen nieuwe oefeningen binnen dat
niveau starten en mag een oude link of oude frontpageweergave de toegang niet herstellen. Bestaande
afgeronde geschiedenis blijft echter historisch beschikbaar volgens de geschiedenisregels, omdat
ExerciseRuns hun niveaucontext bewaren en geschiedenis niet afhankelijk mag zijn van actuele
autorisatie voor nieuwe startacties.
Niet-afgeronde runs binnen een vervallen niveaucontext worden niet automatisch afgerond en niet als resultaat zichtbaar gemaakt. Of een niet-afgeronde run later nog hervatbaar is, wordt opnieuw bepaald door actuele oefeningtoegang. Deze usecase voorkomt daarmee dat intrekking van autorisatie stilzwijgend tot dataverlies, nieuwe autorisaties of foutieve resultaten leidt.
3. Scope
Deze usecase omvat wel:
- detecteren dat een geselecteerd niveau niet langer toegankelijk is
- blokkeren van categorieën en oefeningen binnen vervallen toegang
- voorkomen dat oude links of clientcache toegang herstellen
- afhandelen van niet-hervatbare niet-afgeronde runs na intrekking
- behouden van afgeronde geschiedenis waar dat volgens geschiedenisregels is toegestaan
- ongeldig maken of negeren van een niet langer toegankelijke selected-level-context
- terugleiden naar profielniveaukeuze of beschikbare oefencontext
- verwijzen naar systeembericht wanneer de leerling geïnformeerd is via het berichtendomein
Deze usecase omvat niet:
- intrekken van autorisatie door docent of beheerder
- beëindigen van docent-leerlingrelatie
- aanmaken van systeemberichten over intrekking
- wijzigen van historie of afgeronde resultaten
- verwijderen van oefendata
- automatisch kiezen van een nieuwe privéniveauautorisatie
- relatiebeheer of profielbeheer inhoudelijk uitwerken
- herberekenen van statistieken
DRY-afbakening voor deze usecase: beheer van niveaus, categorieën, oefeningen, relaties en autorisaties blijft bij de daarvoor bedoelde docent-, beheerder-, profiel- en relatieusecases. Deze usecase gebruikt de uitkomst daarvan als toegangsvoorwaarde en maakt die processen niet opnieuw bronhoudend.
4. Pre-condities
| ID | Voorwaarde |
|---|---|
| PRE-001 | De leerling had eerder toegang tot een niveau, categorie of oefening. |
| PRE-002 | De actuele toegang is gewijzigd door een externe flow, zoals autorisatie-intrekking of relatiebeëindiging. |
| PRE-003 | De backend kan actuele toegang opnieuw bepalen. |
| PRE-004 | Afgeronde exercise runs bewaren hun historische niveaucontext. |
| PRE-005 | Routeguard controleert oude routes opnieuw. |
5. Post-condities
| ID | Resultaat |
|---|---|
| POST-001 | De leerling kan geen nieuwe oefeningen starten binnen vervallen toegang. |
| POST-002 | Categorieën en oefeningen uit de vervallen context verdwijnen uit actueel oefenaanbod. |
| POST-003 | Een niet langer geldige selected-level-context wordt niet meer als actief gebruikt. |
| POST-004 | Afgeronde geschiedenis blijft raadpleegbaar via geschiedenisregels waar toegestaan. |
| POST-005 | Niet-afgeronde runs worden niet automatisch afgerond of verwijderd. |
| POST-006 | Er wordt geen nieuwe autorisatie of relatie aangemaakt. |
6. Trigger
De usecase start wanneer de leerling na een toegangsintrekking de frontpage, oefenaanbod, een oefeningroute of een eerder geselecteerd niveau opnieuw gebruikt.
7. Normale processtroom
| Stap | Actor | Scherm / component | Actie | Systeemrespons | Data / regel |
|---|---|---|---|---|---|
| 1 | Leerling | Frontpage / oefeningroute | Opent een eerder beschikbare context. | Frontend vraagt actuele context op. | Oude clientstate is niet leidend. |
| 2 | Backend | Sessielaag | Controleert leerlingrol. | Leerlingcontext geldig. | Server-side sessie. |
| 3 | Backend | Niveaucontext | Leest geselecteerd niveau of routecontext. | Systeem controleert actuele toegang. | UserSettings.SelectedTeacherLevelId of routecontext. |
| 4 | Backend | Autorisatie | Stelt vast dat toegang is vervallen. | Niveau wordt niet als actief gebruikt. | TeacherStudentLevelAccess.IsActive = false of relatie niet actief. |
| 5 | Backend | Contextresolver | Zoekt of er andere toegankelijke niveaus zijn. | Systeem kiest geen willekeurige stille vervanging wanneer bewuste keuze nodig is. | Contextkeuze blijft gecontroleerd. |
| 6 | Frontend | Oefenaanbod | Verwijdert vervallen categorieën en oefeningen uit weergave. | Leerling ziet alleen actuele toegang. | Geen datamutatie. |
| 7 | Routeguard | Oefeningroute | Blokkeert oude oefeningroutes binnen vervallen context. | Geen oefenpayload wordt geladen. | UC-LLN-TOEG-003. |
| 8 | Backend | Geschiedeniscontext | Laat afgeronde historie beschikbaar waar geschiedenisregels dat toestaan. | Historie wordt niet gewist. | ExerciseRuns.LevelId historisch. |
| 9 | Frontend | Vervolgroute | Leidt naar beschikbare niveaukeuze, oefenaanbod of geschiedenis. | Leerling kan verder binnen actuele rechten. | Geen automatische autorisatie. |
8. Alternatieve en exceptionele processtromen
| ID | Vanaf stap | Situatie | Systeemgedrag | Popup / melding | Datamutatie |
|---|---|---|---|---|---|
| ALT-001 | 3 | Selected level is ingetrokken maar er is één ander toegankelijk niveau. | Systeem mag de gebruiker gericht naar beschikbare context leiden, maar moet geen verborgen autorisatie aanmaken. | Componentgedrag. | Eventueel UserSettings alleen via niveaukeuzeflow. |
| ALT-002 | 3 | Geen enkel niveau is nog toegankelijk. | Leerling krijgt bestaande verplicht-niveau/geen-toegang-context zonder oefenaanbod. | Geen popupregister-popup. | Geen. |
| ALT-003 | 4 | Docent-leerlingrelatie is beëindigd. | Alle aan die relatie gekoppelde niveaucontexten zijn niet langer startbaar. | Geen. | Geen nieuwe mutatie. |
| ALT-004 | 7 | Leerling probeert niet-afgeronde run te hervatten. | Hervatten wordt geblokkeerd wanneer actuele oefeningtoegang ontbreekt. | Niet-beschikbaarafhandeling. | Run blijft niet-afgerond. |
| ALT-005 | 8 | Leerling opent afgeronde geschiedenisregel. | Geschiedenis mag zichtbaar blijven volgens historieusecase, ook als nieuwe toegang vervallen is. | Geen. | Geen. |
| ALT-006 | 9 | Systeembericht over intrekking bestaat. | Bericht kan via generieke berichtenflow gelezen worden; deze usecase maakt of verwerkt het bericht niet. | Niet van toepassing. | Geen. |
| ALT-007 | 1 | Frontend toont oude categorie door cache. | Backendresponse corrigeert de lijst en routeguard blokkeert openen. | Geen. | Geen. |
9. Business rules
| ID | Regel |
|---|---|
| BR-001 | Ingetrokken toegang blokkeert nieuwe oefenstart binnen die niveaucontext. |
| BR-002 | Ingetrokken toegang herstelt niet automatisch door browsercache of oude URL. |
| BR-003 | Afgeronde geschiedenis blijft historisch beschikbaar waar de geschiedenisusecases dat toestaan. |
| BR-004 | Niet-afgeronde runs worden door intrekking niet als afgerond gemarkeerd. |
| BR-005 | De leerlingflow maakt geen nieuwe TeacherStudentLevelAccess aan. |
| BR-006 | Een vervallen selected level mag niet als actuele context blijven gelden. |
| BR-007 | Een systeembericht over intrekking hoort bij het berichtendomein en is niet de autorisatiebron. |
| BR-008 | Wanneer geen toegankelijke niveaus resteren, toont OefenHub geen oefenaanbod. |
| BR-009 | Historische resultaten worden niet verwijderd door autorisatie-intrekking. |
| BR-010 | Server-side controle bepaalt of hervatten nog is toegestaan. |
10. Datavalidatie
| Veld / object | Validatie |
|---|---|
| Selected level | Moet nog actief en toegankelijk zijn; anders ongeldig. |
| TeacherStudentLevelAccess | Moet actief zijn voor privéniveaucontext. |
| UserRelationship | Docent-leerlingrelatie moet actief zijn voor privéniveautoegang. |
| Open niveau | Kan als alternatief alleen als de open-niveauregels gelden. |
| Niet-afgeronde run | Mag alleen hervat worden wanneer actuele oefeningtoegang nog geldig is. |
| Afgeronde run | Geschiedeniszichtbaarheid volgt geschiedenisregels, niet nieuwe-startautorisatie. |
| Systeembericht | Is informatief en geen bewijs van toegang. |
11. Datamutaties en events
| Stap | Type | Entiteit / event | Mutatie |
|---|---|---|---|
| 1 | Read | UserSettings | Eerder geselecteerde niveaucontext wordt gelezen. |
| 3 | Read | TeacherStudentLevelAccess, UserRelationships | Actuele toegang wordt gecontroleerd. |
| 6 | Read | TeacherLevelCategories, TeacherLevelCategoryExercises, Exercises | Actueel aanbod wordt opnieuw opgebouwd. |
| 8 | Read | ExerciseRuns | Afgeronde historie kan worden gelezen volgens geschiedenisregels. |
Deze usecase voert de intrekking niet uit. De autorisatie- of relatie-intrekking is al vastgelegd in de docent-, beheer- of relatieflow die de toegang heeft beëindigd.
12. Geen datamutaties
| Entiteit | Reden |
|---|---|
TeacherStudentLevelAccess | Intrekking is al gebeurd in docent- of beheerflow. |
UserRelationships | Relatiebeëindiging wordt niet door deze usecase uitgevoerd. |
SystemMessages | Systeemberichten worden niet in deze usecase aangemaakt. |
ExerciseRuns | Afgeronde en niet-afgeronde runs worden niet verwijderd of afgerond door deze afhandeling. |
UserSettings | Deze usecase mag een ongeldige context negeren; wijziging van niveaukeuze hoort bij niveaukeuzeflow. |
13. State diagram
Niet van toepassing. Deze usecase raakt geen persistent statusobject met een eigen lifecycle. Toegang en zichtbaarheid worden afgeleid uit actuele niveaucontext, autorisaties, actieve relaties en contentstatussen.
14. Decision flow
15. Data lifecycle diagram
16. Sequence diagrammen
17. Popupverwijzingen
| PopupKey | Moment | Doel |
|---|---|---|
| Niet van toepassing | Niet van toepassing | Deze usecase gebruikt routeguard-, leegstaat- of componentgedrag en geen popupregister-popup. |
18. Afleiding naar Functioneel Ontwerp / Technisch Ontwerp / Software Requirements Specification
| Doeldocument | Afleiding |
|---|---|
| Functioneel Ontwerp | Functioneel Ontwerp beschrijft zichtbaar oefenaanbod, niveaucontext, categorie-/oefeningtoegang en veilige blokkades. |
| Technisch Ontwerp | Technisch Ontwerp: autorisatie en contextcontrole, oefencatalogus, readmodels en frontend-routing beschrijft de technische afbakening, server-side brondata, autorisatie en UI-compositie voor deze usecase. |
| Software Requirements Specification | Software Requirements Specification bevat centrale eisen en acceptatiecriteria voor aanbodfiltering, server-side autorisatie, blokkades en geen ongewenste datamutaties. |
| Database-informatie | Database-informatie blijft bron voor catalogus-, autorisatie- en soft-linkrelaties waarmee zichtbaar aanbod server-side wordt bepaald. |
| Ontwerpbronnen | Ontwerpbronnen bevatten aanvullende businessregels voor oefenaanbod, niveaus, categorieën en autorisatiegrenzen. |
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-LLN-TOEG-004-001 | SRS-AUTH-001 SRS-CAT-001 SRS-LRN-009 AC-AUTH-001 AC-CAT-001 AC-LRN-009 | Vervallen niveauautorisatie detecteren wanneer een leerling een oude context gebruikt |
REQ-UC-LLN-TOEG-004-002 | SRS-AUTH-001 SRS-LRN-001 AC-AUTH-001 AC-LRN-001 | Nieuw starten binnen vervallen toegang blokkeren |
REQ-UC-LLN-TOEG-004-003 | SRS-AUTH-001 SRS-CAT-001 SRS-LRN-009 AC-AUTH-001 AC-CAT-001 AC-LRN-009 | Categorieën en oefeningen uit vervallen toegang niet langer in actueel oefenaanbod tonen |
REQ-UC-LLN-TOEG-004-004 | SRS-AUTH-001 SRS-LRN-006 AC-AUTH-001 AC-LRN-006 | Niet-afgeronde runs niet automatisch afronden bij autorisatie-intrekking |
REQ-UC-LLN-TOEG-004-005 | SRS-LRN-010 SRS-NFR-AUD-001 AC-LRN-010 AC-NFR-AUD-001 | Afgeronde geschiedenis beschikbaar houden volgens de geschiedenisregels |
REQ-UC-LLN-TOEG-004-006 | SRS-AUTH-001 SRS-LRN-009 AC-AUTH-001 AC-LRN-009 | Geen nieuwe autorisatie aanmaken om een vervallen context te herstellen |
REQ-UC-LLN-TOEG-004-007 | SRS-AUTH-004 SRS-CAT-001 SRS-LRN-009 AC-AUTH-004 AC-CAT-001 AC-LRN-009 | Een ongeldig geselecteerd niveau niet als actuele context blijven gebruiken |
REQ-UC-LLN-TOEG-004-008 | SRS-AUTH-001 SRS-LRN-009 AC-AUTH-001 AC-LRN-009 | Oude routes en clientcache opnieuw server-side controleren |
REQ-UC-LLN-TOEG-004-009 | SRS-AUTH-001 SRS-LRN-009 AC-AUTH-001 AC-LRN-009 | Vervallen toegang niet herstellen via automatische fallbackautorisatie |
REQ-UC-LLN-TOEG-004-010 | SRS-AUTH-001 SRS-LRN-006 AC-AUTH-001 AC-LRN-006 | Niet-afgeronde runs binnen vervallen toegang niet als resultaat tonen |
REQ-UC-LLN-TOEG-004-011 | SRS-AUTH-001 SRS-MSG-001 SRS-LRN-009 AC-AUTH-001 AC-MSG-001 AC-LRN-009 | Systeemberichten over intrekking behandelen als communicatie en niet als autorisatiebron |
REQ-UC-LLN-TOEG-004-012 | SRS-ACC-003 SRS-ACC-005 SRS-CAT-001 SRS-LRN-009 SRS-NFR-ACC-001 AC-ACC-003 AC-ACC-005 AC-CAT-001 AC-LRN-009 AC-NFR-ACC-001 | Andere toegankelijke niveaus opnieuw bepalen zonder de vervallen context vrij te geven |