UC-GEN-PROF-003 — Verplicht niveau instellen
1. Kerngegevens
| Veld | Waarde |
|---|---|
| Usecase-ID | UC-GEN-PROF-003 |
| Naam | Verplicht niveau instellen |
| Domein | Profiel, voorkeuren en toegankelijkheid |
| Primaire actor | Ingelogde gebruiker zonder verplichte niveaucontext |
| Secundaire actor(en) | Systeem, routeguard, profielservice, gebruikersinstellingservice, autorisatieservice, validatieservice |
| Rolcontext | Ingelogde gebruiker waarvoor een niveaucontext vereist is om de normale applicatiecontext volledig te gebruiken |
| Betrokken schermen | SCH-GEN-11-01 — Profiel, ingelogde landingspagina / frontpagecontext |
| Gerelateerde usecases | UC-GEN-PROF-001 — Profiel bekijken; UC-GEN-PROF-002 — Profielgegevens wijzigen; UC-GEN-PROF-004 — Profielfoto kiezen; UC-GEN-PROF-007 — Voorkeuren beheren |
| Primaire entiteiten | Users, UserSettings, toegestane niveaucontext |
| Secundaire entiteiten / events | sessiecontext, niveauvalidatie, RequiredLevelMissingDetected, RequiredLevelSet, RequiredLevelSetRejected, RequiredLevelSetFailed |
| Gerelateerde popups | POP-GEN-PROF-NO-LEVEL, POP-GEN-PROF-LEVEL-REQUIRED, POP-GEN-PROF-LEVEL-SAVED, POP-GEN-PROF-LEVEL-SAVE-FAILED |
| Popupregister | Ontwerpbronnen — Popup-register |
| MoSCoW | Must have |
2. Omschrijving
Deze usecase beschrijft wat er gebeurt wanneer een ingelogde gebruiker nog geen verplichte niveaucontext heeft ingesteld. Na login controleert OefenHub of het profiel een geldig niveau bevat wanneer dat voor de normale applicatiecontext vereist is. Ontbreekt dit niveau, dan wordt de gebruiker nadrukkelijk naar de profielpagina geleid om het niveau alsnog in te stellen.
De eerste attendering na login wordt als blokkerende popup boven de geladen applicatiecontext getoond. Deze popup verwijst naar de profielpagina. Binnen de profielpagina moet de gebruiker een geldig niveau kiezen en opslaan. Wanneer de gebruiker de profielpagina probeert te verlaten zonder het verplichte niveau in te stellen, toont het systeem opnieuw een waarschuwing binnen de profielcontext.
Deze usecase is procesgericht. UI-details zoals exacte tekst, knoplabels, overlaygedrag en themakeuze worden centraal vastgelegd via het popupregister en popup-themes. De usecase beschrijft wanneer de popups worden gebruikt, welke controles gelden, welke data wordt opgeslagen en welke delen van de applicatie niet volledig beschikbaar worden gemaakt zolang de verplichte niveaucontext ontbreekt.
3. Scope
Deze usecase beschrijft:
- detectie van een ontbrekende verplichte niveaucontext na login of bij het laden van de ingelogde applicatiecontext;
- het tonen van een attenderende popup die de gebruiker naar de profielpagina leidt;
- het openen van de profielpagina in de context van verplicht niveau instellen;
- het tonen van beschikbare niveaukeuzes die server-side zijn bepaald;
- het server-side valideren van de gekozen niveaucontext;
- het opslaan van een geldige niveaukeuze;
- het opheffen van de blokkade of attenderingsstatus nadat een geldig niveau is opgeslagen;
- het tonen van een waarschuwing wanneer de gebruiker de profielpagina wil verlaten zonder geldig niveau;
- veilige foutafhandeling bij ontbrekende of ongeldige niveaukeuze;
- datamutaties en requirements-afleiding voor deze verplichte-niveauflow.
Deze usecase beschrijft niet:
- het algemene bekijken van het profiel;
- het wijzigen van overige profielgegevens zoals naamvelden;
- het wijzigen van profielfoto of avatar;
- het wijzigen van e-mailadres, wachtwoord, sessies of identity-providergegevens;
- het beheren van rollen, relaties, niveauautorisaties of accountstatus;
- het aanmaken of beheren van niveaus door docenten of beheerders;
- het selecteren van een oefening, starten van een oefenrun of hervatten van een run;
- het volledige frontpagegedrag nadat het niveau geldig is ingesteld;
- popupteksten, knopteksten of popup-seeddata;
- account lifecycle, verwijderen of anonimiseren.
4. Pre-condities
| ID | Voorwaarde |
|---|---|
| PRE-001 | De gebruiker is ingelogd. |
| PRE-002 | De sessie is geldig en kan server-side aan precies één interne OefenHub-gebruiker worden gekoppeld. |
| PRE-003 | Het interne gebruikersprofiel bestaat. |
| PRE-004 | Het systeem kan bepalen of voor deze gebruiker een niveaucontext verplicht is. |
| PRE-005 | Het profiel of de gebruikersinstellingen bevatten op dat moment geen geldig ingesteld niveau, terwijl dit wel vereist is. |
| PRE-006 | De profielpagina is bereikbaar voor de gebruiker. |
| PRE-007 | De autorisatieservice kan bepalen welke niveaus voor de gebruiker als keuze beschikbaar zijn. |
| PRE-008 | De gebruikersinstellingservice of profielopslag kan een geldige niveaukeuze opslaan. |
| PRE-009 | Het popupregister bevat de benodigde popupkeys voor de verplichte-niveauflow. |
5. Post-condities
| ID | Resultaat |
|---|---|
| POST-001 | Wanneer de gebruiker een geldig niveau opslaat, bevat het profiel of UserSettings een geldige actieve niveaucontext. |
| POST-002 | De opgeslagen niveaucontext is server-side gevalideerd en behoort tot de toegestane keuzes voor de gebruiker. |
| POST-003 | Na succesvolle opslag wordt de verplichte-niveau-attendering voor deze gebruiker opgeheven. |
| POST-004 | Na succesvolle opslag kan de normale applicatiecontext worden geladen volgens de geldende rol- en niveaucontext. |
| POST-005 | Ongeldige of ontbrekende niveaukeuzes worden niet opgeslagen. |
| POST-006 | Bij verlaten van de profielpagina zonder geldig niveau blijft de verplichte-niveau-attendering actief. |
| POST-007 | Bij technische opslagfouten blijft het bestaande profiel consistent en blijft de gebruiker in de verplichte-niveauflow. |
| POST-008 | De usecase maakt geen nieuw account, geen nieuwe rol, geen relatie en geen niveau aan. |
| POST-009 | De usecase wijzigt geen oefenruns, geschiedenis, relaties of autorisaties. |
| POST-010 | Bij verlopen sessie wordt de generieke loginflow gebruikt. |
| POST-011 | Bij ontbrekende autorisatie wordt de generieke toegang-geweigerd-afhandeling gebruikt. |
6. Trigger
De usecase start wanneer een ingelogde gebruiker zonder verplichte niveaucontext de applicatie opent, na login op de ingelogde context terechtkomt, of de profielpagina probeert te verlaten zonder het verplichte niveau te hebben opgeslagen.
7. Normale processtroom
| Stap | Actor | Scherm / component | Actie | Systeemrespons | Data / regel |
|---|---|---|---|---|---|
| 1 | Gebruiker | Login / ingelogde applicatiecontext | Logt succesvol in of opent de applicatie met geldige sessie. | Het systeem laadt de gebruikerscontext. | Authenticatie is afgerond via de identity provider. |
| 2 | Systeem | Routeguard / profielcontrole | Controleert of het interne OefenHub-profiel bestaat. | Het systeem gebruikt de sessiegebruiker als bron voor het profiel. | Client-side gebruikers-ID’s zijn niet leidend. |
| 3 | Systeem | Profielservice | Controleert of een niveaucontext verplicht is en of deze geldig is ingesteld. | Het systeem constateert dat een vereist niveau ontbreekt. | Geen normale voortgang zonder verplichte niveaucontext. |
| 4 | Systeem | Frontpage / applicatieschil | Toont de verplichte-niveau-attendering. | De gebruiker krijgt POP-GEN-PROF-NO-LEVEL te zien. | Popuptekst en knopconfiguratie staan in het popupregister. |
| 5 | Gebruiker | Popup | Kiest de actie om naar het profiel te gaan. | Het systeem opent SCH-GEN-11-01 — Profiel. | De profielpagina opent in context verplicht niveau instellen. |
| 6 | Systeem | Profielpagina | Laadt actuele profielgegevens en beschikbare niveaukeuzes. | Alleen server-side toegestane niveaukeuzes worden getoond. | Niveaukeuze is geen vrije invoer. |
| 7 | Gebruiker | Profielpagina | Kiest een niveau. | Het systeem registreert de gekozen waarde als kandidaatwijziging. | De keuze moet binnen de toegestane niveaucontext vallen. |
| 8 | Gebruiker | Profielpagina | Kiest Opslaan of een gelijkwaardige opslagactie. | Het systeem start server-side validatie. | Client-side validatie is ondersteunend. |
| 9 | Systeem | Validatieservice | Valideert dat een niveau gekozen is. | Ontbrekende keuze wordt geweigerd. | Verplicht veld. |
| 10 | Systeem | Autorisatieservice | Valideert dat het gekozen niveau toegestaan is voor deze gebruiker. | Ongeldige of niet-toegestane waarde wordt geweigerd. | Server-side autorisatie is leidend. |
| 11 | Systeem | Gebruikersinstellingservice / profielservice | Slaat de geldige niveaucontext op. | UserSettings of de functioneel bijbehorende profielopslag wordt bijgewerkt. | Actor en wijzigmoment worden vastgelegd wanneer auditvelden bestaan. |
| 12 | Systeem | Backend | Registreert de geslaagde instelling. | Het systeem publiceert/logt RequiredLevelSet waar relevant. | Geen gevoelige technische details in gebruikersmeldingen. |
| 13 | Systeem | Profielpagina | Toont dat het niveau is opgeslagen. | POP-GEN-PROF-LEVEL-SAVED of een gelijkwaardige succesmelding wordt getoond. | Popupinhoud staat centraal in popupregister. |
| 14 | Systeem | Applicatiecontext | Herberekent de actieve context. | De normale applicatiecontext wordt beschikbaar volgens de ingestelde niveau- en rolcontext. | Geen oefenrunmutatie. |
| 15 | Gebruiker | Applicatiecontext | Navigeert verder binnen OefenHub. | De verplichte-niveau-attendering wordt niet opnieuw getoond zolang het niveau geldig blijft. | De opgeslagen niveaucontext is leidend. |
8. Alternatieve en exceptionele processtromen
| ID | Vanaf stap | Situatie | Systeemgedrag | Popup / melding | Datamutatie |
|---|---|---|---|---|---|
| ALT-001 | 1 | De sessie is verlopen of ontbreekt. | Het systeem start de generieke loginflow. | Generieke loginflow. | Geen. |
| ALT-002 | 2 | Het interne profiel bestaat niet of provisioning is niet afgerond. | Het systeem gebruikt generieke provisioning- of foutafhandeling. | Veilige generieke foutmelding. | Geen niveaucontext. |
| ALT-003 | 3 | Voor deze gebruiker is geen niveaucontext verplicht. | Het systeem toont geen verplichte-niveau-attendering en laat normale navigatie toe. | Geen popup. | Geen. |
| ALT-004 | 3 | Er is al een geldig niveau ingesteld. | Het systeem laat de normale applicatiecontext door. | Geen popup. | Geen. |
| ALT-005 | 4 | De gebruiker sluit de eerste popup zonder naar profiel te gaan, wanneer sluiten technisch is toegestaan. | Het systeem houdt de verplichte-niveau-attendering actief en beperkt normale voortgang. | POP-GEN-PROF-NO-LEVEL kan opnieuw of persistent worden aangeboden volgens popupconfiguratie. | Geen. |
| ALT-006 | 5 | De profielpagina kan niet worden geladen. | Het systeem toont veilige foutafhandeling en behoudt de verplichte-niveau-attendering. | Generieke foutmelding of POP-GEN-PROF-LEVEL-SAVE-FAILED afhankelijk van moment. | Geen. |
| ALT-007 | 6 | Er zijn geen niveaukeuzes beschikbaar terwijl niveau verplicht is. | Het systeem toont dat het niveau niet gekozen kan worden en blokkeert opslag. | POP-GEN-PROF-LEVEL-SAVE-FAILED of inline foutmelding. | Geen. |
| ALT-008 | 7-9 | De gebruiker probeert op te slaan zonder niveaukeuze. | Het systeem weigert opslag en toont veldgerichte validatie. | POP-GEN-PROF-LEVEL-REQUIRED of inline validatie. | Geen. |
| ALT-009 | 7-10 | De gekozen waarde is gemanipuleerd of komt niet voor in de toegestane niveaucontext. | Het systeem weigert opslag en toont veilige validatie. | POP-GEN-PROF-LEVEL-REQUIRED of inline validatie. | Geen. |
| ALT-010 | 7-10 | De gekozen niveaucontext was geldig in de UI maar is inmiddels niet meer toegestaan. | Het systeem herlaadt de toegestane keuzes en weigert de verouderde keuze. | POP-GEN-PROF-LEVEL-REQUIRED of inline validatie. | Geen. |
| ALT-011 | 8-11 | Opslaan faalt door technische fout. | Het systeem rolt de transactie terug of behoudt bestaande consistente waarden. | POP-GEN-PROF-LEVEL-SAVE-FAILED. | Geen of rollback. |
| ALT-012 | 11 | Auditvelden kunnen niet afzonderlijk worden vastgelegd maar de opslag slaagt consistent. | Het systeem volgt het centrale logging- en auditbeleid. | Geen technische details aan gebruiker. | Niveaucontext blijft opgeslagen wanneer de transactie geldig is. |
| ALT-013 | 13 | Succesmelding kan niet als popup worden getoond. | Het systeem toont de actuele opgeslagen waarde en gebruikt een inline bevestiging als terugval voor de popupbevestiging. | Inline bevestiging. | Niveaucontext blijft opgeslagen. |
| ALT-014 | 14 | Na opslag blijkt de gekozen niveaucontext geen zichtbare oefeningen of content op te leveren. | Het systeem laadt de normale context met de geldende leegstaat of informatie. | Geen verplichte-niveaupopup. | Geen aanvullende mutatie. |
| ALT-015 | 3-14 | De gebruiker probeert een afgeschermde route te openen zolang niveau ontbreekt. | Het systeem leidt terug naar de verplichte-niveauflow of blokkeert de route volgens routeguard. | POP-GEN-PROF-NO-LEVEL of generieke routeguardmelding. | Geen. |
| ALT-016 | 5-8 | De gebruiker probeert de profielpagina te verlaten zonder niveau op te slaan. | Het systeem toont binnen de profielpagina een normale waarschuwing zonder donkere overlay. | POP-GEN-PROF-LEVEL-REQUIRED. | Geen. |
| ALT-017 | 16 | De gebruiker blijft op de profielpagina na waarschuwing. | Het systeem laat de gebruiker alsnog een niveau kiezen. | Geen nieuwe popup zolang de gebruiker binnen de flow blijft. | Geen tot geldige opslag. |
| ALT-018 | 16 | De gebruiker forceert navigatie weg of sluit browser/tab. | Het systeem bewaart geen ongeldige niveaucontext; bij volgende login of routepoging start de flow opnieuw. | Bij volgende interactie opnieuw POP-GEN-PROF-NO-LEVEL of POP-GEN-PROF-LEVEL-REQUIRED. | Geen. |
| ALT-019 | 10-11 | De gebruiker heeft precies één toegestane niveaukeuze. | Het systeem mag die keuze tonen als enige selecteerbare waarde of vooraf selecteren, maar opslag blijft expliciet of server-side controleerbaar. | Geen extra popup. | Alleen na geldige opslag. |
| ALT-020 | 12 | Logging of niet-kritieke eventpublicatie faalt na succesvolle opslag. | Het systeem volgt het centrale loggingbeleid; de opgeslagen niveaucontext blijft leidend. | Geen technische details aan gebruiker. | Niveaucontext blijft opgeslagen. |
9. Business rules
| ID | Regel |
|---|---|
| BR-UC-GEN-PROF-003-001 | Een gebruiker waarvoor een niveaucontext verplicht is, mag de normale applicatiecontext niet volledig gebruiken zolang geen geldig niveau is ingesteld. |
| BR-UC-GEN-PROF-003-002 | Het ontbreken van een verplicht niveau wordt server-side vastgesteld op basis van het interne profiel en/of UserSettings. |
| BR-UC-GEN-PROF-003-003 | De server bepaalt de gebruiker altijd op basis van de sessie. |
| BR-UC-GEN-PROF-003-004 | De eerste attendering na login gebruikt POP-GEN-PROF-NO-LEVEL. |
| BR-UC-GEN-PROF-003-005 | Verlaten van de profielpagina zonder verplicht niveau gebruikt POP-GEN-PROF-LEVEL-REQUIRED. |
| BR-UC-GEN-PROF-003-006 | Een niveaukeuze is geen vrije invoer en moet voorkomen in de server-side toegestane niveaucontext. |
| BR-UC-GEN-PROF-003-007 | Een gemanipuleerde of niet-toegestane niveauwaarde wordt geweigerd, ook wanneer deze client-side aanwezig is. |
| BR-UC-GEN-PROF-003-008 | Een geldige niveaukeuze wijzigt alleen de profiel- of gebruikersinstellingcontext en geen rollen, relaties of autorisaties. |
| BR-UC-GEN-PROF-003-009 | Het instellen van een niveau start, hervat of wijzigt geen oefenrun. |
| BR-UC-GEN-PROF-003-010 | Wanneer geen niveaukeuzes beschikbaar zijn terwijl een niveau verplicht is, mag het systeem geen ongeldige default opslaan. |
| BR-UC-GEN-PROF-003-011 | Succesvolle opslag heft de verplichte-niveau-attendering op zolang de opgeslagen niveaucontext geldig blijft. |
| BR-UC-GEN-PROF-003-012 | Validatie- en foutmeldingen mogen geen technische identifiers, stacktraces, databasefouten, tokens of identity-providerdetails tonen. |
| BR-UC-GEN-PROF-003-013 | Popuptekst, knoptekst, overlaygedrag en themakeuze worden niet in de usecase gedupliceerd maar via popupregister en popup-themes beheerd. |
| BR-UC-GEN-PROF-003-014 | De verplichte-niveauflow valt binnen het profiel- en gebruikersinstellingendomein, niet binnen oefenrun-, relatie- of autorisatiebeheer. |
| BR-UC-GEN-PROF-003-015 | Wanneer de ingestelde niveaucontext later ongeldig wordt, moet het systeem opnieuw kunnen vaststellen dat herstel of nieuwe keuze nodig is. |
Centrale business rules die hierbij horen:
| BusinessRule-ID | Toepassing |
|---|---|
BR-GEN-SEC-001 | Afgeschermde acties vereisen server-side autorisatie en objectcontrole. |
BR-GEN-PROF-001 | Een gebruiker mag via de normale profielroute uitsluitend het eigen profiel beheren. |
BR-GEN-PROF-004 | Actieve niveaucontext moet worden afgeleid uit toegestane gebruikers- en rolcontext. |
BR-GEN-PROF-005 | Gebruikers waarvoor niveaucontext verplicht is, moeten een geldige niveaucontext instellen voordat de normale context volledig beschikbaar is. |
BR-GEN-POP-001 | Usecases verwijzen alleen naar PopupKey; popupinhoud staat centraal in het popupregister. |
BR-GEN-SEC-002 | Gebruikersinvoer en clientwaarden worden server-side gevalideerd en veilig verwerkt. |
10. Datavalidatie
| Veld / object | Validatie |
|---|---|
| Sessie | Moet geldig zijn en aan precies één interne OefenHub-gebruiker gekoppeld kunnen worden. |
Users.Id | Wordt server-side uit de sessie afgeleid en niet uit clientinput. |
| Profielrecord | Moet bestaan voordat niveaucontext kan worden opgeslagen. |
| Verplicht-niveau-indicatie | Wordt server-side afgeleid uit de applicatieregels voor de gebruiker en context. |
| Bestaande niveaucontext | Moet geldig en toegestaan zijn; anders wordt deze als ontbrekend of ongeldig behandeld. |
| Niveaukeuzelijst | Wordt server-side opgebouwd uit toegestane niveaucontext; client-side lijst is niet leidend. |
| Gekozen niveau | Verplicht wanneer niveaucontext vereist is. |
| Gekozen niveau | Moet voorkomen in de server-side toegestane niveaucontext voor deze gebruiker. |
| Gekozen niveau | Mag niet als vrije tekst of willekeurige identifier worden geaccepteerd. |
UserSettings / profielniveauveld | Mag alleen worden bijgewerkt met een gevalideerde niveauverwijzing of geldige niveaucontext. |
| Auditvelden | UpdatedByUserId wordt afgeleid uit de sessie; UpdatedAtUtc wordt server-side bepaald wanneer deze velden bestaan. |
| PopupKey | Moet bestaan in het popupregister voordat de popup gebruikt kan worden. |
| Foutmelding | Gebruikersgericht formuleren; geen GUID’s, stacktraces, databasefouten, tokens, ExternalId of identity-providerdetails tonen. |
| Logging | Geen wachtwoorden, tokens, secrets, gevoelige headers of onnodige persoonsgegevens loggen. |
11. Datamutaties en events
| Stap | Type | Entiteit / event | Mutatie |
|---|---|---|---|
| 1 | Read | sessie / identity-context | Controleren of de gebruiker ingelogd is. |
| 2 | Read | Users | Interne gebruiker bepalen uit de sessie. |
| 3 | Read | Users, UserSettings | Controleren of een verplichte niveaucontext ontbreekt of ongeldig is. |
| 4 | Event / logging | RequiredLevelMissingDetected | Ontbrekende verplichte niveaucontext logisch registreren volgens centraal loggingbeleid. |
| 6 | Read | niveau- en autorisatiecontext | Beschikbare niveaukeuzes bepalen. |
| 9 | Validatie | gekozen niveau | Controleren dat een niveau gekozen is. |
| 10 | Validatie / autorisatie | gekozen niveau | Controleren dat de gekozen waarde toegestaan is. |
| 11 | Update | UserSettings of profielopslag | Geldige actieve niveaucontext opslaan. |
| 11 | Update / audit | UpdatedByUserId, UpdatedAtUtc | Laatste wijziging vastleggen wanneer deze velden aanwezig zijn. |
| 12 | Event / logging | RequiredLevelSet | Geslaagde instelling van verplichte niveaucontext logisch registreren. |
| ALT-008 t/m ALT-010 | Event / logging | RequiredLevelSetRejected | Ongeldige, ontbrekende of niet-toegestane niveaukeuze veilig registreren volgens centraal loggingbeleid. |
| ALT-011 | Event / logging | RequiredLevelSetFailed | Technische opslagfout veilig registreren. |
| ALT-016 t/m ALT-018 | Geen mutatie | Users, UserSettings | Verlaten zonder geldig niveau veroorzaakt geen opslag. |
12. Geen datamutaties
| Entiteit | Reden |
|---|---|
Users | Wordt gelezen voor profielcontext; naamgegevens worden niet in deze usecase gewijzigd tenzij het gekozen datamodel niveau op Users opslaat. |
| Rollen / role assignments | Niveau instellen wijzigt geen rollen. |
| Relaties | Niveau instellen maakt, wijzigt of verwijdert geen relaties. |
| Niveauautorisaties | De keuze selecteert alleen binnen bestaande toegestane context; er wordt geen autorisatie toegekend. |
| Niveaus | Er worden geen nieuwe niveaus aangemaakt of beheerd. |
| Categorieën / oefeningen | Het instellen van niveau wijzigt geen oefenaanbod. |
| ExerciseRuns | Er worden geen oefenruns gestart, hervat, afgerond of verplaatst. |
| Berichten / systeemberichten | De verplichte-niveauflow verstuurt geen systeembericht. |
| Identity-provideraccount | Authenticatie- en identity-providergegevens worden niet gewijzigd. |
| Toegankelijkheidsinstellingen | Deze usecase wijzigt geen contrast-, dyslexie- of lettergrootte-instellingen. |
| Algemene voorkeuren | Deze usecase wijzigt geen niet-profielgebonden voorkeuren. |
| Profielavatar | Profielfoto kiezen hoort bij UC-GEN-PROF-004. |
13. State diagram
Niet van toepassing. Er wordt geen zelfstandig statusobject met eigen statustransities geïntroduceerd. De flow gebruikt een afgeleide toestand: verplichte niveaucontext ontbreekt, niveaucontext is ongeldig, of niveaucontext is geldig ingesteld.
14. Decision flow
15. Data lifecycle diagram
16. Sequence diagrammen
16.1 Detectie na login en routering naar profiel
16.2 Niveau opslaan vanuit profiel
16.3 Verlaten zonder niveau
17. Popupverwijzingen
| PopupKey | Moment | Doel |
|---|---|---|
POP-GEN-PROF-NO-LEVEL | Na login of routecontrole wanneer een verplicht niveau ontbreekt. | Gebruiker attenderen dat eerst een niveau ingesteld moet worden en doorleiden naar profiel. |
POP-GEN-PROF-LEVEL-REQUIRED | Binnen de profielpagina wanneer de gebruiker zonder geldig niveau wil opslaan of vertrekken. | Duidelijk maken dat het niveau verplicht is voordat normale voortgang mogelijk is. |
POP-GEN-PROF-LEVEL-SAVED | Na succesvolle opslag van de geldige niveaucontext. | Bevestigen dat het niveau is opgeslagen. |
POP-GEN-PROF-LEVEL-SAVE-FAILED | Bij technische opslagfout of ontbrekende niveaukeuzemogelijkheden. | Veilige foutmelding zonder technische details. |
18. Afleiding naar Functioneel Ontwerp / Technisch Ontwerp / Software Requirements Specification
| Doeldocument | Afleiding |
|---|---|
| Functioneel Ontwerp | Beschrijf dat gebruikers waarvoor niveaucontext verplicht is na login naar profiel worden geleid wanneer niveau ontbreekt. |
| Functioneel Ontwerp | Beschrijf het onderscheid tussen eerste attendering na login met overlay en waarschuwing binnen profielpagina bij verlaten zonder niveau. |
| Functioneel Ontwerp | Beschrijf dat de gebruiker alleen kan kiezen uit server-side toegestane niveaus en geen vrij niveau kan invoeren. |
| Functioneel Ontwerp | Beschrijf dat normale applicatiecontext pas volledig beschikbaar wordt na geldige niveaukeuze. |
| Technisch Ontwerp: identiteit, authenticatie en rolcontext, autorisatie, oefencatalogus | Beschrijft waar de verplichte-niveaucontrole plaatsvindt: routeguard, profielservice en/of gebruikerscontextservice. |
| Technisch Ontwerp: identiteit, authenticatie en rolcontext, autorisatie, oefencatalogus | Beschrijft dat actieve niveaucontext technisch in UserSettings.SelectedTeacherLevelId wordt opgeslagen als soft link naar de catalogus-/niveaucontext. |
| Technisch Ontwerp: identiteit, authenticatie en rolcontext, autorisatie, oefencatalogus | Beschrijft hoe ongeldige of later ingetrokken niveaucontext opnieuw wordt gedetecteerd. |
| Technisch Ontwerp: identiteit, authenticatie en rolcontext, autorisatie, oefencatalogus | Beschrijft welke popupkeys, popupvariant en theme uit popupregister en popup-themes worden gebruikt. |
| Technisch Ontwerp: identiteit, authenticatie en rolcontext, autorisatie, oefencatalogus | Beschrijft hoe auditvelden en logging worden toegepast zonder gevoelige gegevens. |
| Software Requirements Specification | Bevat requirements voor detectie van ontbrekend verplicht niveau, validatie van niveaukeuze, routeblokkade, veilige foutafhandeling en opslag. |
| Software Requirements Specification | Borgt dat een gekozen niveau alleen uit toegestane niveaucontext mag komen. |
| Software Requirements Specification | Borgt dat de flow geen rollen, relaties, autorisaties of oefenruns wijzigt. |
| Database-informatie | Beschrijft UserSettings.SelectedTeacherLevelId als soft link naar de actieve niveaucontext en legt relevante wijzigingsmetadata vast waar nodig. |
| Popupbeheer | Bevat of verifieert de betrokken popupkeys in het popupregister. |
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-GEN-PROF-003-001 | SRS-ACC-002 SRS-ACC-003 SRS-CAT-006 AC-ACC-002 AC-ACC-003 AC-CAT-006 | Na login of routecontrole kunnen vaststellen of een voor de gebruiker verplichte niveaucontext ontbreekt |
REQ-UC-GEN-PROF-003-002 | SRS-RDM-001 SRS-RDM-005 SRS-ACC-003 SRS-CAT-006 SRS-POP-001 AC-RDM-001 AC-RDM-005 AC-ACC-003 AC-CAT-006 AC-POP-001 | Een gebruiker zonder verplichte niveaucontext attenderen met een centrale popup en een route naar de profielpagina aanbieden |
REQ-UC-GEN-PROF-003-003 | SRS-RDM-001 SRS-RDM-005 SRS-ACC-003 SRS-CAT-006 AC-RDM-001 AC-RDM-005 AC-ACC-003 AC-CAT-006 | De profielpagina kunnen openen in de context van verplicht niveau instellen |
REQ-UC-GEN-PROF-003-004 | SRS-AUTH-001 SRS-ACC-003 SRS-CAT-001 AC-AUTH-001 AC-ACC-003 AC-CAT-001 | Beschikbare niveaukeuzes server-side bepalen |
REQ-UC-GEN-PROF-003-005 | SRS-AUTH-001 SRS-ACC-003 SRS-CAT-006 AC-AUTH-001 AC-ACC-003 AC-CAT-006 | Een ontbrekende niveaukeuze weigeren wanneer niveaucontext verplicht is |
REQ-UC-GEN-PROF-003-006 | SRS-AUTH-001 SRS-ACC-003 SRS-CAT-006 AC-AUTH-001 AC-ACC-003 AC-CAT-006 | Een gekozen niveau server-side valideren tegen de toegestane niveaucontext van de gebruiker |
REQ-UC-GEN-PROF-003-007 | SRS-AUTH-001 SRS-ACC-003 SRS-CAT-001 AC-AUTH-001 AC-ACC-003 AC-CAT-001 | Gemanipuleerde of niet-toegestane niveauwaarden weigeren |
REQ-UC-GEN-PROF-003-008 | SRS-ACC-003 SRS-CAT-001 AC-ACC-003 AC-CAT-001 | Een geldige niveaukeuze opslaan in de daarvoor bedoelde profiel- of gebruikersinstellingopslag |
REQ-UC-GEN-PROF-003-009 | SRS-ACC-003 SRS-CAT-006 SRS-NFR-AUD-001 SRS-NFR-LOG-001 AC-ACC-003 AC-CAT-006 AC-NFR-AUD-001 AC-NFR-LOG-001 | Auditvelden of gelijkwaardige logging vastleggen bij een geslaagde niveaucontextwijziging wanneer het betrokken record dit ondersteunt |
REQ-UC-GEN-PROF-003-010 | SRS-ACC-003 SRS-CAT-006 AC-ACC-003 AC-CAT-006 | De verplichte-niveau-attendering opheffen nadat een geldige niveaucontext is opgeslagen |
REQ-UC-GEN-PROF-003-011 | SRS-RDM-001 SRS-RDM-005 SRS-ACC-003 SRS-CAT-001 AC-RDM-001 AC-RDM-005 AC-ACC-003 AC-CAT-001 | Binnen de profielpagina waarschuwen wanneer de gebruiker zonder verplicht niveau wil vertrekken |
REQ-UC-GEN-PROF-003-012 | SRS-AUTH-001 SRS-ACC-003 SRS-REL-001 SRS-CAT-001 SRS-LRN-009 AC-AUTH-001 AC-ACC-003 AC-REL-001 AC-CAT-001 AC-LRN-009 | Bij het instellen van een verplicht niveau geen rollen, relaties, autorisaties, niveaus, categorieën, oefeningen of oefenruns wijzigen |
REQ-UC-GEN-PROF-003-013 | SRS-ACC-003 SRS-TIC-002 SRS-CAT-001 SRS-NFR-SEC-001 AC-ACC-003 AC-TIC-002 AC-CAT-001 AC-NFR-SEC-001 | Veilige gebruikersgerichte foutmeldingen tonen wanneer niveaukeuze of opslag faalt |
REQ-UC-GEN-PROF-003-014 | SRS-ACC-003 SRS-CAT-001 SRS-NFR-SEC-001 AC-ACC-003 AC-CAT-001 AC-NFR-SEC-001 | Geen technische identifiers, stacktraces, tokens, databasefouten of identity-providerdetails tonen in de verplichte-niveauflow |
REQ-UC-GEN-PROF-003-015 | SRS-ACC-003 AC-ACC-003 | Bij technische opslagfouten de bestaande profielcontext consistent houden |
REQ-UC-GEN-PROF-003-016 | SRS-ACC-003 SRS-CAT-006 AC-ACC-003 AC-CAT-006 | Opnieuw kunnen detecteren dat verplichte niveaucontext ontbreekt wanneer de gebruiker de flow verlaat zonder geldige opslag |
REQ-UC-GEN-PROF-003-017 | SRS-ACC-003 SRS-POP-001 AC-ACC-003 AC-POP-001 | Het popupregister gebruiken voor popupinhoud en mag popupteksten niet in de usecase of code dupliceren |
REQ-UC-GEN-PROF-003-018 | SRS-ACC-002 SRS-ACC-003 AC-ACC-002 AC-ACC-003 | Bij een ontbrekende sessie de generieke loginflow gebruiken in plaats van een profielspecifieke foutflow |
REQ-UC-GEN-PROF-003-019 | SRS-AUTH-001 SRS-ACC-003 AC-AUTH-001 AC-ACC-003 | Bij ontbrekende autorisatie de generieke toegang-geweigerd-afhandeling gebruiken |
REQ-UC-GEN-PROF-003-020 | SRS-ACC-003 SRS-CAT-001 SRS-NFR-SEC-001 AC-ACC-003 AC-CAT-001 AC-NFR-SEC-001 | Een situatie zonder beschikbare niveaukeuzes veilig afhandelen zonder een ongeldige default op te slaan |