'use server' import { revalidatePath } from 'next/cache' import { z } from 'zod' import { requireUser } from '@/lib/auth/current' import { AccessError } from '@/lib/errors' import { releaseAttachment } from '@/lib/files/service' import { de } from '@/lib/i18n/de' export type ActionResult = { ok: true } | { ok: false; error: string } const schema = z.object({ id: z.string().min(1) }) /** * Freigabe einer Datei, deren Prüfung nicht abgeschlossen werden konnte. * Nur mit Recht `admin`, geprüft im Dienst — nicht hier. */ export async function releaseAttachmentAction(input: unknown): Promise { const user = await requireUser() const parsed = schema.safeParse(input) if (!parsed.success) return { ok: false, error: de.actionErrors.default! } try { await releaseAttachment(user.permissions, parsed.data.id) revalidatePath('/faelle') return { ok: true } } catch (error) { if (error instanceof AccessError) { return { ok: false, error: de.attachment.errors[error.code] ?? de.actionErrors[error.code] ?? de.actionErrors.default!, } } console.error('[dateien] Freigabe fehlgeschlagen', error) return { ok: false, error: de.actionErrors.default! } } }