Files
caddy-proxy-manager/app/(dashboard)/api-tokens/actions.ts
akanealw 99819b70ff
Some checks failed
Build and Push Docker Images (Trusted) / build-and-push (., docker/caddy/Dockerfile, caddy) (push) Has been cancelled
Build and Push Docker Images (Trusted) / build-and-push (., docker/l4-port-manager/Dockerfile, l4-port-manager) (push) Has been cancelled
Build and Push Docker Images (Trusted) / build-and-push (., docker/web/Dockerfile, web) (push) Has been cancelled
Tests / test (push) Has been cancelled
added caddy-proxy-manager for testing
2026-04-21 22:49:08 +00:00

29 lines
946 B
TypeScript
Executable File

"use server";
import { revalidatePath } from "next/cache";
import { requireUser } from "@/src/lib/auth";
import { createApiToken, deleteApiToken } from "@/src/lib/models/api-tokens";
export async function createApiTokenAction(formData: FormData): Promise<{ rawToken: string } | { error: string }> {
const session = await requireUser();
const userId = Number(session.user.id);
const name = String(formData.get("name") ?? "").trim();
if (!name) {
return { error: "Name is required" };
}
const expiresAt = formData.get("expires_at") ? String(formData.get("expires_at")) : undefined;
const { rawToken } = await createApiToken(name, userId, expiresAt || undefined);
revalidatePath("/profile");
return { rawToken };
}
export async function deleteApiTokenAction(id: number) {
const session = await requireUser();
const userId = Number(session.user.id);
await deleteApiToken(id, userId);
revalidatePath("/profile");
}