fix: admin-navigatie zichtbaar voor ADMIN-rol gebruikers

- requireAdmin() checkt nu de database i.p.v. session.isAdmin (was altijd undefined)
- loginAction stelt session.isAdmin in op basis van UserRole in de DB
- registerAction stelt session.isAdmin = false expliciet in
- NavBar toont 'Admin'-link conditioneel als roles.includes('ADMIN')
- UserMenu ROLE_LABELS uitgebreid met ADMIN → 'Admin'
- Tests aangepast: prismaUserRole.findFirst mock toegevoegd

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Janpeter Visser 2026-05-05 20:26:54 +02:00
commit fbf58d4e44
6 changed files with 26 additions and 2 deletions

View file

@ -1,6 +1,7 @@
import { redirect } from 'next/navigation'
import { getSession } from '@/lib/auth'
import { isPairedSessionExpired } from '@/lib/auth/pairing'
import { prisma } from '@/lib/prisma'
/**
* Layout-side auth guard. Returns the session when valid; otherwise redirects
@ -25,7 +26,13 @@ export async function requireSession() {
export async function requireAdmin() {
const session = await getSession()
if (!session.userId || !session.isAdmin) {
if (!session.userId) {
redirect('/dashboard')
}
const adminRole = await prisma.userRole.findFirst({
where: { user_id: session.userId, role: 'ADMIN' },
})
if (!adminRole) {
redirect('/dashboard')
}
return session