Skip to main content

UC-LLN-TOEG-003 — Oefeningstoegang controleren bij openen

1. Kerngegevens

VeldWaarde
Usecase-IDUC-LLN-TOEG-003
NaamOefeningstoegang controleren bij openen
DomeinLeerling / Oefenaanbod en toegang
Primaire actorLeerling
Secundaire actor(en)OefenHub frontend, OefenHub backend, routeguard, autorisatielaag, database, oefeningstartcomponent
RolcontextIngelogde leerling die via lijst, frontpageblok, directe URL of oude browserstate een oefening probeert te openen.
Betrokken schermenOefeningroute, oefening-startpagina, routeguard, fout-/niet-beschikbaarafhandeling, terugroute naar oefenaanbod.
Gerelateerde usecasesUC-LLN-TOEG-001 — Beschikbare categorieën bekijken; UC-LLN-TOEG-002 — Beschikbare oefeningen bekijken; UC-LLN-TOEG-004 — Toegang vervalt door ingetrokken autorisatie; UC-LLN-OEF-001 — Oefening-startpagina openen; UC-LLN-OEF-003 — Nieuwe oefening starten
Primaire entiteitenUsers, UserSettings, TeacherLevels, TeacherLevelCategories, TeacherLevelCategoryExercises, Exercises, TeacherStudentLevelAccess, UserRelationships
Secundaire entiteiten / eventsExerciseModules, ExerciseRuns
Gerelateerde popupsNiet van toepassing
PopupregisterNiet van toepassing
MoSCoWMust

2. Omschrijving

Deze usecase beschrijft de verplichte server-side toegangscontrole wanneer een leerling een oefening probeert te openen. De route kan ontstaan vanuit een actuele oefeningenlijst, een frontpageblok, een directe link, browsergeschiedenis, een systeembericht of oude clientstate. Geen van die routes is op zichzelf autorisatiebewijs.

De backend controleert opnieuw of de gebruiker leerling is, of de actieve niveaucontext geldig is, of de categorie en oefening binnen die context liggen en of de oefening op dat moment startbaar is. Pas na succesvolle controle mag de oefening-startpagina of de vervolgflow voor hervatten/starten worden getoond. Als één van de controles faalt, krijgt de leerling geen inhoudelijke oefenconfiguratie of vraagdata.

Deze usecase maakt zelf nog geen nieuwe run aan. Zij is de poort tussen zichtbaarheid en oefenuitvoering. De oefeningstartpagina, hervatten en nieuwe run genereren worden in de oefenflows uitgewerkt.

3. Scope

Deze usecase omvat wel:

  • server-side valideren van oefeningroute en leerlingcontext
  • blokkeren van directe URL-toegang zonder geldige autorisatie
  • controleren van actief niveau, categorie, oefenkoppeling en oefening
  • controleren of de oefening binnen open of geautoriseerde context valt
  • voorkomen dat oude clientcache een oefening startbaar maakt
  • veilig terugleiden naar oefenaanbod of bestaande contextflow bij blokkade
  • geen vraagdata of modulepayload vrijgeven bij geweigerde toegang

Deze usecase omvat niet:

  • opbouwen van de oefening-startpagina zelf
  • genereren van nieuwe exercise runs
  • hervatten van bestaande exercise runs
  • beantwoorden van vragen
  • resultaatweergave
  • docentbeheer van autorisaties
  • maken van systeemberichten over ingetrokken toegang
  • wijzigen van selected level

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

IDVoorwaarde
PRE-001De leerling probeert een oefeningroute of oefeningstartpunt te openen.
PRE-002De backend kan de routecontext koppelen aan niveau, categorie en oefening.
PRE-003De ingelogde gebruiker kan server-side worden geïdentificeerd.
PRE-004De actuele autorisatiestatus is beschikbaar.
PRE-005Routeguard is actief voor beveiligde leerlingroutes.

5. Post-condities

IDResultaat
POST-001Bij geldige toegang mag de oefeningstartcontext worden geladen.
POST-002Bij geweigerde toegang wordt geen oefeninhoud, vraagdata of modulepayload vrijgegeven.
POST-003Er is geen nieuwe exercise run aangemaakt door alleen toegang te controleren.
POST-004Oude of gemanipuleerde routecontext is niet als autorisatiebron gebruikt.
POST-005De leerling krijgt een veilige terugvalroute naar beschikbaar oefenaanbod of account-/niveaucontext.

6. Trigger

De usecase start wanneer een leerling een oefening probeert te openen via klik, directe route, frontpageblok, browsergeschiedenis of een verouderde clientstate.

7. Normale processtroom

StapActorScherm / componentActieSysteemresponsData / regel
1LeerlingOefeningenlijst / directe routeOpent een oefening.Frontend navigeert naar de oefeningroute.Route bevat context, geen autorisatie.
2FrontendRouteguardVraagt backend om toegang tot oefeningcontext.Backend start volledige controle.Geen client-only besluit.
3BackendSessielaagControleert ingelogde gebruiker en leerlingrol.Alleen leerlingcontext gaat verder.Server-side sessie.
4BackendNiveaucontextValideert geselecteerd of routegebonden niveau.Niveau moet bestaan, actief en toegankelijk zijn.Open niveau of autorisatie.
5BackendCategoriecontextControleert dat categorie actief bij het niveau hoort.Ongeldige categorie wordt geblokkeerd.TeacherLevelCategories.
6BackendOefenkoppelingControleert dat oefening actief in deze categoriecontext is gekoppeld.Alleen actieve koppeling gaat verder.TeacherLevelCategoryExercises.
7BackendOefeningControleert dat de oefening actief en regulier bruikbaar is.Oefeningen in onderhoud worden geblokkeerd.Exercises.IsActive.
8BackendModulecontextControleert of de technische module beschikbaar is voor uitvoering.Onbruikbare module blokkeert startcontext.ExerciseModules.
9BackendOefeningstartcontextBouwt minimale toegestane startcontext op.Frontend mag startpagina laden.Geen vraagpayload voor start.
10FrontendOefening-startpaginaToont startcontext.Vervolg naar oefenflow.Nieuwe run ontstaat pas bij startactie.

8. Alternatieve en exceptionele processtromen

IDVanaf stapSituatieSysteemgedragPopup / meldingDatamutatie
ALT-0013Gebruiker is niet ingelogd.Routeguard start loginflow of publieke context.Geen popupregister-popup.Geen.
ALT-0023Gebruiker is geen leerling.Routeguard blokkeert leerlingoefeningroute.Generieke toegangafhandeling.Geen.
ALT-0034Niveau is niet meer toegankelijk.Route wordt geblokkeerd en gebruiker wordt naar toegankelijke context geleid.Geen domeinpopup.Geen.
ALT-0045Categorie is niet gekoppeld aan het niveau.Backend weigert oefeningcontext.Niet-beschikbaarafhandeling.Geen.
ALT-0056Oefening is niet actief gekoppeld in deze categorie.Backend weigert oefeningcontext.Niet-beschikbaarafhandeling.Geen.
ALT-0067Oefening staat in onderhoud.Backend weigert leerlingstart.Niet-beschikbaarafhandeling.Geen.
ALT-0078Technische module is niet beschikbaar.Backend weigert start en toont veilige terugval.Niet-beschikbaarafhandeling.Eventuele technische logging.
ALT-0089Routecontext is inconsistent of gemanipuleerd.Backend behandelt de route als ongeldig en geeft geen data vrij.Geen.Eventuele security logging.
ALT-00910Toegang verandert tussen lijst en openen.Backend gebruikt actuele status en blokkeert indien nodig.Geen.Geen.

9. Business rules

IDRegel
BR-001Elke poging om een oefening te openen moet server-side worden gecontroleerd.
BR-002Een zichtbare link of oude route is geen bewijs van toegang.
BR-003Oefeningstoegang vereist een geldige leerlingrol.
BR-004Oefeningstoegang vereist een actieve en toegankelijke niveaucontext.
BR-005Oefeningstoegang vereist een actieve categorie- en oefenkoppeling binnen dezelfde context.
BR-006Een oefening in onderhoud mag niet door een leerling worden gestart.
BR-007Bij geweigerde toegang mag geen moduleconfiguratie of vraagdata worden vrijgegeven.
BR-008Deze usecase maakt geen nieuwe run aan.
BR-009Controle moet plaatsvinden vlak voor het laden van de startcontext.
BR-010Bij race conditions wint de actuele backendstatus boven de eerder getoonde lijst.

10. Datavalidatie

Veld / objectValidatie
RoutecontextMoet herleidbaar zijn tot één niveau-categorie-oefeningcontext.
UserIdKomt uit server-side sessie.
RolMoet Leerling zijn.
NiveauMoet actief en toegankelijk zijn.
CategorieMoet actief aan het niveau gekoppeld zijn.
OefenkoppelingMoet actief zijn.
OefeningMoet actief zijn en niet in onderhoud staan.
ModuleMoet beschikbaar zijn voor leerlinguitvoering.

11. Datamutaties en events

StapTypeEntiteit / eventMutatie
3ReadUsers / sessiecontextGebruiker en leerlingrol worden bepaald.
4ReadTeacherLevels, TeacherStudentLevelAccess, UserRelationshipsNiveaucontext en toegang worden gecontroleerd.
5ReadTeacherLevelCategoriesCategoriecontext wordt gecontroleerd.
6ReadTeacherLevelCategoryExercisesOefenkoppeling wordt gecontroleerd.
7ReadExercisesOefeningstatus wordt gecontroleerd.
8ReadExerciseModulesTechnische bruikbaarheid wordt gecontroleerd.

Deze usecase kent geen persistente domeinevents. Securitylogging kan technisch plaatsvinden, maar is geen functionele eventmutatie binnen deze usecase.

12. Geen datamutaties

EntiteitReden
ExerciseRunsRun wordt pas aangemaakt bij start nieuwe oefening.
UserSettingsToegangscontrole wijzigt geen geselecteerd niveau.
TeacherStudentLevelAccessControle kent geen autorisatie toe.
SystemMessagesBlokkade maakt geen systeembericht.
ExercisesOefening wordt niet gewijzigd.
ExerciseHistoryGeen docent- of beheerwijziging.

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

PopupKeyMomentDoel
Niet van toepassingNiet van toepassingDeze usecase gebruikt routeguard-, leegstaat- of componentgedrag en geen popupregister-popup.

18. Afleiding naar Functioneel Ontwerp / Technisch Ontwerp / Software Requirements Specification

DoeldocumentAfleiding
Functioneel OntwerpFunctioneel Ontwerp beschrijft zichtbaar oefenaanbod, niveaucontext, categorie-/oefeningtoegang en veilige blokkades.
Technisch OntwerpTechnisch 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 SpecificationSoftware Requirements Specification bevat centrale eisen en acceptatiecriteria voor aanbodfiltering, server-side autorisatie, blokkades en geen ongewenste datamutaties.
Database-informatieDatabase-informatie blijft bron voor catalogus-, autorisatie- en soft-linkrelaties waarmee zichtbaar aanbod server-side wordt bepaald.
OntwerpbronnenOntwerpbronnen 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-afleidingDektUsecasecontext
REQ-UC-LLN-TOEG-003-001SRS-AUTH-001
SRS-LRN-009
AC-AUTH-001
AC-LRN-009
Iedere oefeningroute server-side controleren voordat oefencontext wordt geladen
REQ-UC-LLN-TOEG-003-002SRS-AUTH-001
SRS-LRN-009
SRS-CNT-004
AC-AUTH-001
AC-LRN-009
AC-CNT-004
Directe URL-toegang blokkeren wanneer de leerling geen actuele toegang heeft
REQ-UC-LLN-TOEG-003-003SRS-AUTH-001
SRS-LRN-009
SRS-MOD-003
AC-AUTH-001
AC-LRN-009
AC-MOD-003
Bij geweigerde toegang geen modulepayload of vraagdata vrijgeven
REQ-UC-LLN-TOEG-003-004SRS-LRN-009
AC-LRN-009
Actuele backendstatus boven oude frontendcache laten gaan
REQ-UC-LLN-TOEG-003-005SRS-AUTH-001
SRS-LRN-009
AC-AUTH-001
AC-LRN-009
Oefeningen in onderhoud blokkeren voor leerlingen
REQ-UC-LLN-TOEG-003-006SRS-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
Controleren dat niveau, categorie en oefening in dezelfde toegankelijke context liggen
REQ-UC-LLN-TOEG-003-007SRS-LRN-009
AC-LRN-009
Door openen van een oefening nog geen nieuwe exercise run aanmaken
REQ-UC-LLN-TOEG-003-008SRS-AUTH-001
SRS-LRN-009
SRS-NFR-SEC-001
AC-AUTH-001
AC-LRN-009
AC-NFR-SEC-001
Een veilige terugvalroute bieden bij geweigerde oefeningtoegang
REQ-UC-LLN-TOEG-003-009SRS-AUTH-001
SRS-LRN-001
AC-AUTH-001
AC-LRN-001
Toegang vlak voor het laden van de startcontext controleren
REQ-UC-LLN-TOEG-003-010SRS-CAT-001
SRS-LRN-009
AC-CAT-001
AC-LRN-009
Routecontextconsistentie tussen niveau, categorie en oefening afdwingen
REQ-UC-LLN-TOEG-003-011SRS-RDM-001
SRS-RDM-009
SRS-LRN-009
SRS-NFR-SEC-001
AC-RDM-001
AC-RDM-009
AC-LRN-009
AC-NFR-SEC-001
Race conditions tussen lijstweergave en openen veilig afhandelen
REQ-UC-LLN-TOEG-003-012SRS-LRN-009
SRS-MOD-003
AC-LRN-009
AC-MOD-003
Een onbruikbare technische module als blokkade behandelen
REQ-UC-LLN-TOEG-003-013SRS-LRN-009
AC-LRN-009
Securityrelevante inconsistenties technisch kunnen loggen
REQ-UC-LLN-TOEG-003-014SRS-AUTH-001
SRS-LRN-010
SRS-NFR-AUD-001
AC-AUTH-001
AC-LRN-010
AC-NFR-AUD-001
Oude browsergeschiedenis niet als toegangsbewijs accepteren