Skip to main content

Oefenaanbod en toegang

Deze map bevat de leerlingusecases voor het bekijken en gebruiken van het oefenaanbod binnen OefenHub. Het subdomein beschrijft welke niveaus, categorieën en oefeningen een leerling op een bepaald moment mag zien en openen. De usecases zijn procesgericht: zij beschrijven server-side autorisatie, niveaucontext, zichtbaarheid, blokkades en vervolgcontext, niet de exacte UI-opmaak van de schermen.

Oefenaanbod en toegang vormt de poort vóór het daadwerkelijk oefenen. Een leerling kan pas een oefening starten wanneer de actuele niveaucontext geldig is, de categorie binnen dat niveau beschikbaar is en de oefening zelf actief en startbaar is. Frontend-zichtbaarheid is daarbij nooit de bron van autorisatie. Elke route naar categorieën of oefeningen wordt opnieuw server-side gecontroleerd.

Usecases

UsecaseOmschrijving
UC-LLN-TOEG-001 — Beschikbare categorieën bekijkenBepaalt en toont de categorieën die de leerling binnen de actuele niveaucontext mag gebruiken.
UC-LLN-TOEG-002 — Beschikbare oefeningen bekijkenBepaalt en toont de actieve oefeningen binnen een gekozen categorie en toegankelijke niveaucontext.
UC-LLN-TOEG-003 — Oefeningstoegang controleren bij openenControleert server-side of een leerling een oefeningroute of oefeningstartpunt mag openen.
UC-LLN-TOEG-004 — Toegang vervalt door ingetrokken autorisatieBeschrijft de leerlingzijde wanneer eerder beschikbare niveau- of oefeningtoegang niet meer geldig is.
UC-LLN-TOEG-005 — Open niveau gebruikenBeschrijft hoe een leerling een actief open niveau als niveaucontext gebruikt zonder relatie- of autorisatierecord aan te maken.
UC-LLN-TOEG-006 — Privéniveau gebruiken via autorisatieBeschrijft hoe een leerling een privéniveau gebruikt op basis van actieve docent-leerlingrelatie en niveauautorisatie.

Relevante schermdocumentatie

Scherm / contextRelevantie
Leerling-frontpageToont de actieve niveaucontext, categorienavigatie, populaire categorieën, recent geoefend en vervolgpunten naar oefenaanbod.
Oefenaanbod / categorieënPrimaire context waarin beschikbare categorieën en oefeningen voor de leerling zichtbaar worden.
Oefening-startpaginaWordt pas bereikbaar nadat oefeningstoegang server-side is gecontroleerd.
Profiel / niveaukeuzeBron voor het bewust kiezen of herstellen van een verplichte of geselecteerde niveaucontext.
BerichtenoverzichtKan systeemberichten bevatten over toegekende of ingetrokken toegang, maar berichten zijn niet de autorisatiebron.
Ontwerpbronnen — AutorisatiematrixCentrale bron voor rol- en objecttoegang per actie.
Ontwerpbronnen — Business rulesCentrale bron voor niveau-, categorie-, oefening- en autorisatieregels.

Domeinafbakening

OnderwerpAfbakening
NiveaucontextBepaalt binnen welk niveau de leerling categorieën en oefeningen ziet.
Open niveauMag door een leerling worden gebruikt wanneer het niveau actief en open is, zonder individuele niveauautorisatie aan te maken.
PrivéniveauVereist actieve docent-leerlingrelatie en actieve TeacherStudentLevelAccess.
CategorieënWorden getoond wanneer zij actief aan het niveau gekoppeld zijn en actieve onderliggende oefeninginhoud hebben.
OefeningenWorden getoond wanneer de oefenkoppeling en de oefening zelf actief zijn en de technische module bruikbaar is.
Oefening startenValt buiten dit subdomein en hoort bij het subdomein oefenen en voortgang.
Resultaten en geschiedenisWorden inhoudelijk uitgewerkt in het subdomein resultaten en geschiedenis.
DocentbeheerHet aanmaken, wijzigen en autoriseren van niveaus, categorieën en oefeningen hoort bij docent- en beheerderusecases.
RelatiesRelatievorming en uitnodigingen horen bij generieke relatieusecases. Dit subdomein gebruikt alleen de uitkomst ervan.

Open en privéniveau

NiveauvormToegang voor leerlingBelangrijkste bron
Open niveauLeerling mag het niveau als context gebruiken wanneer het actief en open is.TeacherLevels en actuele inhoud.
PrivéniveauLeerling mag het niveau gebruiken wanneer er een actieve docent-leerlingrelatie en actieve niveauautorisatie bestaan.UserRelationships en TeacherStudentLevelAccess.
Inactief niveauNiet bruikbaar als actuele leerlingcontext.TeacherLevels.IsActive.
Historische niveaucontextKan zichtbaar blijven in afgeronde geschiedenis, maar is geen actuele starttoegang.ExerciseRuns en geschiedenisregels.

Bijzondere regels

OnderwerpRegel
Server-side controleFrontend-zichtbaarheid is nooit voldoende autorisatie. De backend controleert leerling, niveau, categorie en oefening opnieuw.
CategoriezichtbaarheidEen categorie wordt alleen als startbare leerlingcategorie getoond wanneer binnen die niveaucontext actieve onderliggende oefeningen bestaan.
OefeningzichtbaarheidEen oefening is alleen zichtbaar wanneer de oefenkoppeling actief is en de oefening zelf actief is.
OnderhoudOefeningen in onderhoud zijn niet startbaar voor leerlingen.
Open niveauOpen niveaugebruik maakt geen docent-leerlingrelatie en geen TeacherStudentLevelAccess aan.
PrivéniveauPrivéniveaugebruik vereist actieve relatie en actieve niveauautorisatie.
Ingetrokken toegangIntrekking blokkeert nieuw starten en hervatten binnen die context, maar verwijdert afgeronde geschiedenis niet.
Selected levelEen opgeslagen niveaucontext moet opnieuw geldig zijn voordat deze als actuele context wordt gebruikt.
Oude routesBrowsergeschiedenis, directe URL's en clientcache geven geen toegang zonder actuele server-side autorisatie.
PopupsDeze usecases gebruiken routeguard-, leegstaat- en componentgedrag. Er worden geen nieuwe popupregister-popups geïntroduceerd.

Diagramgebruik binnen deze usecases

De usecases in dit subdomein gebruiken diagrammen alleen wanneer zij de autorisatie- of routebeslissing verduidelijken.

DiagramtypeGebruik
Sequence diagramVoor interacties tussen leerling, frontend, backend, autorisatielaag en database.
Decision flowVoor server-side beslissingen rond niveau, categorie, oefening en autorisatie.
Data lifecycleVoor onderscheid tussen brondata, afgeleid readmodel en het bewust ontbreken van nieuwe mutaties.
State diagramAlleen wanneer een persistent statusobject geraakt wordt. Voor dit subdomein is dat meestal niet van toepassing.