# Database Design — Unit 02: Identity & RBAC Dit document beschrijft de database schema configuratie voor de identiteitsmodule. ## 1. DbContext Mapping (Identity) De `ApplicationDbContext` erft over van `IdentityDbContext, Guid>`. In `OnModelCreating` worden de tabelnamen geconfigureerd: ```csharp protected override void OnModelCreating(ModelBuilder builder) { base.OnModelCreating(builder); builder.Entity(entity => { entity.ToTable("Users"); }); builder.Entity>(entity => { entity.ToTable("Roles"); }); builder.Entity>(entity => { entity.ToTable("UserRoles"); }); builder.Entity>(entity => { entity.ToTable("UserClaims"); }); builder.Entity>(entity => { entity.ToTable("UserLogins"); }); builder.Entity>(entity => { entity.ToTable("RoleClaims"); }); builder.Entity>(entity => { entity.ToTable("UserTokens"); }); } ``` ## 2. Aanvullende Tabellen ### RefreshTokens - **Tabel**: `RefreshTokens` - **PK**: `Id` (Guid) - **FK**: `UserId` -> `Users.Id` - **Index**: `Token` (Unique) ### Invitations - **Tabel**: `Invitations` - **PK**: `Id` (Guid) - **Index**: `Token` (Unique) - **Email**: `NVARCHAR(256)` ### ModulePermissions - **Tabel**: `ModulePermissions` - **Composite PK**: `(UserId, ModuleName, Permission)` - **FK**: `UserId` -> `Users.Id` ## 3. Auditing (NFR-ID-SEC-03) Er wordt een aparte `AuditLogs` tabel aangemaakt voor het loggen van mutaties: - `Id` (Guid) - `Timestamp` (DateTimeOffset) - `ActorId` (Guid - De uitvoerder) - `Action` (String - bijv. "RoleChange", "UserCreated") - `EntityId` (Guid - Het doelobject) - `Details` (JSON/String - Oude vs Nieuwe waarden)