feat: household api token auth foundation

This commit is contained in:
ginnoir
2026-07-04 18:57:31 -05:00
parent 2c0c31540e
commit ea5d1d050c
11 changed files with 465 additions and 32 deletions
+20
View File
@@ -24,6 +24,7 @@ import type {
} from "@/modules/_core/themes";
import { getCurrentSession } from "@/lib/session";
import { revokeShareLink } from "@/modules/_core/share";
import { createHouseholdApiToken, revokeHouseholdApiToken } from "@/modules/_core/api-token";
export interface ThemePatch {
palette?: Palette;
@@ -88,3 +89,22 @@ export async function revokeShareLinkAction(formData: FormData): Promise<void> {
await revokeShareLink(id);
revalidatePath("/settings");
}
function requireOwner(role: "owner" | "member") {
if (role !== "owner") throw new Error("Only household owners can manage API tokens");
}
export async function createApiTokenAction(): Promise<{ token: string }> {
const { household, role, user } = await getCurrentSession();
requireOwner(role);
const result = await createHouseholdApiToken(household.id, user.id);
revalidatePath("/settings");
return result;
}
export async function revokeApiTokenAction(): Promise<void> {
const { household, role } = await getCurrentSession();
requireOwner(role);
await revokeHouseholdApiToken(household.id);
revalidatePath("/settings");
}