Skip to main content

4. Accounts

4.1 Schermafbeelding

oefenhub_beheerder_03_accounts_v1_2.png

4.2 Scherm meta data

VeldWaarde
Scherm-IDSCH-BEH-03-01
SchermnaamAccounts — landingsview en accountbeheerstate
Doelgroep / onderdeelBeheerder
Bronbestandoefenhub_beheerder_03_accounts_V1_2.html
MockupversieV1.2
Screenshotbestandoefenhub_beheerder_03_accounts_v1_2.png
Processtap / contextBeheerder opent het accountsoverzicht vanuit de beheerdernavigatie om accounts te zoeken, te selecteren en vanuit één geselecteerd account door te gaan naar gericht accountbeheer.
DocumentatiestatusUitgewerkt op basis van HTML-mockup, PNG-screenshot, Functioneel Ontwerp, Technisch Ontwerp, Software Requirements Specification en ondersteunende documentatie.
OpmerkingenDe screenshot toont de landingsweergave met overzicht, filters en detailpaneel. De HTML-bron bevat daarnaast de in-page beheerstate die na Open beheer zichtbaar wordt. Header, beheerdernavigatie, profielmenu, berichtenteller en footer vallen buiten deze schermuitwerking. Alle zichtbare namen, e-mailadressen, datums, rollen, aantallen en wijzigingsregels zijn dynamische voorbeeldwaarden.
Route / URL-patroonBeheerderroute voor accountsoverzicht en accountbeheerstate, functioneel bijvoorbeeld /beheer/accounts. De technische route wordt door de applicatieroutering bepaald.
Autorisatie / vereiste rol-contextActieve beheerdercontext. Alle zichtbare gegevens en acties moeten server-side worden afgedwongen; frontend-zichtbaarheid is geen beveiligingslaag.
Primair domeinobject / hoofdentiteitUsers als hoofdentiteit, met UserRoles, Roles, UserRelationships, RelationshipTypes, RelationshipEvents, accountgerelateerde historie en identity-providerstatus.
Gerelateerde schermen / navigatieBeheerder-frontpage, Meldingen overzicht, generiek profiel, relatiebeheer, verdiepende accountbeheercontext en accountgerelateerde audit-/loggingweergaven.
Data-karakterBeheer- en mutatievoorbereidende pagina: de landingsweergave is vooral uitlezend en selecterend; de beheerstate bevat gerichte mutaties voor basisgegevens, status, rollen en relaties.

4.3 Functionele beschrijving

Het scherm Accounts is de beheerderwerkpagina voor het vinden, beoordelen en gericht beheren van OefenHub-accounts. De pagina combineert een overzichtsdeel met een detaildeel. Links zoekt en filtert de beheerder accounts; rechts verschijnt de samenvatting van het geselecteerde account. Vanuit die selectie kan de beheerder met Open beheer overschakelen naar een verdiepende beheerstate voor hetzelfde account.

De screenshot toont de overzichtsweergave. De HTML-bron bevat daarnaast de beheerstate die na Open beheer wordt getoond. Die beheerstate blijft functioneel onderdeel van deze HTML-mockup, omdat de bron daarin tabs bevat voor Intro / uitleg, Basis gegevens, Rollen, Relatiebeheer en Geschiedenis. De beheerstate vervangt in die toestand het overzicht en de filterstrook; met Terug naar overzicht keert de beheerder terug naar de landingsweergave.

4.3.1 Scope en afbakening

Binnen deze schermdocumentatie vallen:

  • breadcrumb Home > Accounts;
  • introblok Accounts beheren;
  • zoek-, status- en sorteerfilters;
  • gebruikersoverzicht met accountkaarten;
  • detailpaneel van het geselecteerde account;
  • recente wijzigingen van het geselecteerde account;
  • de in-page beheerstate die via Open beheer wordt geopend;
  • tabs en acties binnen die beheerstate voor basisgegevens, rollen, relaties en geschiedenis.

Buiten scope vallen:

  • de algemene beheerderheader en navigatieknoppen;
  • het berichtenicoon en eventuele badge;
  • het profielmenu;
  • de footer;
  • technische Keycloak-schermen voor credentialbeheer;
  • beheer van wachtwoorden, sessies of authenticatiecredentials binnen Keycloak zelf.

OefenHub beheert het applicatieprofiel, rollen, relaties, instellingen en domeincontext. Authenticatie, wachtwoorden, sessies en credential lifecycle blijven bij de onderliggende identity provider. Dit betekent dat deze pagina accountgegevens kan tonen of accountstatus kan beïnvloeden, maar niet zelf wachtwoordinhoud of authenticatiegeheimen beheert.

4.3.2 Interpretatie van mockupwaarden

Waarden zoals Noor van Dijk, Eva Jansen, Milan de Vries, noor@example.nl, 15 jan 2025, Vandaag · 08:41, 0 docentrelaties, 0 ouder-/voogdrelaties en de getoonde recente wijzigingen zijn voorbeelddata. Zij beschrijven vorm en gedrag, maar mogen niet als vaste productiegegevens worden gebruikt.

Ook filterwaarden, statuslabels en rolnamen zijn dynamisch uit het account-, rollen- en relatiedomein afgeleid. De beschikbare statusfilterwaarden en sorteeropties zijn functioneel begrensd, maar de lijstinhoud en geselecteerde accountgegevens zijn volledig afhankelijk van de actuele database en autorisatiecontext.

4.3.3 Overzichtsweergave

De overzichtsweergave bestaat uit een filterstrook en een hoofdkaart met twee kolommen.

De filterstrook ondersteunt:

  • zoeken op naam of e-mailadres;
  • filteren op accountstatus;
  • sorteren op naam of laatste login.

De gebruikerslijst toont accountkaarten. Per kaart zijn zichtbaar:

  • naam van het account;
  • statusbadge, zoals Actief of Geblokkeerd;
  • rolindicaties, zoals Docent, Beheerder of Leerling;
  • laatste login of laatste bekende activiteit in compacte vorm.

Klikken op een accountkaart selecteert dat account en werkt het rechter detailpaneel bij. De geselecteerde kaart krijgt een duidelijke visuele selectie. De selectie bepaalt uitsluitend welke gegevens rechts getoond worden; mutaties vinden pas plaats in de beheerstate of via expliciete vervolgacties.

Het detailpaneel toont kerngegevens van het geselecteerde account:

  • naam;
  • e-mailadres;
  • status;
  • aanmaakdatum;
  • laatste login;
  • aantal docentrelaties;
  • aantal ouder-/voogdrelaties;
  • recente wijzigingen van de laatste 60 dagen.

De relatie-aantallen zijn samenvattende beheerindicatoren. Zij vervangen geen volledige relatiebeheerweergave. Voor detailinformatie over individuele relaties gebruikt de beheerder de verdiepende beheerstate of een daarvoor bedoelde relatiebeheercontext.

4.3.4 Zoek-, filter- en sorteerlogica

Zoeken werkt binnen de actuele statusfiltercontext. Een lege zoekterm betekent dat de lijst niet door tekstinvoer wordt beperkt. De zoekterm wordt server-side veilig verwerkt en mag niet als HTML worden geïnterpreteerd of in logging terechtkomen op een manier die onnodig persoonsgegevens verspreidt.

Het statusfilter ondersteunt in de mockup de waarden:

  • Alle statussen;
  • Actief;
  • Geblokkeerd.

Het label Geblokkeerd is een gebruikersgericht beheerlabel. Technisch kan dit worden afgeleid uit de OefenHub-accountstatus, Users.IsActive en/of de accountstatus in de identity provider. Welke technische bron leidend is voor blokkeren of deactiveren moet in de service- en datalaag consequent worden toegepast; de UI mag niet zelf bepalen of een account werkelijk toegang heeft.

De sortering ondersteunt in de mockup:

  • Naam (A-Z);
  • Laatste login.

Sortering op naam gebruikt de functionele weergavenaam of samengestelde naam. Sortering op laatste login gebruikt de laatst bekende activiteit of loginwaarde, zoals Users.LastSeenAtUtc. Accounts zonder bekende laatste activiteit moeten voorspelbaar worden geplaatst volgens de gekozen sorteerregel.

4.3.5 Accountdetails en recente wijzigingen

De accountdetails zijn read-only in de landingsweergave. Zij geven de beheerder context voordat een gerichte beheeractie wordt geopend. Het detailpaneel mag geen volledige accountmutatie forceren vanuit de overzichtsweergave.

De sectie Recente wijzigingen (laatste 60 dagen) toont een compacte chronologische weergave van relevante accountwijzigingen. Deze lijst is bedoeld voor snelle oriëntatie. De volledige accountgeschiedenis is beschikbaar in de beheerstate onder Geschiedenis.

Recente wijzigingen kunnen voortkomen uit meerdere bronnen, zoals profielwijzigingen, roltoekenningen, rolintrekkingen, relatie-events en accountlifecycle-acties. De weergave toont per regel minimaal:

  • datum en tijd;
  • samenvatting van de wijziging;
  • actor of systeemactie.

De lijst toont geen technische identifiers zoals GUID’s, role-id’s, relationship-id’s of identity-provider-id’s. Waar een actor is geanonimiseerd of niet meer actief is, moet de weergave nog steeds begrijpelijk blijven zonder persoonsgegevens onnodig te reconstrueren.

4.3.6 Beheerstate na Open beheer

De actie Open beheer opent de verdiepende beheerstate voor het geselecteerde account. De HTML-bron toont dat deze state de overzichts- en filterdelen verbergt en een tabstructuur toont. De beheerstate bevat:

  • Intro / uitleg: uitlegt welke beheeronderdelen beschikbaar zijn en toont context over het account;
  • Basis gegevens: ondersteunt het wijzigen van naam, e-mailadres en accountstatus;
  • Rollen: toont actieve rollen en ondersteunt rol toevoegen of verwijderen binnen de geldende combinatieregels;
  • Relatiebeheer: toont actieve relaties en ondersteunt het verwijderen of ontkoppelen waar dat is toegestaan;
  • Geschiedenis: toont de volledige accountgeschiedenis zonder de 60-dagenbeperking van de landingsweergave.

De beheerstate gebruikt dezelfde geselecteerde gebruiker als context. Bij terugkeer naar het overzicht moet de selectie behouden blijven waar mogelijk, tenzij de accountstatus of filtercontext zodanig is gewijzigd dat het account niet meer binnen de actieve lijst valt.

4.3.7 Basisgegevens beheren

In de tab Basis gegevens kan een beheerder de beheerbare accountgegevens aanpassen. In de mockup zijn zichtbaar:

  • naam;
  • e-mailadres;
  • status;
  • laatste login als read-only waarde;
  • Wijzigingen opslaan;
  • Blokkeren / activeren.

E-mailadres is in OefenHub functioneel gekoppeld aan authenticatie en uitnodigingen. Omdat de identity provider bronhouder is voor authenticatie, moet een e-mailwijziging altijd consistent blijven met de identity-providerafhandeling. De UI mag geen situatie creëren waarin Users.Email, Keycloak-accountgegevens en uitnodigingslogica elkaar tegenspreken.

De actie Blokkeren / activeren mag niet alleen een visuele status wijzigen. Zij moet leiden tot een server-side accountstatusmutatie met audit/logging, zodat toegang en weergave consistent blijven.

4.3.8 Rollen beheren

De tab Rollen toont actieve rollen met activeringsdatum en acties. In de mockup zijn Beheerder en Docent zichtbaar en is er een rij Nieuwe rol toevoegen.

Rolbeheer moet de combinatieregels afdwingen:

  • de rol Leerling mag niet gecombineerd worden met Ouder/voogd, Docent, Beheerder of TestDocent;
  • Ouder/voogd, Docent en Beheerder mogen onderling gecombineerd voorkomen;
  • niet-publieke rollen zoals Beheerder en TestDocent mogen alleen via beheer worden toegekend;
  • actieve UserId + RoleId-combinaties mogen niet dubbel actief bestaan.

Het verwijderen van een rol is een rolintrekking, geen hard delete van historische roltoekenning. Intrekking moet actor, tijdstip en rolcontext behouden. Wanneer rolwijzigingen gevolgen hebben voor automatische relaties, zoals een AdminAdmin-relatie bij beheerderrollen, moeten die relatie-events en eventuele systeemacties eveneens herleidbaar zijn.

4.3.9 Relatiebeheer binnen accountbeheer

De tab Relatiebeheer toont relaties van het geselecteerde account. De mockup bevat onder meer:

  • AdminAdmin · Eva Jansen met toelichting dat deze automatisch actief blijft zolang beide gebruikers beheerder zijn;
  • Docent-Docent · Mark Peters als actieve docentrelatie;
  • acties zoals Ontkoppel of Verwijder.

Nieuwe relaties worden vanuit deze beheerstate niet aangemaakt. De beheerstate is bedoeld voor inzicht en correctie op bestaande relaties. Relatievorming blijft functioneel via uitnodiging, acceptatie of systeemregels verlopen.

Voor AdminAdmin geldt een bijzondere regel: zolang beide gebruikers een actieve beheerderrol hebben, is de relatie systeemgedreven en mag handmatige ontkoppeling niet actief zijn. De UI moet in dat geval de actie uitschakelen of blokkeren met een begrijpelijke toelichting. Wanneer één van beide gebruikers geen beheerder meer is, kan de relatie volgens de relationele lifecycle alsnog handmatig ontkoppelbaar worden.

Ontkoppelen of verwijderen van een relatie is geen hard delete. De relatie wordt gedeactiveerd met actor, tijdstip en reden waar die reden functioneel vereist is. Relatie-events blijven append-only beschikbaar.

4.3.10 Geschiedenis

De tab Geschiedenis toont de volledige accountgeschiedenis. Deze weergave is uitgebreider dan Recente wijzigingen (laatste 60 dagen) en bevat account-, rol- en relatiegebeurtenissen samen in chronologische volgorde.

De geschiedenis bevat compacte auditregels. Uitgebreide technische details of gevoelige logging horen niet vrij zichtbaar op deze pagina, tenzij zij functioneel noodzakelijk en geautoriseerd zijn. Accountlifecycle-acties zoals aanmaken, blokkeren, activeren, rolwijzigingen, relatie-events, e-mailwijzigingen en anonimisering moeten herleidbaar blijven volgens de account- en auditregels.

4.3.11 Leegstaten, foutstaten en disabled states

Wanneer de actieve zoek- en filterselectie geen accounts oplevert, toont de lijst een lege staat met uitleg dat er geen accounts aan de criteria voldoen. Het detailpaneel toont dan geen vorige selectie meer of toont een neutrale melding dat eerst een account geselecteerd moet worden.

Wanneer geen account is geselecteerd, is Open beheer niet beschikbaar. Wanneer de geselecteerde account niet langer bestaat binnen de actieve filtercontext, moet de selectie worden vernieuwd of duidelijk worden teruggezet.

Wanneer accountgegevens niet geladen kunnen worden, toont het detailpaneel een foutmelding zonder technische stacktrace. Een gedeeltelijke storing in recente wijzigingen mag de basisgegevens niet blokkeren; in dat geval toont alleen de wijzigingenlijst een passende fout- of niet-beschikbaarmelding.

Wanneer de beheerder een mutatie probeert die niet is toegestaan door rolcombinaties, relatiebeperkingen of server-side autorisatie, moet de server de mutatie weigeren en moet de UI een begrijpelijke foutmelding tonen. Een disabled knop in de frontend is ondersteunend, maar nooit voldoende beveiliging.

4.3.12 Responsief gedrag

Bij voldoende schermbreedte staan accountlijst en detailpaneel naast elkaar. Bij smallere schermen mogen zij onder elkaar worden geplaatst. De lijst blijft leidend: de beheerder moet eerst kunnen zoeken en selecteren voordat accountdetails worden getoond. De beheerstate met tabs mag responsief onder elkaar stapelen, zolang duidelijk blijft welke tab actief is en welke accountcontext wordt beheerd.

4.4 UI-elementen en velddefinities

Element-IDTypeGUI-verwijzingOmschrijvingZichtbaar labelOpmerkingTechnische naam
SCH-BEH-03-01-N01SectionBreadcrumbNavigatiecontext binnen de beheerderpagina.Home > AccountsHeader en hoofdbeheerdernavigatie vallen buiten scope.AccountsBreadcrumb
SCH-BEH-03-01-S01SectionIntroblokInleidend blok met schermtitel en toelichting op het accountsoverzicht.Accounts beherenTekst kan beheerbaar zijn; structuur blijft codegedreven.AccountsOverviewIntroSection
SCH-BEH-03-01-S02SectionFilterstrookGroepeert zoeken, statusfilter en sortering.Filtert de gebruikerslijst.AccountFilterBarSection
SCH-BEH-03-01-F01FieldFilterstrook — zoekenTekstinvoer om accounts te zoeken op naam of e-mailadres.ZoekenMockupwaarde Noor is voorbeelddata.AccountSearchInput
SCH-BEH-03-01-F02Field / placeholderFilterstrook — zoekenPlaceholdertekst in het zoekveld.Zoek op naam of e-mailadresRead-only labeltekst.AccountSearchPlaceholder
SCH-BEH-03-01-DD01DropdownFilterstrook — statusSelectielijst voor filteren op accountstatus.Alle statussenOndersteunt ten minste All, Active, Blocked.AccountStatusFilterDropdown
SCH-BEH-03-01-DD02DropdownFilterstrook — sorteringSelectielijst voor sorteervolgorde van de accountlijst.Naam (A-Z)Ondersteunt ten minste naam en laatste login.AccountSortOrderDropdown
SCH-BEH-03-01-S03SectionGebruikersoverzichtLinkerpaneel met accountkaarten die aan de actieve filters voldoen.GebruikersoverzichtScrollbare lijst bij meer resultaten.AccountsOverviewSection
SCH-BEH-03-01-T01Table/Card listGebruikersoverzicht — accountkaartenLijst met accounts in kaartvorm.<accountkaart>Dynamisch op basis van filters.AccountsCardList
SCH-BEH-03-01-A01ActionGebruikersoverzicht — accountkaartSelecteert een account en toont de details rechts.De geselecteerde kaart krijgt visuele focus/selectie.SelectAccountCardAction
SCH-BEH-03-01-F03FieldAccountkaart — naamNaam van het account in de lijst.<naam>Dynamische weergavenaam.AccountCardDisplayName
SCH-BEH-03-01-F04Field / badgeAccountkaart — statusStatusbadge van het account.Actief / GeblokkeerdAfgeleid statuslabel.AccountCardStatusBadge
SCH-BEH-03-01-F05FieldAccountkaart — rollenCompacte rolindicaties bij het account.<rolnamen>Meerdere rollen mogelijk, behalve verboden combinaties met leerling.AccountCardRoleBadges
SCH-BEH-03-01-F06FieldAccountkaart — laatste loginCompacte laatste-loginweergave.Laatste login: <waarde>Afgeleid uit laatst bekende activiteit/login.AccountCardLastLoginDisplay
SCH-BEH-03-01-S04SectionAccountdetailsRechterpaneel met kerngegevens van het geselecteerde account.AccountdetailsRead-only in landingsweergave.AccountDetailsSection
SCH-BEH-03-01-F07FieldAccountdetails — naamNaam van het geselecteerde account.NaamRead-only samenvatting.SelectedAccountNameValue
SCH-BEH-03-01-F08FieldAccountdetails — e-mailadresE-mailadres van het geselecteerde account.E-mailadresRead-only samenvatting in landingsweergave.SelectedAccountEmailValue
SCH-BEH-03-01-F09FieldAccountdetails — statusActuele accountstatus.StatusRead-only samenvatting in landingsweergave.SelectedAccountStatusValue
SCH-BEH-03-01-F10FieldAccountdetails — aanmaakdatumAanmaakdatum van het geselecteerde account.AanmaakdatumLokaal geformatteerde datum.SelectedAccountCreatedAtValue
SCH-BEH-03-01-F11FieldAccountdetails — laatste loginLaatste bekende login of activiteit.Laatste loginKan ontbreken wanneer nog geen activiteit bekend is.SelectedAccountLastLoginValue
SCH-BEH-03-01-F12FieldAccountdetails — aantal docentenAantal actieve docentrelaties voor het geselecteerde account.Aantal docentenSamenvattende teller.SelectedAccountTeacherRelationCountValue
SCH-BEH-03-01-F13FieldAccountdetails — aantal ouders/voogdenAantal actieve ouder-/voogdrelaties voor het geselecteerde account.Aantal ouders/voogdenSamenvattende teller.SelectedAccountGuardianRelationCountValue
SCH-BEH-03-01-B01ButtonAccountdetailsOpent de verdiepende beheerstate van het geselecteerde account.Open beheerAlleen actief wanneer een account is geselecteerd.OpenAccountManagementButton
SCH-BEH-03-01-S05SectionRecente wijzigingenCompact historisch overzicht van recente accountwijzigingen.Recente wijzigingen (laatste 60 dagen)Beperkte oriëntatielijst; geen volledige geschiedenis.RecentAccountChangesSection
SCH-BEH-03-01-T02Table/Card listRecente wijzigingen — lijstChronologische lijst met recente wijzigingen.<wijzigingsregel>Toont datum/tijd, samenvatting en actor.RecentAccountChangesList
SCH-BEH-03-01-S06SectionAccountbeheerstateIn-page beheercontext die na Open beheer zichtbaar wordt.Accountbeheer · <naam>Vervangt overzicht/filter in dezelfde HTML-state.AccountManagementShell
SCH-BEH-03-01-B02ButtonAccountbeheerstate — headerKeert terug naar de overzichtsweergave.Terug naar overzichtBehoudt selectie waar mogelijk.ReturnToAccountsOverviewButton
SCH-BEH-03-01-TAB01TabAccountbeheerstate — tabsTab met uitleg en context.Intro / uitlegStandaard actief bij openen van beheerstate.AccountManagementIntroTab
SCH-BEH-03-01-TAB02TabAccountbeheerstate — tabsTab voor bewerken van basisgegevens.Basis gegevensBevat naam, e-mail en statusmutatie.AccountManagementBasicDataTab
SCH-BEH-03-01-TAB03TabAccountbeheerstate — tabsTab voor rolbeheer.RollenBevat rolverwijdering en toevoegen van rol.AccountManagementRolesTab
SCH-BEH-03-01-TAB04TabAccountbeheerstate — tabsTab voor relatiebeheer.RelatiebeheerToont bestaande relaties; nieuwe relaties worden hier niet aangemaakt.AccountManagementRelationsTab
SCH-BEH-03-01-TAB05TabAccountbeheerstate — tabsTab voor volledige accountgeschiedenis.GeschiedenisZonder 60-dagenbeperking.AccountManagementHistoryTab
SCH-BEH-03-01-S07SectionIntro / uitlegUitleg over beschikbare beheeronderdelen.Wat kun je hier doen?Bevat uitleg voor basisgegevens, rollen, relaties en geschiedenis.AccountManagementIntroSection
SCH-BEH-03-01-S08SectionIntro / uitleg — contextContextkaart van geselecteerd account.Account in contextToont status, laatste login en relatiesamenvatting.AccountContextSummarySection
SCH-BEH-03-01-FORM01FormBasis gegevensFormulier voor accountbasisgegevens.Bewerk basisgegevensMutaties worden pas verwerkt na opslaan.AccountBasicDataForm
SCH-BEH-03-01-F14FieldBasis gegevens — naamBewerkbare naamweergave.NaamServer-side validatie verplicht.AccountNameInput
SCH-BEH-03-01-F15FieldBasis gegevens — e-mailadresBewerkbaar e-mailadres.E-mailadresMoet consistent blijven met identity-providerstatus.AccountEmailInput
SCH-BEH-03-01-DD03DropdownBasis gegevens — statusKeuze voor accountstatus.StatusBijvoorbeeld Actief / Geblokkeerd.AccountStatusInput
SCH-BEH-03-01-F16FieldBasis gegevens — laatste loginRead-only laatste-loginwaarde.Laatste loginNiet bewerkbaar.AccountLastLoginReadonly
SCH-BEH-03-01-B03ButtonBasis gegevensSlaat gewijzigde basisgegevens op.Wijzigingen opslaanVereist server-side validatie en audit/logging.SaveAccountChangesButton
SCH-BEH-03-01-B04ButtonBasis gegevensWisselt account tussen blokkeren en activeren.Blokkeren / activerenZware accountstatusactie; server-side afhandeling vereist.ToggleAccountBlockedStateButton
SCH-BEH-03-01-S09SectionRollenLijst met actieve rollen en rolacties.RollenGebaseerd op UserRoles.AccountRolesSection
SCH-BEH-03-01-T03Table/Card listRollen — lijstLijst met rollen van het account.<rolregel>Toont rolnaam en actief-sindsdatum.AccountRolesList
SCH-BEH-03-01-A02ActionRollen — rolregelTrekt een actieve rol in.VerwijderenGeen hard delete; rolhistorie blijft bestaan.RemoveAccountRoleAction
SCH-BEH-03-01-DD04DropdownRollen — nieuwe rolSelectie van toe te voegen rol.Nieuwe rol toevoegenAlleen toegestane rollen selecteerbaar.NewRoleSelectionDropdown
SCH-BEH-03-01-B05ButtonRollen — nieuwe rolKent de geselecteerde rol toe aan het account.ToevoegenRespecteert rolcombinatieregels en niet-publieke rollen.AddAccountRoleButton
SCH-BEH-03-01-S10SectionRelatiebeheerLijst met bestaande relaties van het account.RelatiebeheerNieuwe relaties worden hier niet toegevoegd.AccountRelationsSection
SCH-BEH-03-01-T04Table/Card listRelatiebeheer — lijstLijst met actieve en relevante relaties.<relatieregel>Toont relatietype, wederpartij en status/toelichting.AccountRelationsList
SCH-BEH-03-01-A03ActionRelatiebeheer — relatieDeactiveert of ontkoppelt een bestaande relatie wanneer toegestaan.Ontkoppel / VerwijderServer-side regels bepalen beschikbaarheid.DeactivateAccountRelationshipAction
SCH-BEH-03-01-S11SectionGeschiedenisVolledige accountgeschiedenis.Volledige accountgeschiedenisChronologische auditweergave.FullAccountHistorySection
SCH-BEH-03-01-T05Table/Card listGeschiedenis — lijstLijst met account-, rol- en relatie-events.<geschiedenisregel>Geen technische identifiers tonen.FullAccountHistoryList
SCH-BEH-03-01-S12SectionGeschiedenis — samenvattingSamenvattingskaart bij de volledige geschiedenis.SamenvattingToont totalen, eerste registratie en laatste wijziging.AccountHistorySummarySection

4.5 Waardelagen

Element-IDGUI-verwijzingZichtbaar labelTechnische naamDatabronWaardebronDatatypeBewerkbaarValidatie / regel
SCH-BEH-03-01-N01BreadcrumbHome > AccountsAccountsBreadcrumbRouteconfiguratieAfgeleid uit beheerderrouteNavigation labelNeeGeen technische routeparameters of account-id tonen.
SCH-BEH-03-01-S01IntroblokAccounts beherenAccountsOverviewIntroSectionCodegedreven schermtekst of ContentBlocks indien beheerbaar gemaaktWeergavetekstString/rich textNee op deze viewStructuur blijft codegedreven; tekst veilig renderen.
SCH-BEH-03-01-F01ZoekenZoekenAccountSearchInputGebruikersinputZoekcriterium voor accountreadmodelStringJaZoekt op naam en e-mailadres; invoer veilig verwerken en niet als HTML renderen.
SCH-BEH-03-01-DD01StatusfilterAlle statussenAccountStatusFilterDropdownVooraf gedefinieerde filterset + accountstatusafleidingUser input voor filterEnumJaAlleen toegestane waarden All, Active, Blocked; standaard All.
SCH-BEH-03-01-DD02SorteringNaam (A-Z)AccountSortOrderDropdownVooraf gedefinieerde sorteeroptiesUser input voor sorteringEnumJaAlleen toegestane waarden zoals NameAsc en LastLogin; standaard NameAsc.
SCH-BEH-03-01-T01Gebruikersoverzicht<accountkaart>AccountsCardListUsers, UserRoles, Roles, Users.LastSeenAtUtc en accountstatus uit applicatie/identity-providercontextSamengesteld accountoverzichtCollectionNeeAlleen accounts tonen waarvoor de beheerder server-side inzagerecht heeft.
SCH-BEH-03-01-F03Accountkaart — naam<naam>AccountCardDisplayNameUsers.DisplayName, Users.FirstName, Users.MiddleName, Users.LastNameDatabasewaarde of samengestelde weergavenaamStringNeeNaam veilig encoden; geanonimiseerde accounts volgens anonimiseerregel tonen.
SCH-BEH-03-01-F04Accountkaart — statusActief / GeblokkeerdAccountCardStatusBadgeUsers.IsActive + accountstatus uit identity provider / applicatielaagAfgeleid statuslabelEnum/stringNeeStatusweergave moet overeenkomen met daadwerkelijke toegangsstatus.
SCH-BEH-03-01-F05Accountkaart — rollen<rolnamen>AccountCardRoleBadgesUserRoles.IsActive, Roles.Name, Roles.CodeActieve roltoekenningenCollection/stringNeeAlleen actieve rollen tonen; verboden combinaties mogen niet ontstaan.
SCH-BEH-03-01-F06Accountkaart — laatste loginLaatste login: <waarde>AccountCardLastLoginDisplayUsers.LastSeenAtUtcLokaal geformatteerde datum/tijd of relatieve weergaveDateTime display/stringNeeLege waarde begrijpelijk weergeven wanneer onbekend.
SCH-BEH-03-01-F07Accountdetails — naamNaamSelectedAccountNameValueUsers.DisplayName, Users.FirstName, Users.MiddleName, Users.LastNameDatabasewaarde of samengestelde weergavenaamStringNeeRead-only op landingsweergave.
SCH-BEH-03-01-F08Accountdetails — e-mailadresE-mailadresSelectedAccountEmailValueUsers.Email + identity-providerkoppeling via Users.ExternalIdDatabasewaarde en identity-providercontextE-mail/stringNee op landingsweergaveE-mailadres uniek en case-insensitive behandelen.
SCH-BEH-03-01-F09Accountdetails — statusStatusSelectedAccountStatusValueUsers.IsActive + accountstatus uit identity provider / applicatielaagAfgeleid statuslabelEnum/stringNee op landingsweergaveMag niet uitsluitend client-side bepaald worden.
SCH-BEH-03-01-F10Accountdetails — aanmaakdatumAanmaakdatumSelectedAccountCreatedAtValueUsers.CreatedAtUtcDatabasewaarde, lokaal geformatteerdDateTime displayNeeUTC-bronwaarde lokaal tonen.
SCH-BEH-03-01-F11Accountdetails — laatste loginLaatste loginSelectedAccountLastLoginValueUsers.LastSeenAtUtcDatabasewaarde, lokaal geformatteerdDateTime displayNeeKan leeg zijn bij nog geen bekende activiteit.
SCH-BEH-03-01-F12Accountdetails — aantal docentenAantal docentenSelectedAccountTeacherRelationCountValueUserRelationships, RelationshipTypes.Code = TeacherStudent, IsActive = trueBerekende tellerIntegerNeeAlleen actieve docentrelaties tellen; rolcontext respecteren.
SCH-BEH-03-01-F13Accountdetails — aantal ouders/voogdenAantal ouders/voogdenSelectedAccountGuardianRelationCountValueUserRelationships, RelationshipTypes.Code = GuardianStudent, IsActive = trueBerekende tellerIntegerNeeAlleen actieve ouder-/voogdrelaties tellen; rolcontext respecteren.
SCH-BEH-03-01-B01AccountdetailsOpen beheerOpenAccountManagementButtonGeselecteerd account in UI-stateUser action / navigatie binnen paginaActionJaAlleen actief wanneer een account geselecteerd is en beheerder rechten heeft.
SCH-BEH-03-01-T02Recente wijzigingenRecente wijzigingen (laatste 60 dagen)RecentAccountChangesListSamengesteld readmodel over accountlifecycle, Users, UserRoles, RelationshipEvents en relevante accountlogsChronologische aggregatie van recente wijzigingenCollectionNeeAlleen laatste 60 dagen tonen; geen technische identifiers tonen.
SCH-BEH-03-01-S06AccountbeheerstateAccountbeheer · <naam>AccountManagementShellGeselecteerd Users.Id in server-side autorisatiecontextSamengestelde beheercontextCompositeJaAlle mutaties opnieuw server-side autoriseren.
SCH-BEH-03-01-B02AccountbeheerstateTerug naar overzichtReturnToAccountsOverviewButtonUI-stateUser actionActionJaKeert terug naar overzicht zonder onopgeslagen mutaties stilzwijgend te verwerken.
SCH-BEH-03-01-F14Basis gegevens — naamNaamAccountNameInputUsers.DisplayName en/of naamveldenBeheerderinputStringJaVerplichte naam-/displayvalidatie; veilige encoding.
SCH-BEH-03-01-F15Basis gegevens — e-mailadresE-mailadresAccountEmailInputUsers.Email + identity-providerkoppeling via ExternalIdBeheerderinput met identity-providerafstemmingE-mail/stringJaUniek, geldig e-mailformaat en consistent met identity provider.
SCH-BEH-03-01-DD03Basis gegevens — statusStatusAccountStatusInputUsers.IsActive + accountstatus uit identity provider / applicatielaagBeheerderinputEnumJaBlokkeren/activeren moet server-side en auditbaar plaatsvinden.
SCH-BEH-03-01-F16Basis gegevens — laatste loginLaatste loginAccountLastLoginReadonlyUsers.LastSeenAtUtcDatabasewaarde, lokaal geformatteerdDateTime displayNeeRead-only; niet via formulier muteren.
SCH-BEH-03-01-B03Basis gegevensWijzigingen opslaanSaveAccountChangesButtonBasisgegevensformulierUser actionActionJaValideert naam, e-mail en status; schrijft historie/logging.
SCH-BEH-03-01-B04Basis gegevensBlokkeren / activerenToggleAccountBlockedStateButtonAccountstatusUser actionActionJaZware statusmutatie; mag eigen actieve beheerdersessie niet onveilig onderbreken zonder server-side guard.
SCH-BEH-03-01-T03Rollen<rolregel>AccountRolesListUserRoles, RolesActieve roltoekenningenCollectionNeeRollen tonen met actief-sindsdatum.
SCH-BEH-03-01-A02RollenVerwijderenRemoveAccountRoleActionUserRoles.IsActive, RevokedAtUtc, RevokedByUserIdRolintrekkingActionJaGeen hard delete; combinatieregels en gevolgen server-side controleren.
SCH-BEH-03-01-DD04RollenNieuwe rol toevoegenNewRoleSelectionDropdownRoles.IsActive en beheerautorisatieSelectie van rolEnum/lookupJaNiet-publieke rollen alleen zichtbaar/toe te kennen voor beheerder.
SCH-BEH-03-01-B05RollenToevoegenAddAccountRoleButtonUserRolesRoltoekenningActionJaActieve UserId+RoleId moet uniek zijn; leerling mag niet met andere rollen gecombineerd worden.
SCH-BEH-03-01-T04Relatiebeheer<relatieregel>AccountRelationsListUserRelationships, RelationshipTypes, Users, RolesActieve en relevante relatiesCollectionNeeRelaties per relatietype en rolcontext tonen.
SCH-BEH-03-01-A03RelatiebeheerOntkoppel / VerwijderDeactivateAccountRelationshipActionUserRelationships.IsActive, DeactivatedAtUtc, DeactivatedByUserId, RelationshipEventsRelatiedeactivatieActionJaAdminAdmin niet handmatig ontkoppelen zolang beide gebruikers actieve beheerder zijn.
SCH-BEH-03-01-T05GeschiedenisVolledige accountgeschiedenisFullAccountHistoryListAccountlogs, UserRoles, RelationshipEvents, relevante profiel-/accountmutatiesChronologische auditweergaveCollectionNeeAppend-only brondata; geen technische identifiers tonen.
SCH-BEH-03-01-S12Geschiedenis — samenvattingSamenvattingAccountHistorySummarySectionGeschiedenisreadmodel over account-, rol- en relatiegebeurtenissenBerekende samenvattingCompositeNeeTotalen, eerste registratie en laatste wijziging dynamisch afleiden.

4.6 Schermtrace naar SRS en acceptatiecriteria

De onderstaande tabel legt per schermrequirement de koppeling naar het centrale schermrequirements-trace-register, SRS-requirements en acceptatiecriteria vast. De normatieve requirementtekst staat in de SRS; dit schermdocument beschrijft alleen de lokale schermcontext.

Deze tabel bevat alleen schermtraceability. De normatieve requirementtekst en acceptatiecriteria staan centraal in de SRS.

SchermrequirementDektSchermcontext
REQ-SCH-BEH-03-01-01SRS-ADM-005
AC-ADM-005
De beheerder een accountsoverzicht tonen waarin accounts kunnen worden gezocht, gefilterd, geselecteerd en naast een detailpaneel beoordeeld
REQ-SCH-BEH-03-01-02SRS-AUTH-001
SRS-ADM-005
AC-AUTH-001
AC-ADM-005
Toegang tot het accountsoverzicht en de accountbeheerstate server-side beperken tot gebruikers met een actieve beheerdercontext
REQ-SCH-BEH-03-01-03SRS-ADM-005
AC-ADM-005
Het accountsoverzicht zoeken ondersteunen op naam en e-mailadres binnen de actieve statusfiltercontext
REQ-SCH-BEH-03-01-04SRS-ADM-005
AC-ADM-005
Het accountsoverzicht een statusfilter ondersteunen met minimaal Alle statussen, Actief en Geblokkeerd
REQ-SCH-BEH-03-01-05SRS-ADM-005
AC-ADM-005
Het accountsoverzicht sortering ondersteunen op minimaal Naam (A-Z) en Laatste login
REQ-SCH-BEH-03-01-06SRS-ADM-005
AC-ADM-005
Per accountkaart minimaal naam, statusbadge, actieve rolindicaties en laatste-loginweergave tonen
REQ-SCH-BEH-03-01-07SRS-RDM-004
SRS-RDM-007
SRS-RDM-001
SRS-ADM-005
AC-RDM-004
AC-RDM-007
AC-RDM-001
AC-ADM-005
Bij selectie van een account de bijbehorende kerngegevens tonen, waaronder minimaal naam, e-mailadres, status, aanmaakdatum, laatste login en samenvattende relatie-aantallen
REQ-SCH-BEH-03-01-08SRS-RDM-004
SRS-RDM-007
SRS-RDM-002
SRS-RDM-001
SRS-AUTH-001
SRS-ADM-005
AC-RDM-004
AC-RDM-007
AC-RDM-002
AC-RDM-001
AC-AUTH-001
AC-ADM-005
Actieve docentrelaties en actieve ouder-/voogdrelaties als afzonderlijke samenvattende tellers tonen, afgeleid uit het relatiedomein en de juiste rolcontext
REQ-SCH-BEH-03-01-09SRS-ADM-005
AC-ADM-005
De landingsweergave mag accountdetails alleen read-only tonen; mutaties via expliciete beheeracties of de beheerstate verlopen
REQ-SCH-BEH-03-01-10SRS-ADM-005
AC-ADM-005
De knop Open beheer alleen bruikbaar maken wanneer een account geselecteerd is en de beheerder voor dat account beheerrechten heeft
REQ-SCH-BEH-03-01-11SRS-ADM-005
AC-ADM-005
De actie Open beheer de verdiepende accountbeheerstate openen voor het geselecteerde account
REQ-SCH-BEH-03-01-12SRS-ADM-005
AC-ADM-005
De beheerstate tabs bieden voor Intro / uitleg, Basis gegevens, Rollen, Relatiebeheer en Geschiedenis
REQ-SCH-BEH-03-01-13SRS-ADM-005
AC-ADM-005
De beheerstate een actie Terug naar overzicht bieden waarmee de beheerder terugkeert naar de accountlijst zonder onopgeslagen mutaties stilzwijgend te verwerken
REQ-SCH-BEH-03-01-14SRS-AUTH-001
SRS-NFR-AUD-001
AC-AUTH-001
AC-NFR-AUD-001
In Basis gegevens het wijzigen van naam, e-mailadres en accountstatus ondersteunen binnen server-side validatie en audit/logging
REQ-SCH-BEH-03-01-15SRS-ADM-001
AC-ADM-001
E-mailwijzigingen consistent blijven met de identity-providerkoppeling en geen leiden tot tegenstrijdigheid tussen Users.Email, uitnodigingslogica en authenticatiecontext
REQ-SCH-BEH-03-01-16SRS-ADM-001
AC-ADM-001
De laatste-loginwaarde in de beheerstate read-only zijn en geen handmatig door een beheerder worden gewijzigd
REQ-SCH-BEH-03-01-17SRS-AUTH-001
SRS-ADM-005
AC-AUTH-001
AC-ADM-005
De actie Blokkeren / activeren een server-side accountstatusmutatie uitvoeren en geen alleen de zichtbare statusbadge wijzigen
REQ-SCH-BEH-03-01-18SRS-ADM-005
AC-ADM-005
Roltoekenningen tonen met rolnaam en actief-sindsdatum
REQ-SCH-BEH-03-01-19SRS-ADM-005
AC-ADM-005
Het toevoegen van rollen alleen toestaan voor actieve rollen die binnen de geldende beheer- en combinatieregels toegestaan zijn
REQ-SCH-BEH-03-01-20SRS-ADM-005
AC-ADM-005
Het systeem mag de rol Leerling niet combineren met Ouder/voogd, Docent, Beheerder of TestDocent binnen hetzelfde account
REQ-SCH-BEH-03-01-21SRS-ADM-001
AC-ADM-001
Toestaan dat Ouder/voogd, Docent en Beheerder onderling gecombineerd voorkomen wanneer de overige business rules dat toelaten
REQ-SCH-BEH-03-01-22SRS-ADM-005
AC-ADM-005
Niet-publieke rollen zoals Beheerder en TestDocent mogen alleen via beheer worden toegekend
REQ-SCH-BEH-03-01-23SRS-NFR-AUD-001
SRS-ADM-005
AC-NFR-AUD-001
AC-ADM-005
Rolintrekking historisch herleidbaar blijven en mag geen hard delete van de roltoekenningshistorie uitvoeren
REQ-SCH-BEH-03-01-24SRS-ADM-005
AC-ADM-005
Dubbele actieve roltoekenningen voor dezelfde gebruiker en rol voorkomen
REQ-SCH-BEH-03-01-25SRS-AUTH-001
SRS-ADM-005
AC-AUTH-001
AC-ADM-005
Bestaande relaties van het geselecteerde account tonen per relatietype en rolcontext
REQ-SCH-BEH-03-01-26SRS-ADM-005
AC-ADM-005
Nieuwe relaties geen vanuit de accountbeheerstate worden aangemaakt; relatievorming blijft via uitnodiging, acceptatie of systeemregels verlopen
REQ-SCH-BEH-03-01-27SRS-AUTH-001
SRS-ADM-005
AC-AUTH-001
AC-ADM-005
Ontkoppelen of verwijderen van een relatie vanuit accountbeheer server-side controleren of de relatie volgens het relatietype ontkoppelbaar is
REQ-SCH-BEH-03-01-28SRS-ADM-005
AC-ADM-005
Een AdminAdmin-relatie geen handmatig worden ontkoppeld zolang beide betrokken gebruikers een actieve beheerderrol hebben
REQ-SCH-BEH-03-01-29SRS-NFR-AUD-001
SRS-ADM-001
AC-NFR-AUD-001
AC-ADM-001
Relatieontkoppeling als deactivatie met auditinformatie worden verwerkt en mag de relatie niet hard verwijderen
REQ-SCH-BEH-03-01-30SRS-ADM-005
AC-ADM-005
In Recente wijzigingen een chronologische lijst tonen van relevante accountwijzigingen over de laatste 60 dagen
REQ-SCH-BEH-03-01-31SRS-ADM-005
AC-ADM-005
In Geschiedenis de volledige accountgeschiedenis tonen over account-, rol- en relatiegebeurtenissen
REQ-SCH-BEH-03-01-32SRS-NFR-AUD-001
SRS-ADM-001
AC-NFR-AUD-001
AC-ADM-001
Geschiedenisregels minimaal datum/tijd, wijzigingssamenvatting en actor of systeemactie tonen
REQ-SCH-BEH-03-01-33SRS-AUTH-004
SRS-ADM-005
AC-AUTH-004
AC-ADM-005
Het systeem mag in accountoverzicht, accountdetails, relatiebeheer en geschiedenis geen technische identifiers zoals GUID’s, role-id’s, relationship-id’s of external identity-provider-id’s tonen
REQ-SCH-BEH-03-01-34SRS-ADM-005
AC-ADM-005
Wanneer zoek- en filtercriteria geen accounts opleveren, het systeem een duidelijke lege staat tonen en geen verouderde accountdetails blijven presenteren alsof die nog geselecteerd zijn
REQ-SCH-BEH-03-01-35SRS-NFR-AUD-001
SRS-ADM-005
AC-NFR-AUD-001
AC-ADM-005
Wanneer accountgegevens of historie niet geladen kunnen worden, het systeem een begrijpelijke foutmelding tonen zonder technische stacktrace of gevoelige loggingdetails zichtbaar te maken
REQ-SCH-BEH-03-01-36SRS-RDM-004
SRS-RDM-007
SRS-RDM-002
SRS-RDM-001
SRS-NFR-AUD-001
SRS-ADM-005
AC-RDM-004
AC-RDM-007
AC-RDM-002
AC-RDM-001
AC-NFR-AUD-001
AC-ADM-005
Zichtbare namen, e-mailadressen, datums, rollen, statussen, relatie-aantallen en wijzigingsregels dynamisch uit de actuele account-, rol-, relatie- en historycontext worden opgebouwd

4.7 Technische koppeling

Voor technische uitwerking van accountbeheer zijn vooral relevant: