All checks were successful
Container-Image bauen und veröffentlichen / build-and-push (push) Successful in 5m15s
64 lines
2.0 KiB
TypeScript
64 lines
2.0 KiB
TypeScript
import { NextRequest, NextResponse } from 'next/server'
|
||
import { requireAdmin } from '@/lib/require-admin'
|
||
import { DEFAULTED_FIELDS, DEFAULTED_FIELD_LABELS, REQUIRED_DEFAULTED_FIELDS } from '@/lib/policy-defaults'
|
||
import { readPolicyDefaults } from '@/lib/policy-defaults.server'
|
||
|
||
// Prisma client instance
|
||
import { prisma } from "@/lib/prisma"
|
||
|
||
// GET /api/policy-defaults - liefert die zentralen Standardtexte
|
||
export async function GET() {
|
||
try {
|
||
const defaults = await readPolicyDefaults(prisma)
|
||
return NextResponse.json(defaults)
|
||
} catch (error) {
|
||
console.error('Error fetching policy defaults:', error)
|
||
return NextResponse.json(
|
||
{ error: 'Fehler beim Abrufen der Standardtexte' },
|
||
{ status: 500 }
|
||
)
|
||
}
|
||
}
|
||
|
||
// PUT /api/policy-defaults - speichert die zentralen Standardtexte (Admin)
|
||
export async function PUT(request: NextRequest) {
|
||
try {
|
||
const denied = await requireAdmin()
|
||
if (denied) return denied
|
||
|
||
const data = await request.json()
|
||
|
||
// Die Pflicht-Bausteine dürfen im Standard nicht leer bleiben – sonst
|
||
// fehlen sie in jeder Erklärung, die keinen eigenen Text hinterlegt hat.
|
||
const errors = REQUIRED_DEFAULTED_FIELDS.filter(
|
||
(field) => !String(data[field] ?? '').trim()
|
||
).map((field) => `${DEFAULTED_FIELD_LABELS[field]} ist erforderlich`)
|
||
|
||
if (errors.length > 0) {
|
||
return NextResponse.json(
|
||
{ error: 'Validierungsfehler', details: errors },
|
||
{ status: 400 }
|
||
)
|
||
}
|
||
|
||
// Nur die bekannten Felder übernehmen, jeweils getrimmt.
|
||
const values = Object.fromEntries(
|
||
DEFAULTED_FIELDS.map((field) => [field, String(data[field] ?? '').trim()])
|
||
)
|
||
|
||
const saved = await prisma.policyDefaults.upsert({
|
||
where: { id: 1 },
|
||
update: values,
|
||
create: { id: 1, ...values },
|
||
})
|
||
|
||
return NextResponse.json(saved)
|
||
} catch (error) {
|
||
console.error('Error updating policy defaults:', error)
|
||
return NextResponse.json(
|
||
{ error: 'Fehler beim Speichern der Standardtexte' },
|
||
{ status: 500 }
|
||
)
|
||
}
|
||
}
|