MFA-enforcement ontbrak in route-handlers (alleen requireRole/assertCanWrite was MFA-aware) #98
Labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
jesse-a/OpenCRM#98
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Severity: HIGH
Mijn ronde-1 MFA-fix updateerde
requireRole()enassertCanWrite()insrc/lib/auth.tsom server-side TOTP af te dwingen. Maar veel route-handlers (app/api/**/route.tsenapp/(app)/**/route.ts) doen directgetSession()zondersession.totpEnabled-check. Een ingelogde manager/admin zonder afgeronde TOTP-setup kon dus via directe API-calls toch acties uitvoeren.Concrete kwetsbare routes:
api/search/route.tsapi/ai/{customer-summary,quote-draft,ocr-expense}/route.tsapi/kvk/search/route.tsapi/travel/quote/route.tsapi/attachments/[id]/route.tsapi/wordpress/[id]/stats-report/route.ts(app)/data/{export,ubl}/route.ts(app)/expenses/{export,[id]/receipt}/route.ts(app)/boekhouding/externe-facturen/[id]/file/route.ts(app)/{invoices,quotes,contracts}/[id]/{pdf,file}/route.tsFix: nieuwe helper
requireApiSession({minRole?})insrc/lib/auth.tsvoor route-handlers. Doet session + role + MFA-check, retourneert NextResponse-error i.p.v. te redirecten. 16 routes overgezet. Elke route kreeg een passende rol-eis: MANAGER voor write/AI, ADMIN voor bulk-exports, any-met-MFA voor read-only PDF/file-downloads.Files: src/lib/auth.ts + 16 route-files
Opgelost in commit
8e18add.