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
29 lines
946 B
TypeScript
Executable File
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");
|
|
}
|