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.