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.
4.3 Soft links vanuit dit hoofdstuk
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
| Tabel | Categorie | Doel / verantwoordelijkheid | Brongebruik |
|---|---|---|---|
Users | Identiteit | Basisaccount van een gebruiker, inclusief interne identiteit, koppeling naar de externe identity provider en weergave-gerelateerde gegevens. | Centrale hub voor vrijwel alle domeinen. |
Roles | Autorisatie | Definitie van beschikbare rollen binnen OefenHub. Rollen zijn bundels van permissions. | Wordt gebruikt in roltoekenning, relaties en live/auditcontext. |
UserRoles | Autorisatie | Koppelt één of meerdere rollen aan een gebruiker, inclusief auditinformatie over toekenning en intrekking. | Bepaalt welke role-bundels server-side beschikbaar kunnen zijn. |
Permissions | Autorisatie | Definitie van permission-codes volgens <resource>.<action>[.<scope>], inclusief Engelse beschrijving. | Runtime bron van permissionchecks en seedvalidatie. |
RolePermissions | Autorisatie | Koppelt permissions aan rollen, inclusief auditinformatie over toekenning en intrekking. | Bepaalt effectieve permissions per rol en invalidatie-impact. |
ProfileAvatars | Profiel | Vooraf gedefinieerde profielafbeeldingen waar gebruikers uit kiezen in plaats van vrije uploads. | Beperkte profielpresentatie zonder vrije upload. |
UserSettings | Gebruikersinstellingen | Gebruikersspecifieke voorkeuren en toegankelijkheidsinstellingen die buiten authenticatie en basisprofiel vallen. | Bevat presentatie- en toegankelijkheidsvoorkeuren, geen autorisatiebron. |
4.6 Relatie-startpunt binnen dit domein
| Brontabel | Veld | Verwijst naar | Type verwijzing | Nullable | Betekenis |
|---|---|---|---|---|---|
Users | ProfileAvatarId | ProfileAvatars.Id | Harde FK | J | Gekozen avatar uit goedgekeurde set binnen identity. |
UserRoles | UserId | Users.Id | Soft link | N | Gebruiker die de rol draagt; applicatief gevalideerd via identity. |
UserRoles | RoleId | Roles.Id | Harde FK | N | Toegekende rol binnen authorization. |
UserRoles | GrantedByUserId | Users.Id | Soft link | J | Actor die rol toekende; geen harde FK naar identity. |
UserRoles | RevokedByUserId | Users.Id | Soft link | J | Actor die rol introk; geen harde FK naar identity. |
RolePermissions | RoleId | Roles.Id | Harde FK | N | Rol waaraan de permission is gekoppeld. |
RolePermissions | PermissionId | Permissions.Id | Harde FK | N | Permission die via de rol wordt toegekend. |
RolePermissions | GrantedByUserId | Users.Id | Soft link | J | Actor die permission aan rol koppelde; geen harde FK naar identity. |
RolePermissions | RevokedByUserId | Users.Id | Soft link | J | Actor die permission van rol introk; geen harde FK naar identity. |
UserSettings | UserId | Users.Id | Harde FK | N | Instellingen horen bij exact één gebruiker binnen identity. |
UserSettings | SelectedTeacherLevelId | TeacherLevels.Id | Soft link | J | Actieve of laatst gekozen niveaucontext; cross-domeinverwijzing naar catalogus/docentstructuur. |
4.7 Wat bewust niet uit dit domein komt
| Onderwerp | Waar hoort het wel? | Reden |
|---|---|---|
| Login, wachtwoord, sessie en credential lifecycle | Identity provider / Keycloak | OefenHub bewaart geen credentials en valideert geen wachtwoorden. |
| Relaties tussen gebruikers | Relatiebeheer | Een gebruiker kan meerdere rollen hebben; relaties worden per relatietype en rolcontext vastgelegd. |
| Leerlingtoegang tot niveaus | Docentstructuur en leerlingtoegang | Niveauautorisatie is afhankelijk van docent-leerlingrelatie en docentcontext. |
| Oefenresultaten en geschiedenis | Oefenruns, delen en voortgang | Resultaten zijn historische runrecords, niet profielgegevens. |
| Berichten en notificaties | Communicatie en notificaties | Users is ontvanger/zender, maar niet de berichtbron. |
4.8 Belangrijke cross-domein aandachtspunten
Userskomt in bijna elk domein terug als eigenaar, actor, ontvanger, melder, docent, leerling, ouder/voogd of beheerder.Roleszijn permissionbundels en niet alleen UI-labels; rolcontext blijft relevant voor relaties, beheertoegang en live-meekijkregistratie.PermissionsenRolePermissionsbepalen de effectieve permission-set die per gebruiker wordt gecachet.- Iedere wijziging in
UserRolesofRolePermissionsheeft permissioncache-impact. UserSettings.SelectedTeacherLevelIdverwijst als soft link naarTeacherLevels.Iden 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
| Vervolg | Gebruik wanneer... |
|---|---|
| Relatiebeheer | je wilt weten hoe gebruikers vanuit rollen aan elkaar gekoppeld worden. |
| Docentstructuur en leerlingtoegang | je wilt weten hoe een docentcontext en leerlingtoegang ontstaan. |
| Cross-domein relaties | je wilt zien waar Users en Roles buiten dit domein terugkomen. |
| Relatie-index | je een concrete harde FK of soft link naar of vanuit Users of Roles wilt controleren. |