Skip to main content

UC-BEH-ACC-005 — Account tijdelijk uitschakelen

1. Kerngegevens

VeldWaarde
Usecase-IDUC-BEH-ACC-005
NaamAccount tijdelijk uitschakelen
DomeinBeheerder / Accountbeheer
Primaire actorBeheerder
Secundaire actor(en)Frontend, backend, database, autorisatiecomponent, identity-providerkoppeling, accountlogkanaal
RolcontextActieve beheerdercontext; server-side bepaald vanuit de ingelogde gebruiker
Betrokken schermenAccounts beheren > Accountdetail > Lifecycle
Gerelateerde usecasesUC-BEH-ACC-001, UC-BEH-ACC-002, UC-BEH-ACC-003, UC-BEH-ACC-004, UC-BEH-ACC-006, UC-BEH-ACC-007, UC-BEH-ACC-008, UC-BEH-ACC-009, UC-BEH-ACC-010, UC-GEN-ACC-001, UC-GEN-ACC-002, UC-GEN-ACC-005
Primaire entiteitenUsers, Roles, UserRoles, UserSettings, ProfileAvatars, accountlogkanaal
Secundaire entiteiten / eventsUserRelationships, RelationshipInvitations, TeacherLevels, TeacherLevelAuthorizations, LevelCollaborators, ExerciseRuns, LiveViewAudit, SystemMessages, PrivateMessageThreads, Tickets
Gerelateerde popupsPOP-BEH-ACC-DEACTIVATE-CONFIRM
PopupregisterOntwerpbronnen — Popup-register
MoSCoWMust

2. Omschrijving

De usecase beschrijft hoe een beheerder een intern OefenHub-account tijdelijk uitschakelt. Uitschakelen zet Users.IsActive op false en blokkeert reguliere OefenHub-toegang, maar is geen anonimisering en geen verwijdering van het identity-provideraccount.

De actie vereist een expliciete reden en wordt accountlogmatig vastgelegd. Bestaande historische gegevens blijven behouden. Afhankelijk van actieve realtime-contexten worden lokale applicatiecontexten en SignalR-subscriptions beëindigd of ongeldig gemaakt.

Deactiveren is bedoeld als omkeerbare beheermaatregel. Structurele verwijdering en anonimisering verlopen via UC-BEH-ACC-007 of de generieke selfservice-accountverwijdering.

Uitgangspunten

  • Users.IsActive = false blokkeert reguliere OefenHub-toegang.
  • De identity provider blijft buiten deze actie.
  • Deactiveren is omkeerbaar via heractiveren.
  • Een reden is verplicht.
  • Actieve applicatiecontexten worden veilig beëindigd of ongeldig gemaakt.

3. Scope

Deze usecase beschrijft:

  • Tijdelijk uitschakelen van één intern account.
  • Vastleggen van reden in accountlogkanaal.
  • Blokkeren van toekomstige applicatiesessies via Users.IsActive = false.
  • Ongeldig maken of beëindigen van actieve OefenHub-frontendcontext waar mogelijk.
  • Afhandelen van open LiveViewAudit wanneer de gedeactiveerde gebruiker meekijkt.
  • Behouden van historie, relaties en resultaten als historische data.

Deze usecase beschrijft niet:

  • Wachtwoorden, tokens, secrets, identity-provider-sessies of credentialstatus beheren.
  • Een Keycloak- of identity-provideraccount rechtstreeks wijzigen of verwijderen.
  • Vrij relatiebeheer tussen gebruikers uitvoeren; relatieflows blijven bronhoudend in het relatiedomein.
  • Profielwijzigingen als selfservice-gebruikersflow dupliceren; eigen profielbeheer blijft bronhoudend in generiek/profiel.
  • Popupteksten, knopteksten of inputlabels specificeren; usecases verwijzen uitsluitend naar PopupKey.
  • Persoonsgegevens anonimiseren; dit hoort bij UC-BEH-ACC-007.
  • Account hard verwijderen.
  • Relaties en afhankelijkheden breed opschonen alsof het account verwijderd wordt.
  • Identity-provideraccount deactiveren of verwijderen.

3.1 Afbakening met aangrenzende domeinen

OnderdeelAfbakening
Generiek / AccountLogin, provisioning, logout en selfservice-accountverwijdering blijven bronhoudend in het generieke accountdomein.
Generiek / Profiel en voorkeurenEigen profiel- en voorkeurenbeheer blijft gebruikergericht; accountbeheer bevat alleen beheerdercorrecties en uitzonderingsacties.
Generiek / RelatiesRelatie-uitnodigingen, acceptatie en normale ontkoppeling blijven in het relatiedomein; accountbeheer kan wel afhankelijke toegang beëindigen bij lifecycle-acties.
Beheerder / DocentondersteuningDocentstructuur, leerlingtoegang en collaborators worden daar supportmatig beheerd; accountbeheer ziet accountbrede identiteit, rollen en lifecycle.
Identity providerAuthenticatie, wachtwoorden, verificatie, tokens en credentials blijven buiten OefenHub-accountbeheer.

4. Pre-condities

IDVoorwaarde
PRE-001De gebruiker is succesvol ingelogd in OefenHub.
PRE-002De backend heeft server-side vastgesteld dat de gebruiker een actieve beheerderrol heeft.
PRE-003De beheerder bevindt zich binnen Accounts beheren of een onderliggende accountbeheerroute.
PRE-004Clientstate, routeparameters of verborgen formuliervelden bepalen nooit welk account gewijzigd mag worden.
PRE-005De identity provider blijft bronhouder voor authenticatie, wachtwoorden, tokens, sessies en credential lifecycle.
PRE-006De beheerder heeft accountdetail geopend.
PRE-007Het doelaccount bestaat en is nog actief.
PRE-008De beheerder heeft de gevolgen kunnen bekijken.
PRE-009Er is vastgesteld dat de actie niet het laatste actieve beheerdersaccount uitschakelt.

5. Post-condities

IDResultaat
POST-001Users.IsActive van het doelaccount is false.
POST-002De reden en actor zijn accountlogmatig vastgelegd.
POST-003Reguliere OefenHub-toegang voor het account is geblokkeerd.
POST-004Actieve OefenHub-contexten zijn beëindigd of worden bij volgende servercall geweigerd.
POST-005Identity-providercredentials zijn ongewijzigd.

6. Trigger

De usecase start wanneer de beheerder in accountdetail de actie Account uitschakelen kiest.

7. Normale processtroom

StapActorComponent / contextActieResultaatData / controle
1BeheerderAccountdetailKiest Account uitschakelen.De frontend opent de bevestigingsflow.Users.Id.
2BackendAutorisatiecomponentControleert beheerdercontext.Alleen beheerder mag deactiveren.Server-side controle.
3BackendAccountServiceLaadt doelaccount en actuele status.Actief account wordt vastgesteld.Users.IsActive.
4BackendAccountServiceControleert beheerderbescherming en afhankelijkheden.Risicovolle blokkades worden bepaald.UserRoles, open context.
5FrontendPopupcomponentVraagt bevestiging en reden.Reden is verplicht.POP-BEH-ACC-DEACTIVATE-CONFIRM.
6BeheerderPopupcomponentBevestigt met reden.De backend ontvangt reden.Bevestiging.
7BackendAccountServiceZet Users.IsActive op false.Reguliere toegang wordt geblokkeerd.Users.
8BackendRealtimeServiceBeëindigt of invalideert actieve OefenHub-contexten.SignalR-subscriptions en live meekijkcontexten worden veilig afgesloten.Realtime context en LiveViewAudit.
9BackendAccountlogLegt deactivering vast.Actor, doelaccount, reden, oude en nieuwe status zijn auditbaar.Accountlogkanaal.
10FrontendAccountdetailToont gedeactiveerde status.Vervolgactie Heractiveren wordt beschikbaar indien toegestaan.Nieuwe status.

8. Alternatieve en exceptionele processtromen

StapSituatieAfhandelingPopupKeyDatagevolg
2Actor is geen beheerder.De actie wordt geweigerd.Niet van toepassing.Geen.
3Account is al gedeactiveerd.De actie wordt niet opnieuw uitgevoerd; detail wordt vernieuwd.Niet van toepassing.Geen.
4Doelaccount is laatste actieve beheerder.Deactiveren wordt geblokkeerd.Niet van toepassing.Geen.
5Reden ontbreekt.Bevestigen blijft onmogelijk.POP-BEH-ACC-DEACTIVATE-CONFIRM.Geen.
6Beheerder annuleert.Er wordt niets opgeslagen.POP-BEH-ACC-DEACTIVATE-CONFIRM.Geen.
8Realtime-context is niet volledig bereikbaar.Users.IsActive blijft leidend; open contexten worden bij volgende serverinteractie geweigerd.Niet van toepassing.Users.IsActive = false blijft staan.

9. Business rules

IDBusiness rule
BR-001Deactiveren zet Users.IsActive op false en is geen hard delete.
BR-002Een gedeactiveerd account kan niet regulier in OefenHub gebruiken, ook niet na geldige identity-providerlogin.
BR-003Deactiveren vereist een reden.
BR-004Het identity-provideraccount wordt niet gewijzigd.
BR-005Het laatste actieve beheerdersaccount mag niet gedeactiveerd worden.
BR-006Historische data blijft bewaard en zichtbaar binnen geldende autorisaties.
BR-007Open LiveViewAudit-records worden beëindigd wanneer de gedeactiveerde gebruiker live meekijkt.

10. Datavalidatie

IDValidatie
VAL-001Doelaccount moet bestaan en actief zijn.
VAL-002Actor moet op moment van opslaan beheerder zijn.
VAL-003Reden is verplicht.
VAL-004Laatste-beheerdercontrole is verplicht bij accounts met Admin-rol.
VAL-005Users.IsActive wordt server-side gewijzigd en niet uit clientpayload overgenomen.
VAL-006Concurrente statuswijziging wordt vlak voor opslaan opnieuw gecontroleerd.

11. Datamutaties en events

OnderdeelMutatie / event
UsersIsActive wordt false en UpdatedAtUtc wordt bijgewerkt.
LiveViewAuditOpen meekijkrecords van de gedeactiveerde gebruiker krijgen waar van toepassing een eindmoment.
AccountlogkanaalDeactivering wordt met reden vastgelegd.

12. Geen datamutaties

Object / gegevenNiet wijzigen
Identity providerGeen credential- of accountstatuswijziging.
UserRolesRoltoekenningen blijven historisch en actief geregistreerd tenzij aparte rolflow volgt.
UserSettingsInstellingen blijven bewaard.
Relaties en autorisatiesGeen brede cleanup zoals bij anonimisering.
ExerciseRuns en berichtenHistorische inhoud blijft bestaan.

13. State diagram

14. Decision flow

15. Data lifecycle diagram

16. Sequence diagrammen

17. Popupverwijzingen

PopupKeyGebruik
POP-BEH-ACC-DEACTIVATE-CONFIRMBevestiging met verplichte reden voor tijdelijk uitschakelen.

Popupinhoud, knopteksten, themakeuzes en eventuele inputlabels blijven bronhoudend in het centrale popupregister en popup-themes.

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

DocumentAfleiding
Functioneel OntwerpBeheerder kan accounts tijdelijk uitschakelen als omkeerbare lifecycleactie.
Technisch OntwerpTechnisch Ontwerp: identiteit en accountlifecycle, autorisatie, logging en foutafhandeling en privacy en anonimisering beschrijven de technische uitwerking. Users.IsActive blokkeert applicatietoegang; actieve OefenHub-contexten worden veilig beëindigd of geweigerd.
Software Requirements SpecificationSRS moet redenplicht, laatste-beheerderbescherming en identity-providerafbakening vastleggen.
DatabaseWijzigt Users.IsActive; schrijft accountlog en eventueel LiveViewAudit-eindmoment.

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
UC-BEH-ACC-005-REQ-001SRS-ACC-002
SRS-ADM-002
SRS-ADM-005
SRS-ADM-001
AC-ACC-002
AC-ADM-002
AC-ADM-005
AC-ADM-001
Een beheerder een actief account tijdelijk kunnen laten uitschakelen
UC-BEH-ACC-005-REQ-002SRS-ADM-005
SRS-ADM-001
AC-ADM-005
AC-ADM-001
Voor uitschakelen een reden verplicht stellen
UC-BEH-ACC-005-REQ-003SRS-ADM-001
AC-ADM-001
Users.IsActive op false zetten bij deactiveren
UC-BEH-ACC-005-REQ-004SRS-AUTH-001
SRS-ACC-002
SRS-ADM-002
SRS-ADM-001
AC-AUTH-001
AC-ACC-002
AC-ADM-002
AC-ADM-001
Gedeactiveerde accounts blokkeren bij reguliere OefenHub-toegang
UC-BEH-ACC-005-REQ-005SRS-ACC-002
SRS-ADM-002
SRS-ADM-001
AC-ACC-002
AC-ADM-002
AC-ADM-001
Het laatste actieve beheerdersaccount beschermen
UC-BEH-ACC-005-REQ-006SRS-ADM-001
SRS-NFR-SEC-001
AC-ADM-001
AC-NFR-SEC-001
Actieve OefenHub-contexten veilig beëindigen of ongeldig maken
UC-BEH-ACC-005-REQ-007SRS-ADM-001
SRS-NFR-SEC-001
SRS-NFR-PRV-001
SRS-ARCH-002
AC-ADM-001
AC-NFR-SEC-001
AC-NFR-PRV-001
AC-ARCH-002
Bij deactiveren geen identity-providercredentials wijzigen