Skip to main content

Accounttoegang en account lifecycle

Deze map bevat de generieke usecases voor accounttoegang en account lifecycle binnen OefenHub. Dit subdomein beschrijft hoe een gebruiker na externe authenticatie wordt gekoppeld aan een intern OefenHub-account, hoe de OefenHub-sessiecontext wordt opgebouwd, hoe onvolledige accountcontext veilig wordt afgehandeld en hoe accountverwijdering, anonimisering en uitloggen plaatsvinden.

De usecases in deze map zijn procesgericht. De schermdocumentatie blijft de bron voor exacte UI-opbouw, labels, menu-items, knoppen en visuele foutafhandeling. Deze usecases beschrijven vooral het gedrag achter de schermen: welke accountcontext geldt, welke controles server-side plaatsvinden, welke domeinmutaties wel of niet worden uitgevoerd en welke vervolgprocessen worden gestart.

Usecases

UsecaseOmschrijving
UC-GEN-ACC-001 — Eerste login en account provisioningVerwerkt een succesvolle externe authenticatie tot een intern OefenHub-account wanneer dit nog niet bestaat, inclusief basisinstellingen en koppeling van geldige pending relatie-uitnodigingen.
UC-GEN-ACC-002 — Inloggen en sessie verwerkenVerwerkt een reguliere login via de identity provider tot een geldige OefenHub-sessiecontext voor bestaande gebruikers.
UC-GEN-ACC-003 — Geen rol of onvolledig account afhandelenHandelt gebruikers af die wel geauthenticeerd zijn en een actief intern account hebben, maar nog geen bruikbare rolcontext of verplichte applicatiecontext hebben.
UC-GEN-ACC-004 — Account verwijderen aanvragenBeschrijft hoe een gebruiker het eigen account verwijdert via een expliciete bevestigingsflow binnen OefenHub.
UC-GEN-ACC-005 — Account anonimiseren en afhankelijke toegang opruimenVoert de interne systeemverwerking uit voor anonimisering, toegangsbeëindiging en opruiming van afhankelijke domeincontext na een definitieve verwijdertrigger.
UC-GEN-ACC-006 — Uitloggen en sessie beëindigenBeëindigt de lokale OefenHub-applicatiesessie, realtime context en optionele identity-providerlogout zonder normale logout als domeinobject op te slaan.

Relevante schermdocumentatie en contexten

Scherm / contextRelevantie
SCH-GEN-00-01 — Niet-ingelogde publieke frontpageStartpunt voor gebruikers zonder geldige OefenHub-sessie en ingang naar de identity-providerlogin en registratieflow.
Externe identity-providerloginVerwerkt authenticatie, credentials, wachtwoord-reset, e-mailverificatie en primaire sessie buiten OefenHub.
OefenHub-authentication callbackTechnische terugkeerroute waar OefenHub de identity-providercontext vertaalt naar interne account- en sessiecontext.
Geauthenticeerde frontpageDoelroute na succesvolle sessieverwerking, afhankelijk van actieve rollen en verplichte context.
Frontpage zonder rolBeperkte geauthenticeerde context wanneer een actief intern account nog geen bruikbare rolcontext heeft.
Profiel / accountinstellingenIngang voor accountgerelateerde acties zoals profielaanvulling en accountverwijdering.
SCH-GEN-09-01 — ToegankelijkheidRelevante context voor synchronisatie van toegankelijkheidsinstellingen vóór en na login.
Ontwerpbronnen — Business rulesCentrale bron voor accountregels rond identity provider, ExternalId, actieve accounts en server-side contextbepaling.
Ontwerpbronnen — AutorisatiematrixCentrale bron voor toegestane accountacties per actor, systeemcomponent en rolcontext.
Ontwerpbronnen — Popup-registerCentrale bron voor popupkeys, popupteksten, knopacties en inputvelden.
Ontwerpbronnen — Popup-themesCentrale bron voor popupvarianten, themes en importdefaults.

Domeinafbakening

OnderwerpAfbakening
AuthenticatieWordt afgehandeld door de externe identity provider. OefenHub verwerkt geen wachtwoorden, wachtwoord-reset, e-mailverificatie of credential lifecycle.
Intern accountWordt opgeslagen in Users en via ExternalId gekoppeld aan het externe identity-provideraccount.
AccountprovisioningMaakt na eerste succesvolle externe authenticatie het interne account en basisinstellingen aan wanneer deze nog ontbreken.
SessiecontextWordt na login server-side opgebouwd uit het interne account, actieve rollen, UserSettings en business rules. Er bestaat geen aparte OefenHub-domeinsessietabel.
RolcontextWordt bepaald uit actieve UserRoles en Roles. Clientstate, routeparameters en oude browsercontext zijn niet leidend.
Onvolledig accountWordt veilig naar een beperkte context, profielroute of verplichte vervolgflow geleid zonder stilzwijgende aannames.
AccountverwijderingIs voor gebruikers één zichtbare verwijderactie, maar leidt intern tot anonimisering en opruiming van afhankelijke toegang.
AnonimiseringVervangt persoonsgegevens door niet-persoonsherleidbare waarden en behoudt noodzakelijke historie onder geanonimiseerde identiteit.
UitloggenBeëindigt de lokale applicatiesessie en realtime context. Normale logout wordt niet als persistent domeinobject opgeslagen.
Identity-provideraccountWordt niet door deze OefenHub-usecases verwijderd of inhoudelijk gewijzigd.

Accountcontexten en lifecycle

Context / toestandBetekenisHoofdrouting
Publieke gebruikerEr is geen geldige OefenHub-sessie.Publieke startpagina of identity-providerlogin.
Extern geauthenticeerd, intern onbekendDe identity provider heeft succesvol geauthenticeerd, maar Users.ExternalId bestaat nog niet intern.UC-GEN-ACC-001.
Intern actief accountEr bestaat precies één actief intern account voor de ontvangen ExternalId.UC-GEN-ACC-002.
Geen actieve rolcontextHet interne account is actief, maar er is geen bruikbare actieve rol.UC-GEN-ACC-003.
Onvolledige verplichte contextEr is een rolcontext, maar verplichte profiel- of niveaucontext ontbreekt.UC-GEN-ACC-003 met doorverwijzing naar de betreffende profielusecase.
Gedeactiveerd of geanonimiseerd accountHet interne account mag geen reguliere OefenHub-toegang krijgen.Toegang geweigerd via generieke account- of routeguardafhandeling.
Verwijdering aangevraagdDe gebruiker heeft de eigen verwijderactie definitief bevestigd.UC-GEN-ACC-004 gevolgd door UC-GEN-ACC-005.
Lokale sessie beëindigdDe OefenHub-applicatiesessie is beëindigd of ongeldig.Publieke context of opnieuw inloggen via UC-GEN-ACC-002.

Bijzondere regels

OnderwerpRegel
Identity providerAuthenticatie, wachtwoorden, wachtwoord-reset, e-mailverificatie, credential lifecycle en primaire sessie blijven buiten OefenHub.
ExternalIdUsers.ExternalId is de stabiele koppelsleutel naar de identity provider en mag niet via de GUI wijzigbaar zijn.
IdempotentieProvisioning op dezelfde ExternalId mag nooit meerdere interne Users-records opleveren.
Actief accountUsers.IsActive = false blokkeert reguliere OefenHub-toegang, ook wanneer de identity provider succesvol authenticeert.
Laatste activiteitUsers.LastSeenAtUtc wordt alleen bijgewerkt bij succesvolle sessieverwerking voor een actief intern account.
RollenAlleen actieve roltoekenningen tellen mee voor frontendcontext en autorisatie.
Zonder rolEen gebruiker zonder actieve rolcontext krijgt geen leerling-, ouder/voogd-, docent- of beheerderfrontpage.
Verplicht niveauOntbrekend verplicht niveau wordt niet automatisch ingevuld, maar afgehandeld via de bestaande profielusecase.
ToegankelijkheidNa login zijn waarden uit UserSettings leidend; browserwaarden zijn afgeleid en mogen geen identiteit of autorisatie bevatten.
Pending uitnodigingenRelatie-uitnodigingen op e-mailadres mogen pas aan een gebruiker worden gekoppeld nadat een intern Users.Id bestaat.
SysteemberichtenUitnodigingsgerelateerde systeemberichten vereisen een interne ontvanger en worden niet aangemaakt voor onbekende e-mailadressen.
Reguliere loginReguliere login maakt geen relaties, relatie-uitnodigingen, systeemberichten, tickets, privéberichten of systeemnotificaties aan.
AccountverwijderingVoor eindgebruikers bestaat geen tussenstatus “verwijderd maar nog niet geanonimiseerd”; de interne verwijderflow leidt direct tot anonimisering en opruiming.
HistorieAfgeronde oefengeschiedenis en auditinformatie blijven herleidbaar onder geanonimiseerde identiteit waar functioneel noodzakelijk.
SessietabelVoor normale login, sessieverwerking en logout wordt geen aparte OefenHub-domeinsessietabel geïntroduceerd.
PopupsUsecases verwijzen alleen naar PopupKey. Titel, tekst, knoppen, inputvelden en theme staan centraal in het popup-register en popup-themes.

Popupverwijzingen

UsecasePopupgebruik
UC-GEN-ACC-001Niet van toepassing. Provisioning gebruikt geen domeinspecifieke popup.
UC-GEN-ACC-002Niet van toepassing. Login- en sessiefouten verlopen via identity provider, routeguard of generieke toegangafhandeling.
UC-GEN-ACC-003Niet van toepassing binnen deze accountusecase. Eventuele profiel- of niveauwaarschuwingen horen bij de betreffende profielusecases.
UC-GEN-ACC-004Gebruikt accountverwijdering-popups, waaronder bevestiging, blokkade en foutafhandeling. De inhoud staat in het popup-register.
UC-GEN-ACC-005Niet van toepassing. Dit is een interne systeemverwerking zonder eigen schermflow.
UC-GEN-ACC-006Niet van toepassing. Logout gebruikt routeguard-, sign-out- en identity-providerafhandeling.

Diagramgebruik binnen account-usecases

De account-usecases gebruiken diagrammen alleen wanneer zij het proces duidelijker maken.

DiagramtypeGebruik
Sequence diagramVoor interacties tussen gebruiker, frontend, backend, identity provider, database, berichtenservice, accountservice, routeguard en realtime laag.
State diagramAlleen wanneer een persistent statusobject wordt geraakt. Accounttoegang zelf gebruikt geen aparte accountstatus naast Users.IsActive.
Decision flowVoor validatievolgorde, routekeuzes, onvolledige accountcontext, gedeactiveerde accounts en verwijderblokkades.
Data lifecycleVoor inzicht in welke entiteiten ontstaan, bewust niet ontstaan, geanonimiseerd worden of behouden blijven na accountverwijdering.