41 lines
1.4 KiB
TypeScript
41 lines
1.4 KiB
TypeScript
"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<void> {
|
|
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<void> {
|
|
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<void> {
|
|
const staff = await requirePermission(PERMS.RADIO_EDIT);
|
|
await executeLegacyHotelMutation(staff, "radio.api-key.delete", {
|
|
id: text(formData, "id"),
|
|
});
|
|
revalidatePath("/admin/radio/api-keys");
|
|
}
|