"use server"; import { revalidatePath } from "next/cache"; import { fehlerZustand, textfeld, type FormularZustand } from "@/server/actions/formular"; import { rechtErforderlich } from "@/server/auth/sitzungspflicht"; import { eigenenPublicKeyHinterlegen, eigenenSchluesselEntfernen } from "@/server/services/meine-schluessel"; /** * Self-Service (#013). Recht `eigeneSchluesselHinterlegen` hat jede Rolle; der Service * arbeitet ausschliesslich mit der Person des angemeldeten Kontos. */ export type HinterlegenZustand = FormularZustand & { readonly erfolg?: string }; export async function eigenenKeyHinterlegenAktion( _vorher: HinterlegenZustand, formular: FormData, ): Promise { try { const { benutzer } = await rechtErforderlich("eigeneSchluesselHinterlegen"); const neu = await eigenenPublicKeyHinterlegen(benutzer, { name: textfeld(formular, "name") ?? "", publicKey: textfeld(formular, "publicKey") ?? "", }); revalidatePath("/meine-schluessel"); return { erfolg: `Hinterlegt: ${neu.fingerprint}` }; } catch (fehler) { return fehlerZustand(fehler); } } export async function eigenenKeyEntfernenAktion( _vorher: FormularZustand, formular: FormData, ): Promise { try { const { benutzer } = await rechtErforderlich("eigeneSchluesselHinterlegen"); await eigenenSchluesselEntfernen(benutzer, textfeld(formular, "id") ?? ""); revalidatePath("/meine-schluessel"); return {}; } catch (fehler) { return fehlerZustand(fehler); } }