feat: household api token auth foundation
This commit is contained in:
@@ -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");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user