"use server"; import { revalidatePath } from "next/cache"; import { redirect } from "next/navigation"; import { executeLegacyHotelMutation } from "@/features/housekeeping/domains/hotel/services/mutations"; import { requirePermission } from "@/lib/admin/guard"; import { PERMS } from "@/lib/permissions"; function text(formData: FormData, key: string): string { return String(formData.get(key) ?? "") .normalize("NFC") .trim(); } export async function createApiKey(formData: FormData): Promise { const staff = await requirePermission(PERMS.RADIO_EDIT); await executeLegacyHotelMutation(staff, "radio.api-key.create", { name: text(formData, "name"), allowedIps: text(formData, "allowedIps") || undefined, rateLimit: Number(text(formData, "rateLimit") || 300), }); revalidatePath("/admin/radio/api-keys"); redirect("/admin/radio/api-keys?created=1"); } export async function toggleApiKey(formData: FormData): Promise { const staff = await requirePermission(PERMS.RADIO_EDIT); await executeLegacyHotelMutation(staff, "radio.api-key.toggle", { id: text(formData, "id"), }); revalidatePath("/admin/radio/api-keys"); } export async function deleteApiKey(formData: FormData): Promise { const staff = await requirePermission(PERMS.RADIO_EDIT); await executeLegacyHotelMutation(staff, "radio.api-key.delete", { id: text(formData, "id"), }); revalidatePath("/admin/radio/api-keys"); }