All checks were successful
Container-Image bauen und veröffentlichen / build-and-push (push) Successful in 5m15s
23 lines
792 B
TypeScript
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
|
|
}
|