Skip to main content

Autorisatiematrix

Dit document beschrijft welke processen of acties autorisatie nodig hebben en welke extra contextcontrole daarbij geldt. Vanaf Feature 11-5 gebruikt OefenHub permission-based RBAC: de historische rolkolommen blijven bruikbaar als leesbare overgangsmatrix, maar de runtime-check gebeurt tegen permissions uit het RBAC-permissieregister.

Permissiongerichte leeswijze

De bestaande tabellen gebruiken nog rolkolommen om snel te zien voor welke gebruikersgroep een actie relevant is. Bij implementatie moet iedere regel echter worden vertaald naar:

  1. één of meer permission-codes volgens <resource>.<action>[.<scope>];
  2. een optionele domein-/objectcheck;
  3. cache-invalidatie wanneer rollen, UserRoles, RolePermissions of accountstatus wijzigen.

Voorbeelden:

Historische actiePermissionExtra contextcontrole
Leerling-frontpage bekijkenfrontpage.view.studentLeerlingrol exclusief; actieve niveaucontext waar vereist.
Docent-frontpage bekijkenfrontpage.view.teacherFrontpageblok bevat alleen geautoriseerde docentreadmodels.
Ouder-/voogd-frontpage bekijkenfrontpage.view.guardianAlleen actieve GuardianStudent-relaties tellen mee.
Beheerder-frontpage bekijkenfrontpage.view.administratorApplicatiebeheercontext; geen recht op role/permission management.
Leerlingresultaten bekijken als docentstudent-results.read.assignedDocent-leerlingrelatie, niveauautorisatie en runscope.
Resultaten van kind bekijkenstudent-results.read.childrenActieve GuardianStudent-relatie en run hoort bij kind.
Eigen resultaat bekijkenpractice-results.read.ownRun is eigen afgeronde run.
Permissioncache gebruiker legenauthorization-cache.invalidate.userSysteem/admincontract; geen gewone beheerderactie in Feature 11-5.

Tabelstructuur

Actie / commandLeerlingDocentOuder/voogdBeheerderExtra contextcontroleOpmerking
Relaties bekijkenJaJaJaJaIngelogde gebruiker; resultaten worden gefilterd op actieve rolcontexten, actieve relaties en zichtbare pending uitnodigingenZie UC-GEN-REL-001.
Relatiedetails openklappenJaJaJaJaGebruiker is betrokken partij bij de relatie of heeft een geldige beheerderscontextLeest alleen extra contextwaarden; geen datamutatie.
Vriend uitnodigenJaNeeNeeNeeActieve leerlingcontext, actief relatietype Friendship, geldig e-mailadres, geen actieve identieke relatie en geen openstaande identieke of kruislings conflicterende uitnodigingZie UC-GEN-REL-002; vriendschap is leerling-leerling.
Externe OefenHub-uitnodiging voor vriend versturenJaNeeNeeNeeZelfde controles als vriend uitnodigen, plus onbekend e-mailadres en expliciete bevestiging dat de naam van de uitnodiger wordt gedeeldTweede stap in UC-GEN-REL-002 bij een e-mailadres zonder bestaand OefenHub-account.
Ouder/voogd uitnodigenJaNeeNeeNeeActieve leerlingcontext, actief relatietype GuardianStudent, geldig e-mailadres, geen actieve identieke relatie en geen openstaande identieke of kruislings conflicterende uitnodigingZie UC-GEN-REL-003; technische doelrol is Guardian.
Externe OefenHub-uitnodiging voor ouder/voogd versturenJaNeeNeeNeeZelfde controles als ouder/voogd uitnodigen, plus onbekend e-mailadres en expliciete bevestiging dat de naam van de uitnodiger wordt gedeeldTweede stap in UC-GEN-REL-003 bij een e-mailadres zonder bestaand OefenHub-account.
Relatie-uitnodiging accepterenJaJa, wanneer doelrol docent isJa, wanneer doelrol Guardian isAlleen wanneer doelrol beheerder expliciet ondersteund wordtGebruiker is ontvanger van pending uitnodiging; uitnodiging is niet verlopen; doelrol past bij uitnodiging of wordt bewust gekozen/geactiveerdZie UC-GEN-REL-005; geen acceptatieconfirmatie.
Relatie-uitnodiging afwijzenJaJa, wanneer doelrol docent isJa, wanneer doelrol Guardian isAlleen wanneer doelrol beheerder expliciet ondersteund wordtGebruiker is ontvanger van pending uitnodiging; uitnodiging is niet verlopen; afwijzen is bevestigd via popupZie UC-GEN-REL-005; afwijzen vraagt confirm.
Relatie-uitnodiging koppelen na registratieSysteemSysteemSysteemSysteemOpenstaande uitnodiging met ToEmail, lege ToUserId, overeenkomend genormaliseerd e-mailadres en geldigheid binnen 7 dagenGeen gebruikersactie; wordt na registratie of via technische verwerking uitgevoerd.
Systeembericht voor relatie-uitnodiging aanmakenSysteemSysteemSysteemSysteemToUserId is bekend en verwijst naar ontvanger van de uitnodigingVoor externe uitnodiging pas mogelijk na registratie/koppeling.
Relatie direct ontkoppelenJaJaJaJaGebruiker is betrokken partij, relatie is actief, relatietype en rolcontext staan directe ontkoppeling toe, bevestigingspopup is bevestigdZie UC-GEN-REL-004; soft-deactivatie.
Ontkoppelverzoek indienenJaJaJaJaGebruiker is betrokken partij, relatie is actief, relatietype staat verzoekflow toe, bevestigingspopup is bevestigdVervolgflow moet nog apart worden uitgewerkt wanneer het domein dit nodig heeft.
Relatie handmatig beheren als beheerderNeeNeeNeeJaExpliciete beheerdercontext en geldige beheerflowNiet onderdeel van generieke relatiepagina.
Berichtenoverzicht bekijkenJaJaJaJaIngelogde gebruiker; alleen eigen SystemMessages en eigen PrivateMessageThreadParticipants zonder DeletedAtUtcZie UC-GEN-MSG-001; beheerder ziet hier de eigen mailbox, niet alle mailboxen.
Bericht of privéthread openenJaJaJaJaSysteembericht heeft RecipientUserId = huidige gebruiker of privéthread heeft participantregel voor huidige gebruiker en DeletedAtUtc is nullZie UC-GEN-MSG-003; openen kan uitsluitend de eigen leesstatus wijzigen.
Systeembericht-vervolgactie openenJaJaJaJaEigen systeembericht met geldige EntityType + EntityId; gebruiker moet ook rechten hebben op het onderliggende domeinobjectZie UC-GEN-MSG-003; openen van het systeembericht verwerkt de vervolgactie niet automatisch.
Bericht als gelezen markerenJaJaJaJaAlleen eigen systeembericht of eigen participant-readstateServer-side controle verplicht; actualiseert ongelezenteller.
Bericht als ongelezen markerenJaJaJaJaAlleen eigen systeembericht of eigen participant-readstateServer-side controle verplicht; actualiseert ongelezenteller.
Privéberichtthread uit eigen mailbox verwijderenJaJaJaJaAlleen eigen participantregel bij privéthread; niet toegestaan voor systeemberichtenZie UC-GEN-MSG-005; vult PrivateMessageThreadParticipants.DeletedAtUtc en verwijdert niets voor andere deelnemers.
Systeembericht verwijderenNeeNeeNeeNeeNiet toegestaan, ook niet via gemanipuleerd requestSysteemberichten blijven niet-verwijderbaar.
Privébericht opstellen en verzendenJaJaJaJaPrivéberichten actief; ontvanger binnen actieve relatie-, vriendschaps- of expliciet toegestane deelnemerscontext; server-side controle op verzendmomentZie UC-GEN-MSG-002; willekeurige ontvangers buiten de toegestane context zijn niet toegestaan.
Privéberichtthread beantwoordenJaJaJaJaEigen participantregel bij beantwoordbare privéthread, DeletedAtUtc is null, privéberichten actief en relatie-/deelnemerscontext nog geldig op verzendmomentZie UC-GEN-MSG-004; systeemberichten zijn niet beantwoordbaar.
Melding beheren als beheerderNeeNeeNeeJaBeheerdercontextOperationele beheerflow.
Actie / commandLeerlingDocentOuder/voogdBeheerderExtra contextcontroleOpmerking
Melding indienenJaJaJaJaIngelogde gebruiker; meldingenfeature actief; alleen eigen melding aanmakenZie UC-GEN-TIC-001.
Eigen meldingen bekijkenJaJaJaJaAlleen Tickets.CreatedByUserId = huidige gebruikerZie UC-GEN-TIC-002.
Eigen meldingdetails bekijkenJaJaJaJaAlleen eigen melding; interne beheerinformatie wordt uitgeslotenZie UC-GEN-TIC-003.
Reageren op eigen meldingJaJaJaJaEigen melding; melding is niet functioneel gesloten; reactie is altijd externZie UC-GEN-TIC-004.
Eigen melding sluitenJaJaJaJaEigen melding; niet functioneel gesloten; verplichte redenZie UC-GEN-TIC-005; gebruikt TicketClosures met ClosedByUser.
Oplossing accepterenJaJaJaJaEigen melding; actuele sluiting is nog gebruikersgericht Opgelost; niet eerder geaccepteerd of heropendZie UC-GEN-TIC-006.
Eigen melding heropenenJaJaJaJaEigen opgeloste melding; binnen heropentermijn; verplichte toelichtingZie UC-GEN-TIC-007.
Beheerdersoverzicht meldingen bekijkenNeeNeeNeeJaActieve beheerdercontextZie UC-GEN-TIC-008.
Melding openen als beheerderNeeNeeNeeJaActieve beheerdercontext; alle meldingen zichtbaar volgens beheerflowZie UC-GEN-TIC-009.
Beheerder koppelen of ontkoppelenNeeNeeNeeJaActieve beheerdercontext; ontkoppelen vereist reden; meerdere beheerderkoppelingen toegestaanZie UC-GEN-TIC-010.
Extern bericht plaatsenNeeNeeNeeJaActieve beheerdercontext én actieve behandelcontext; melding mag niet puur New zijnZie UC-GEN-TIC-011; eerst koppelen indien nieuw.
Intern bericht plaatsenNeeNeeNeeJaActieve beheerdercontext; bericht blijft intern zichtbaarZie UC-GEN-TIC-012.
Melding oplossen of sluiten als beheerderNeeNeeNeeJaActieve beheerdercontext én actieve behandelcontext; oplossing/sluitstatus verplichtZie UC-GEN-TIC-013; niet rechtstreeks vanuit New.
Melding heropenen als beheerderNeeNeeNeeJaGesloten melding; verplichte reden; bevestigingZie UC-GEN-TIC-014.
Melding doorzetten naar docentNeeNeeNeeJaActieve beheerdercontext én actieve behandelcontext; gekozen docent moet geldig zijn binnen de meldingcontextZie UC-GEN-TIC-015.
Eigen profiel bekijkenJaJaJaJaAlleen eigen profiel via sessiecontextZie UC-GEN-PROF-001.
Eigen profielgegevens wijzigenJaJaJaJaAlleen eigen applicatieprofiel; e-mail/wachtwoord via identity-providerflowZie UC-GEN-PROF-002.
Verplicht niveau instellenJaJaJaJaAlleen eigen profiel; niveau moet geldig en selecteerbaar zijnZie UC-GEN-PROF-003.
Profielfoto kiezenJaJaJaJaAlleen eigen profiel; gekozen profielafbeelding moet vooraf gedefinieerd en actief zijnZie UC-GEN-PROF-004.
Toegankelijkheidsinstellingen beherenJaJaJaJaAlleen eigen instellingen; toegankelijkheidsfeature actiefZie UC-GEN-PROF-005.
Toegankelijkheid-cookie synchroniserenSysteemSysteemSysteemSysteemAlleen technische toegankelijkheidswaarden; profielinstellingen blijven leidend na loginZie UC-GEN-PROF-006.
Voorkeuren beherenJaJaJaJaAlleen eigen voorkeuren; sleutel/type/rolcontext moet toegestaan zijnZie UC-GEN-PROF-007.
Systeemnotificatie tonenJaJaJaJaDoelgroep, tijdvenster, feature- en displayregelcontrole; ook publieke bezoekers indien AudienceType = PublicZie UC-GEN-NOT-001.
Systeemnotificatie sluitenJaJaJaJaAlleen actuele getoonde notificatie; geen beheerrecht nodigZie UC-GEN-NOT-002.
Eenmalige systeemnotificatie verwerkenSysteemSysteemSysteemSysteemBrowsermarker voor OncePerBrowser; geen persoonsgegevens of autorisatiedataZie UC-GEN-NOT-003.
Actie / commandLeerlingDocentOuder/voogdBeheerderExtra contextcontroleOpmerking
Inloggen via identity providerJaJaJaJaExterne identity-providerflow beschikbaar; OefenHub valideert daarna server-side de applicatiecontextOefenHub verwerkt geen wachtwoordvalidatie.
Intern account provisionenSysteemSysteemSysteemSysteemAlleen na succesvolle identity-providerlogin en wanneer geen Users-record met dezelfde ExternalId bestaatZie UC-GEN-ACC-001; idempotent en transactioneel.
Bestaande sessie verwerkenSysteemSysteemSysteemSysteemGeldige identity-providercontext, precies één intern account, Users.IsActive = trueZie UC-GEN-ACC-002; bepaalt rollen en frontendcontext server-side.
Toegang weigeren bij gedeactiveerd accountSysteemSysteemSysteemSysteemVerplicht wanneer Users.IsActive = falseOok bij geldige identity-providerlogin.
Rollen en frontendcontext bepalen na loginSysteemSysteemSysteemSysteemAlleen actieve UserRoles en actieve Roles; clientstate is niet leidendZie UC-GEN-ACC-002 en UC-GEN-ACC-003.
Beperkte context zonder rol tonenSysteemSysteemSysteemSysteemGeauthenticeerd actief account zonder bruikbare actieve rolcontextGeen toegang tot reguliere rolgebonden domeinfunctionaliteit.
Ontbrekende verplichte context doorleidenSysteemSysteemSysteemSysteemVerplichte profiel- of niveaucontext ontbreektDoorleiding naar bestaande profiel- of niveauflow; geen automatische aanname.
Pending uitnodigingen koppelen na provisioningSysteemSysteemSysteemSysteemGeldig intern Users.Id, genormaliseerd e-mailadres en openstaande geldige uitnodigingVult RelationshipInvitations.ToUserId; accepteert de uitnodiging niet.
Systeembericht voor gekoppelde uitnodiging aanmakenSysteemSysteemSysteemSysteemToUserId bestaat en uitnodiging is gekoppeldSystemMessages.EntityType = RelationshipInvitation.
Eigen accountverwijdering startenJaJaJaJaIngelogde gebruiker; alleen eigen account; accountverwijdering beschikbaarZie UC-GEN-ACC-004.
Eigen accountverwijdering definitief bevestigenJaJaJaJaEigen account, geldige sessie, expliciete bevestiging via popup en eventuele opvolgerkeuzes voltooidLeidt naar anonimiseer- en opruimflow.
Account anonimiseren en afhankelijke toegang opruimenSysteemSysteemSysteemSysteemGeautoriseerde verwijdertrigger; precies één intern account; lifecycle-logging beschikbaarZie UC-GEN-ACC-005.
Niveau-opvolger kiezen bij eigen accountverwijderingNeeJaNeeJaAlleen wanneer de verwijderende gebruiker eigenaar is van niveaus met meerdere actieve collaboratorsOpvolger moet actieve collaborator zijn; beheerderkolom alleen wanneer beheerflow later dezelfde backendflow gebruikt.
UitloggenJaJaJaJaGeldige of al verlopen eigen OefenHub-sessiecontextZie UC-GEN-ACC-006; idempotent.
Beveiligde route na logout openenNeeNeeNeeNeeGeen geldige applicatiesessieRouteguard leidt naar login of publieke context.
Actie / autorisatiepuntRolcontextRegel / contextcontrole
Leerling-frontpage bekijkenLeerlingToegestaan voor actieve leerlingrol; frontpageblokken worden server-side uit actieve niveaucontext samengesteld.
Beschikbare categorieën en oefeningen bekijkenLeerlingAlleen binnen actieve niveaucontext en geldige toegang.
Oefening openen of startenLeerlingAlleen wanneer oefening, categorie, niveau en autorisatie op dat moment geldig zijn.
Oefening hervattenLeerlingAlleen voor eigen niet-afgeronde run binnen geldige context.
Vraag beantwoordenLeerlingAlleen binnen eigen actieve run.
Resultaat en geschiedenis bekijkenLeerlingAlleen eigen afgeronde runs of ontvangen gedeelde runs waar toegang toe bestaat.
Oefening delen met vriendLeerlingAlleen bij actieve vriendschap, toegestane deelfunctionaliteit en deelbare afgeronde run.
Ontvangen gedeelde oefening startenLeerlingAlleen voor eigen ontvangen shared-record dat niet verwijderd of geblokkeerd is.
Docent-frontpage bekijkenDocentToegestaan voor actieve docentrol; inhoud wordt server-side samengesteld.
Oefenaanbod en niveau bekijkenDocentAlleen binnen eigen eigenaar- of collaboratorcontext en toegankelijke open context.
Niveau aanmakenDocentToegestaan voor actieve docentrol; aanmaker wordt eigenaar.
Niveaukerngegevens wijzigenDocentAlleen eigenaar of expliciet bevoegde beheerflow.
Categorie aan niveau koppelenDocentAlleen binnen bevoegd niveau; centrale categorie blijft bron.
Oefening aanmaken of configurerenDocentAlleen eigenaar of actieve collaborator met bewerkrecht binnen niveau.
Oefening activeren of in onderhoud zettenDocentAlleen bevoegd binnen niveau; server-side validatie verplicht.
Oefening testenDocentAlleen binnen bevoegde docentcontext; testrun wordt niet permanent als leerlingresultaat opgeslagen.
Collaborator beherenDocentAlleen eigenaar van het niveau of expliciet bevoegde beheerflow.
Eigenaarschap overdragenDocentAlleen huidige eigenaar; doel moet actieve collaborator zijn en reden is verplicht.
Leerlingenoverzicht bekijkenDocentAlleen eigen docent-leerlingcontext; geen inzage in andere docentrelaties.
Niveauautorisaties beherenDocentAlleen voor leerlingen met actieve docent-leerlingrelatie binnen eigen context.
Leerlingresultaten bekijkenDocentAlleen resultaten binnen door deze docent geautoriseerde niveaus.
Live meekijken startenDocentAlleen bij actieve run binnen eigen docentcontext en niveauautorisatie.

Invulregels

OnderwerpRegel
Ja/Nee is niet genoegVul altijd de extra contextcontrole in.
Meerdere rollenBeschrijf gedrag bij effectieve permissions; aanwezigheid van een rol is niet voldoende.
Backend leidendDe matrix beschrijft server-side permission- en contextautorisatie, niet alleen frontend-zichtbaarheid.
SysteemactiesGebruik Systeem wanneer een proces niet door een gebruikersrol wordt gestart maar wel autorisatie- of contextregels kent.
Nog open ontwerpkeuzeWanneer doelrolkeuze tijdens acceptatie wordt aangepast, leg de impact vast in het relevante usecase-, ontwerpbron- of besluitenregister.

Beheerder- en ouder-/voogdcontexten

Actie / commandLeerlingDocentOuder/voogdBeheerderExtra contextcontroleOpmerking
Beheerder-frontpage bekijkenNeeNeeNeeJaActieve beheerdersrol; gecombineerde rollen krijgen beheerderprioriteitZie UC-BEH-FP-001 en UC-BEH-FP-002.
Beheersamenvattingen tonenNeeNeeNeeJaAlleen afgeleide readmodelwaarden; geen detaildata buiten beheercontextZie UC-BEH-FP-003.
Recente beheerwijzigingen tonenNeeNeeNeeJaAlleen beheerlogregels die binnen beheercontext zichtbaar zijnZie UC-BEH-FP-004.
Site Instellingen-hub openenNeeNeeNeeJaActieve beheerdersrol; hub voert geen mutaties uitZie UC-BEH-SITE-001.
Frontpagecontent beherenNeeNeeNeeJaBestaande context en contentblok; layout codegedrevenZie UC-BEH-FRONT-*.
Handige links en vaste pagina’s beherenNeeNeeNeeJaGeldige URL-/footer-/pagina-context; server-side validatieZie UC-BEH-LINKS-*.
Popupdefinitie beherenNeeNeeNeeJaBestaande popupkey; technische velden read-onlyZie UC-BEH-POP-*.
Systeemberichttemplate beherenNeeNeeNeeJaBestaande templatekey; referentie en technische actie read-onlyZie UC-BEH-SYSMSG-*.
Featuretoggle wijzigenNeeNeeNeeJaBestaande featuretoggle; reden en audit verplichtZie UC-BEH-FEAT-002.
Systeemnotificatie beherenNeeNeeNeeJaGeldige doelgroep, tijdvenster en displayregelZie UC-BEH-FEAT-003 t/m UC-BEH-FEAT-008.
Systeeminstelling wijzigenNeeNeeNeeJaBestaande sleutel, passend datatype en invoervorm, audit verplichtZie UC-BEH-SET-002 en UC-BEH-SET-005.
Beheerlog raadplegenNeeNeeNeeJaAlleen beheercontext; filtering wijzigt geen auditdataZie UC-BEH-SET-006 en UC-BEH-SET-007.
Centrale categorie beherenNeeNeeNeeJaBestaande centrale categorie; status-/migratieregels server-side afgedwongenZie UC-BEH-CAT-*.
Technische module beherenNeeNeeNeeJaBestaand ExerciseModules-record; migratievoorwaarden server-side gecontroleerdZie UC-BEH-MOD-*.
Docentondersteuning uitvoerenNeeNeeNeeJaEén geselecteerde docentcontext; supportflow mag centraal categorie-/modulebeheer niet duplicerenZie UC-BEH-DOCSUP-*.
Accountbeheer uitvoerenNeeNeeNeeJaBeheerdercontext; identity-providercredentials blijven buiten scopeZie UC-BEH-ACC-*.
Ouder-/voogd-frontpage bekijkenNeeNeeJaJa, bij gecombineerde rol als afgeleid blokActieve ouder-/voogdrol en minimaal toegestane contextZie UC-OVG-FP-*.
Kinderenoverzicht bekijkenNeeNeeJaJa, alleen via expliciete beheer-/supportcontextActieve ouder-/voogdrelatie met zichtbaar kindZie UC-OVG-KIND-001.
Kindinformatie bekijkenNeeNeeJaJa, alleen via expliciete beheer-/supportcontextActieve ouder-/voogdrelatie met geselecteerd kindZie UC-OVG-KIND-004.
Kind ontkoppelen als ouder/voogdNeeNeeJaJa, alleen via expliciete beheer-/supportcontextActieve GuardianStudent-relatie; bevestiging en auditZie UC-OVG-KIND-005.
Resultaten van kind bekijkenNeeNeeJaJa, alleen via expliciete beheer-/supportcontextActieve ouder-/voogdrelatie; alle niveaus van gekoppeld kind toegestaanZie UC-OVG-RES-*.
Live meekijken met kindNeeNeeJaNeeActieve ouder-/voogdrelatie; kind heeft actieve oefenrun; read-onlyZie UC-OVG-LIVE-*.
Resultaat als PDF downloaden binnen oudercontextNeeNeeJaJa, alleen via expliciete beheer-/supportcontextActieve ouder-/voogdrelatie; run is afgerond en hoort bij gekoppeld kind; export is read-onlyZie UC-OVG-RES-006.
Oude ouder-/voogdresultaatroute openen zonder relatieNeeNeeNeeJa, alleen via beheer-/supportcontextZonder actieve ouder-/voogdrelatie wordt geen resultaatdata vrijgegeven, ook niet via RunId of oude routeZie UC-OVG-RES-007.
Ouder-/voogd livebeschikbaarheid bepalenNeeNeeJaNeeActieve ouder-/voogdrelatie, actieve live-feature en actieve run; knopstatus is geen autorisatiebronZie UC-OVG-LIVE-002.
Ouder-/voogd livevraag bekijken of bladerenNeeNeeJaNeeOpen live sessie met actuele ouder-/voogdrelatie; read-only; vraagindex binnen runZie UC-OVG-LIVE-004 t/m UC-OVG-LIVE-006.