Skip to main content

4. Identiteit en autorisatie

Deze pagina is de ERD-inzoomlaag voor het databasehoofdstuk 01_identiteit-en-autorisatie.md. De tabeldefinities in dat brondocument blijven leidend; deze pagina biedt een leesbare visuele ingang en een compacte inventaris.

4.1 Waar dit domein over gaat​

Identiteit en autorisatie is het startpunt voor vrijwel alle andere domeinen. Het domein legt vast:

  • welk intern OefenHub-account bestaat;
  • welke externe identity-provider sleutel daarbij hoort;
  • welke rollen aan de gebruiker zijn toegekend;
  • welke permissions aan rollen zijn gekoppeld;
  • welke effectieve permissionbundels via rollen kunnen ontstaan;
  • welke profielavatar en gebruikersinstellingen actief zijn;
  • welke actieve niveaucontext als voorkeur kan worden vastgelegd.

Authenticatie zelf, wachtwoorden, sessies en credentials liggen buiten dit datamodel bij de identity provider. Users is dus de interne applicatie-identiteit, niet de credentialbron.

4.2 Compact deel-ERD​

Het compacte ERD toont alleen harde database-FK's binnen de eigendomsgrenzen van dit hoofdstuk. Cross-domeinverwijzingen worden daarna apart als soft links weergegeven.

UserRoles.UserId, UserRoles.GrantedByUserId, UserRoles.RevokedByUserId, RolePermissions.GrantedByUserId en RolePermissions.RevokedByUserId verwijzen functioneel naar Users.Id, maar worden niet als harde database-FK gemodelleerd omdat deze tabellen onderdeel zijn van authorization en Users onderdeel is van identity. UserSettings.SelectedTeacherLevelId is een soft link naar de catalogus-/docentstructuurcontext.

4.4 Detailzoom: kernvelden per tabel​

4.5 Tabellen in dit domein​

TabelCategorieDoel / verantwoordelijkheidBrongebruik
UsersIdentiteitBasisaccount van een gebruiker, inclusief interne identiteit, koppeling naar de externe identity provider en weergave-gerelateerde gegevens.Centrale hub voor vrijwel alle domeinen.
RolesAutorisatieDefinitie van beschikbare rollen binnen OefenHub. Rollen zijn bundels van permissions.Wordt gebruikt in roltoekenning, relaties en live/auditcontext.
UserRolesAutorisatieKoppelt één of meerdere rollen aan een gebruiker, inclusief auditinformatie over toekenning en intrekking.Bepaalt welke role-bundels server-side beschikbaar kunnen zijn.
PermissionsAutorisatieDefinitie van permission-codes volgens <resource>.<action>[.<scope>], inclusief Engelse beschrijving.Runtime bron van permissionchecks en seedvalidatie.
RolePermissionsAutorisatieKoppelt permissions aan rollen, inclusief auditinformatie over toekenning en intrekking.Bepaalt effectieve permissions per rol en invalidatie-impact.
ProfileAvatarsProfielVooraf gedefinieerde profielafbeeldingen waar gebruikers uit kiezen in plaats van vrije uploads.Beperkte profielpresentatie zonder vrije upload.
UserSettingsGebruikersinstellingenGebruikersspecifieke voorkeuren en toegankelijkheidsinstellingen die buiten authenticatie en basisprofiel vallen.Bevat presentatie- en toegankelijkheidsvoorkeuren, geen autorisatiebron.

4.6 Relatie-startpunt binnen dit domein​

BrontabelVeldVerwijst naarType verwijzingNullableBetekenis
UsersProfileAvatarIdProfileAvatars.IdHarde FKJGekozen avatar uit goedgekeurde set binnen identity.
UserRolesUserIdUsers.IdSoft linkNGebruiker die de rol draagt; applicatief gevalideerd via identity.
UserRolesRoleIdRoles.IdHarde FKNToegekende rol binnen authorization.
UserRolesGrantedByUserIdUsers.IdSoft linkJActor die rol toekende; geen harde FK naar identity.
UserRolesRevokedByUserIdUsers.IdSoft linkJActor die rol introk; geen harde FK naar identity.
RolePermissionsRoleIdRoles.IdHarde FKNRol waaraan de permission is gekoppeld.
RolePermissionsPermissionIdPermissions.IdHarde FKNPermission die via de rol wordt toegekend.
RolePermissionsGrantedByUserIdUsers.IdSoft linkJActor die permission aan rol koppelde; geen harde FK naar identity.
RolePermissionsRevokedByUserIdUsers.IdSoft linkJActor die permission van rol introk; geen harde FK naar identity.
UserSettingsUserIdUsers.IdHarde FKNInstellingen horen bij exact één gebruiker binnen identity.
UserSettingsSelectedTeacherLevelIdTeacherLevels.IdSoft linkJActieve of laatst gekozen niveaucontext; cross-domeinverwijzing naar catalogus/docentstructuur.

4.7 Wat bewust niet uit dit domein komt​

OnderwerpWaar hoort het wel?Reden
Login, wachtwoord, sessie en credential lifecycleIdentity provider / KeycloakOefenHub bewaart geen credentials en valideert geen wachtwoorden.
Relaties tussen gebruikersRelatiebeheerEen gebruiker kan meerdere rollen hebben; relaties worden per relatietype en rolcontext vastgelegd.
Leerlingtoegang tot niveausDocentstructuur en leerlingtoegangNiveauautorisatie is afhankelijk van docent-leerlingrelatie en docentcontext.
Oefenresultaten en geschiedenisOefenruns, delen en voortgangResultaten zijn historische runrecords, niet profielgegevens.
Berichten en notificatiesCommunicatie en notificatiesUsers is ontvanger/zender, maar niet de berichtbron.

4.8 Belangrijke cross-domein aandachtspunten​

  • Users komt in bijna elk domein terug als eigenaar, actor, ontvanger, melder, docent, leerling, ouder/voogd of beheerder.
  • Roles zijn permissionbundels en niet alleen UI-labels; rolcontext blijft relevant voor relaties, beheertoegang en live-meekijkregistratie.
  • Permissions en RolePermissions bepalen de effectieve permission-set die per gebruiker wordt gecachet.
  • Iedere wijziging in UserRoles of RolePermissions heeft permissioncache-impact.
  • UserSettings.SelectedTeacherLevelId verwijst als soft link naar TeacherLevels.Id en is daarmee een bewuste cross-domeinverwijzing zonder harde database-FK.
  • User settings wijzigen presentatiegedrag of voorkeuren, maar mogen geen autorisaties, zichtbare datasets of relaties verruimen.

4.9 Zoompad vanaf deze pagina​

VervolgGebruik wanneer...
Relatiebeheerje wilt weten hoe gebruikers vanuit rollen aan elkaar gekoppeld worden.
Docentstructuur en leerlingtoegangje wilt weten hoe een docentcontext en leerlingtoegang ontstaan.
Cross-domein relatiesje wilt zien waar Users en Roles buiten dit domein terugkomen.
Relatie-indexje een concrete harde FK of soft link naar of vanuit Users of Roles wilt controleren.