MFA wordt alleen UI-side afgedwongen, niet server-side #85

Closed
opened 2026-05-26 18:23:23 +00:00 by jesse-a · 1 comment
Owner

Severity: HIGH

requireRole() en assertCanWrite() checken in src/lib/auth.ts alleen de role. Een ingelogde MANAGER/ADMIN zonder afgeronde TOTP-setup kon dus via directe server-action-calls of API-routes toch acties uitvoeren — de UI-redirect in src/app/(app)/layout.tsx was de enige barrière.

Fix: SessionPayload uitgebreid met totpEnabled, live uit DB gelezen door getSession(). requireRole() en assertCanWrite() werpen nu als TOTP niet ingeschakeld is. De 2FA-setup-flow blijft op requireSession() draaien zodat nieuwe gebruikers zich kunnen inschrijven.

Files: src/lib/auth.ts, src/lib/session.ts, src/app/actions/auth.ts, src/app/actions/account.ts

**Severity: HIGH** `requireRole()` en `assertCanWrite()` checken in `src/lib/auth.ts` alleen de role. Een ingelogde MANAGER/ADMIN zonder afgeronde TOTP-setup kon dus via directe server-action-calls of API-routes toch acties uitvoeren — de UI-redirect in `src/app/(app)/layout.tsx` was de enige barrière. **Fix**: `SessionPayload` uitgebreid met `totpEnabled`, live uit DB gelezen door `getSession()`. `requireRole()` en `assertCanWrite()` werpen nu als TOTP niet ingeschakeld is. De 2FA-setup-flow blijft op `requireSession()` draaien zodat nieuwe gebruikers zich kunnen inschrijven. **Files**: src/lib/auth.ts, src/lib/session.ts, src/app/actions/auth.ts, src/app/actions/account.ts
Author
Owner

Opgelost in commit 67b2580.

Opgelost in commit 67b2580.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
jesse-a/OpenCRM#85
No description provided.