syncova-policies/lib/require-admin.ts
Weapie 265ca8ac38
All checks were successful
Container-Image bauen und veröffentlichen / build-and-push (push) Successful in 5m15s
Improve accessibility and access controls; verify production and database recovery
2026-09-14 11:44:41 +02:00

23 lines
792 B
TypeScript

import { NextResponse } from 'next/server'
import { auth } from '@/lib/auth'
import { prisma } from '@/lib/prisma'
import { canUseSession } from '@/lib/session-access'
export async function getAdminSession() {
const session = await auth()
const id = Number(session?.user.id)
if (!session || !Number.isSafeInteger(id) || id <= 0) return null
const user = await prisma.user.findUnique({ where: { id } })
if (!canUseSession(user, session.issuedAt)) return null
return { ...session, user: { ...session.user, role: user!.role } }
}
export async function isAdminSession() {
return !!(await getAdminSession())
}
export async function requireAdmin() {
if (!(await isAdminSession())) {
return NextResponse.json({ error: 'Nicht autorisiert' }, { status: 401 })
}
return null
}