UC-LLN-TOEG-006 — Privéniveau gebruiken via autorisatie
1. Kerngegevens
| Veld | Waarde |
|---|---|
| Usecase-ID | UC-LLN-TOEG-006 |
| Naam | Privéniveau gebruiken via autorisatie |
| Domein | Leerling / Oefenaanbod en toegang |
| Primaire actor | Leerling |
| Secundaire actor(en) | OefenHub frontend, OefenHub backend, niveaucontextresolver, autorisatielaag, database, routeguard |
| Rolcontext | Ingelogde leerling die een privéniveau gebruikt waarvoor een actieve docent-leerlingrelatie en actieve niveauautorisatie bestaan. |
| Betrokken schermen | Leerling-frontpage, niveaukeuze, oefenaanbod, categorie- en oefeningenlijsten, oefeningroute. |
| Gerelateerde usecases | UC-LLN-TOEG-001 — Beschikbare categorieën bekijken; UC-LLN-TOEG-002 — Beschikbare oefeningen bekijken; UC-LLN-TOEG-003 — Oefeningstoegang controleren bij openen; UC-LLN-TOEG-004 — Toegang vervalt door ingetrokken autorisatie; UC-GEN-PROF-003 — Verplicht niveau instellen |
| Primaire entiteiten | Users, UserSettings, TeacherLevels, TeacherStudentLevelAccess, UserRelationships |
| Secundaire entiteiten / events | TeacherLevelCategories, TeacherLevelCategoryExercises, Exercises, Categories |
| Gerelateerde popups | Niet van toepassing |
| Popupregister | Niet van toepassing |
| MoSCoW | Must |
2. Omschrijving
Deze usecase beschrijft hoe een leerling een privéniveau gebruikt. Een privéniveau is niet vrij kiesbaar
voor alle leerlingen. De leerling mag het niveau alleen gebruiken wanneer er een actieve docent-
leerlingrelatie bestaat en binnen die relatie een actieve TeacherStudentLevelAccess voor het
betreffende niveau is toegekend.
Het gebruiken van een privéniveau is dus geen relatieflow en geen autorisatiebeheerflow. De docent of beheerder heeft de toegang eerder toegekend in de daarvoor bedoelde processen. Deze usecase gebruikt die bestaande autorisatie als voorwaarde om de leerlingcontext, categorieën en oefeningen te tonen. Wanneer de autorisatie ontbreekt of vervallen is, wordt de context niet geladen.
Ook bij privéniveaus blijft de zichtbaarheid van categorieën en oefeningen afhankelijk van actieve onderliggende inhoud. Het feit dat de leerling toegang heeft tot het niveau betekent niet dat elke categorie of oefening binnen dat niveau zichtbaar of startbaar is.
3. Scope
Deze usecase omvat wel:
- controleren dat een privéniveau toegankelijk is via actieve autorisatie
- controleren van actieve docent-leerlingrelatie bij de autorisatie
- gebruiken van het privéniveau als actieve leerlingcontext
- tonen van actieve categorieën en oefeningen binnen dat niveau
- opslaan van selected level wanneer de context geldig is
- blokkeren wanneer autorisatie of relatie ontbreekt
- opnieuw controleren bij oefeningroute of oude clientstate
Deze usecase omvat niet:
- aanmaken van docent-leerlingrelaties
- uitnodigen of accepteren van docenten
- toekennen of intrekken van niveauautorisatie
- beheren van niveau-inhoud
- docent- of ouderinzage
- starten van exercise runs
- verplicht niveau instellen inhoudelijk uitwerken
- systeemberichten over toekenning of intrekking maken
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 gebruiker is ingelogd als leerling. |
| PRE-002 | Het beoogde niveau is privé en actief. |
| PRE-003 | Er bestaat een actieve docent-leerlingrelatie tussen de leerling en de docentcontext van het niveau. |
| PRE-004 | Er bestaat een actieve TeacherStudentLevelAccess voor deze leerling en dit niveau. |
| PRE-005 | De backend kan relatie en autorisatie server-side controleren. |
5. Post-condities
| ID | Resultaat |
|---|---|
| POST-001 | Het privéniveau is als actieve leerlingcontext gebruikt wanneer autorisatie geldig is. |
| POST-002 | De leerling ziet alleen actieve categorieën en oefeningen binnen dat geautoriseerde niveau. |
| POST-003 | Ontbrekende of vervallen autorisatie blokkeert niveaugebruik. |
| POST-004 | Er is geen nieuwe relatie of autorisatie aangemaakt door het gebruiken van het niveau. |
| POST-005 | Oefening openen binnen het privéniveau blijft opnieuw controleplichtig. |
6. Trigger
De usecase start wanneer een leerling een privéniveau kiest, wanneer een eerder geselecteerd privéniveau wordt geladen, of wanneer een route binnen een privéniveau wordt geopend.
7. Normale processtroom
| Stap | Actor | Scherm / component | Actie | Systeemrespons | Data / regel |
|---|---|---|---|---|---|
| 1 | Leerling | Niveaukeuze / frontpage | Kiest of gebruikt een privéniveau. | Frontend vraagt niveaucontext te activeren. | Geen client-side autorisatie. |
| 2 | Frontend | Niveaucomponent | Stuurt niveaucontext naar backend. | Backend gebruikt sessiecontext als bron. | UserId uit sessie. |
| 3 | Backend | Sessielaag | Controleert leerlingrol. | Alleen leerlingcontext gaat verder. | Rolcontrole. |
| 4 | Backend | Niveaudata | Controleert dat niveau bestaat, actief en privé is. | Niveau moet geldig zijn. | TeacherLevels. |
| 5 | Backend | Relatiecontrole | Controleert actieve docent-leerlingrelatie. | Zonder actieve relatie geen privéniveautoegang. | UserRelationships. |
| 6 | Backend | Autorisatiecontrole | Controleert actieve TeacherStudentLevelAccess. | Toegang tot niveau wordt toegestaan. | IsActive = true. |
| 7 | Backend | Gebruikersinstellingen | Slaat of gebruikt niveaucontext volgens profielregels. | Selected level blijft geldig zolang autorisatie actief is. | UserSettings.SelectedTeacherLevelId. |
| 8 | Backend | Oefenaanbod | Laadt actieve categorieën en oefeningen binnen het niveau. | Alleen actuele inhoud zichtbaar. | UC-LLN-TOEG-001/002. |
| 9 | Frontend | Leerlingomgeving | Toont privéniveaucontext en oefenaanbod. | Leerling kan verder naar oefeningen. | Oefening openen opnieuw controleren. |
8. Alternatieve en exceptionele processtromen
| ID | Vanaf stap | Situatie | Systeemgedrag | Popup / melding | Datamutatie |
|---|---|---|---|---|---|
| ALT-001 | 4 | Niveau is niet privé maar open. | Systeem handelt af via UC-LLN-TOEG-005. | Geen. | Geen. |
| ALT-002 | 4 | Niveau is inactief. | Context wordt geweigerd. | Geen popupregister-popup. | Geen. |
| ALT-003 | 5 | Docent-leerlingrelatie ontbreekt of is inactief. | Privéniveau wordt niet geladen. | Toegangafhandeling. | Geen. |
| ALT-004 | 6 | TeacherStudentLevelAccess ontbreekt. | Privéniveau wordt niet geladen. | Toegangafhandeling. | Geen. |
| ALT-005 | 6 | Autorisatie is ingetrokken. | Systeem volgt UC-LLN-TOEG-004. | Geen. | Geen. |
| ALT-006 | 7 | Selected level verwijst nog naar vervallen privéniveau. | Systeem gebruikt de context niet en leidt naar keuze of lege staat. | Geen. | Geen. |
| ALT-007 | 8 | Geen actieve categorieën of oefeningen. | Privéniveau is toegankelijk maar toont lege oefenaanbodstaat. | Leegstaatcomponent. | Geen. |
9. Business rules
| ID | Regel |
|---|---|
| BR-001 | Privéniveaugebruik vereist actieve docent-leerlingrelatie. |
| BR-002 | Privéniveaugebruik vereist actieve TeacherStudentLevelAccess. |
| BR-003 | Een leerling kan privéniveauautorisatie niet zelf aanmaken. |
| BR-004 | Een actieve niveauautorisatie geeft toegang tot het niveau, maar niet automatisch tot inactieve categorieën of oefeningen. |
| BR-005 | Selected level mag alleen naar een privéniveau verwijzen zolang de autorisatie actueel geldig is. |
| BR-006 | Collaboratorrechten op het niveau leveren geen leerlingtoegang op. |
| BR-007 | Bij beëindiging van relatie of autorisatie vervalt privéniveautoegang. |
| BR-008 | Oefening openen binnen het privéniveau blijft server-side controleplichtig. |
| BR-009 | Privéniveautoegang wijzigt geen ouder-/voogd- of docentinzage. |
| BR-010 | Deze usecase maakt geen systeembericht aan. |
10. Datavalidatie
| Veld / object | Validatie |
|---|---|
| Privéniveau | Moet actief bestaan en functioneel privé zijn. |
| Docent-leerlingrelatie | Moet actief zijn en passen bij de docentcontext van het niveau. |
| TeacherStudentLevelAccess | Moet actief zijn voor dezelfde leerling en hetzelfde niveau. |
| StudentUserId | Moet overeenkomen met de ingelogde leerling. |
| Selected level | Mag alleen worden opgeslagen wanneer autorisatie geldig is. |
| Categorieën/oefeningen | Worden na autorisatie nog apart actief gefilterd. |
11. Datamutaties en events
| Stap | Type | Entiteit / event | Mutatie |
|---|---|---|---|
| 4 | Read | TeacherLevels | Niveaugegevens en privéstatus worden gelezen. |
| 5 | Read | UserRelationships | Docent-leerlingrelatie wordt gecontroleerd. |
| 6 | Read | TeacherStudentLevelAccess | Niveauautorisatie wordt gecontroleerd. |
| 7 | Update | UserSettings | Selected level kan worden opgeslagen wanneer profielregels dit toestaan. |
| 8 | Read | TeacherLevelCategories, TeacherLevelCategoryExercises, Exercises | Actief oefenaanbod wordt bepaald. |
Deze usecase introduceert geen nieuw persistent domeinevent. Privéniveautoegang wordt afgeleid uit actuele relatie- en autorisatierecords.
12. Geen datamutaties
| Entiteit | Reden |
|---|---|
UserRelationships | Privéniveau gebruiken maakt geen relatie aan. |
TeacherStudentLevelAccess | Autorisatie is al toegekend; deze usecase wijzigt die niet. |
TeacherLevels | Leerling wijzigt het niveau niet. |
Exercises | Leerling wijzigt oefeningen niet. |
ExerciseRuns | Nog geen run aangemaakt. |
SystemMessages | Geen bericht aangemaakt of gelezen. |
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-006-001 | SRS-REL-001 SRS-CAT-006 SRS-LRN-009 SRS-TCH-003 AC-REL-001 AC-CAT-006 AC-LRN-009 AC-TCH-003 | Privéniveaugebruik alleen toestaan bij actieve docent-leerlingrelatie |
REQ-UC-LLN-TOEG-006-002 | SRS-AUTH-001 SRS-CAT-006 SRS-LRN-009 AC-AUTH-001 AC-CAT-006 AC-LRN-009 | Privéniveaugebruik alleen toestaan bij actieve niveauautorisatie |
REQ-UC-LLN-TOEG-006-003 | SRS-AUTH-001 SRS-REL-001 SRS-CAT-006 SRS-LRN-009 AC-AUTH-001 AC-REL-001 AC-CAT-006 AC-LRN-009 | Door privéniveaugebruik geen relatie of niveauautorisatie aanmaken |
REQ-UC-LLN-TOEG-006-004 | SRS-AUTH-001 SRS-AUTH-004 SRS-CAT-006 SRS-LRN-009 AC-AUTH-001 AC-AUTH-004 AC-CAT-006 AC-LRN-009 | Selected level ongeldig behandelen wanneer privéniveautoegang vervalt |
REQ-UC-LLN-TOEG-006-005 | SRS-RDM-001 SRS-RDM-005 SRS-CAT-006 SRS-LRN-009 AC-RDM-001 AC-RDM-005 AC-CAT-006 AC-LRN-009 | Actieve categorieën en oefeningen binnen een privéniveau apart filteren |
REQ-UC-LLN-TOEG-006-006 | SRS-AUTH-001 SRS-LRN-009 SRS-TCH-006 AC-AUTH-001 AC-LRN-009 AC-TCH-006 | Collaboratorrechten niet beschouwen als leerlingtoegang |
REQ-UC-LLN-TOEG-006-007 | SRS-AUTH-001 SRS-CAT-006 SRS-LRN-009 AC-AUTH-001 AC-CAT-006 AC-LRN-009 | Oude privéniveauroutes opnieuw server-side controleren |
REQ-UC-LLN-TOEG-006-008 | SRS-ACC-003 SRS-ACC-005 SRS-CAT-006 SRS-LRN-009 SRS-NFR-SEC-001 SRS-NFR-ACC-001 AC-ACC-003 AC-ACC-005 AC-CAT-006 AC-LRN-009 AC-NFR-SEC-001 AC-NFR-ACC-001 | Een toegankelijke maar lege privéniveaucontext veilig kunnen tonen |
REQ-UC-LLN-TOEG-006-009 | SRS-CAT-006 SRS-LRN-009 AC-CAT-006 AC-LRN-009 | Privéniveaugebruik onderscheiden van open niveaugebruik |
REQ-UC-LLN-TOEG-006-010 | SRS-AUTH-001 SRS-CAT-001 SRS-LRN-009 AC-AUTH-001 AC-CAT-001 AC-LRN-009 | Controleren dat de autorisatie bij dezelfde leerling en hetzelfde niveau hoort |
REQ-UC-LLN-TOEG-006-011 | SRS-AUTH-001 SRS-REL-003 SRS-REL-006 SRS-CAT-006 SRS-LRN-009 SRS-TCH-003 AC-AUTH-001 AC-REL-003 AC-REL-006 AC-CAT-006 AC-LRN-009 AC-TCH-003 | Beëindigde docent-leerlingrelaties laten doorwerken in privéniveautoegang |
REQ-UC-LLN-TOEG-006-012 | SRS-AUTH-001 SRS-CAT-006 SRS-LRN-009 AC-AUTH-001 AC-CAT-006 AC-LRN-009 | Privéniveauaanbod alleen tonen na actuele autorisatiecontrole |