Ga naar hoofdinhoud

Authenticatie & Autorisatie

Aanmeldproces

Authenticatie gebruikt better-auth met Microsoft Entra ID (Azure AD) als sociale provider. Gebruikers loggen in met hun organisatieaccount.

  • De aanmeldpagina bevindt zich op /{locale}/auth/signin
  • De API-route op /api/auth/[...all] verwerkt alle better-auth-endpoints (aanmelden, sessie, tokenverversing, etc.)
  • Sessies worden opgeslagen in PostgreSQL via Prisma

Sessieafhandeling

De server-utility checkSession() uit src/lib/utils-server.ts leest de sessie met headers() van next/headers en verwijst niet-geauthenticeerde gebruikers door naar de aanmeldpagina.

const { data: session } = await checkSession();
// session.user.id, session.user.email, session.user.role, ...

Rolgebaseerde toegang

Er zijn twee rollen: user (standaard) en admin.

  • Beheerdersbeveiliging: beheerderspagina's controleren session.user.role !== "admin" en geven een 403 of verwijzing
  • Server-action beveiliging: beheerdersacties (zoals het bewerken van gebruikersprofielen) controleren de sessierol voordat ze worden uitgevoerd
  • Voorwaardelijke UI-rendering: navigatielinks en UI-elementen worden voorwaardelijk weergegeven op basis van de rol

VM-autorisatie

De resolveVm()-utility handhaaft gelaagde VM-toegangscontrole:

GebruikerstypeKan bekijkenKan starten/stop/herstartenKan verwijderen
VM-eigenaarJaJaJa
BeheerderJaJaJa
Gedeelde gebruiker (allowActions)JaJaNee
Gedeelde gebruiker (!allowActions)JaNeeNee
Iedereen andersNee