← Files Electrical Progress TrackerARCHIVED FILE
skills/create-tracker/assets/source/db/manager-access.ts
864 Bytes · Oct 5, 2026 · 18:34 UTC
import { env } from "cloudflare:workers";
import { progressDb } from "./progress";
import type { ChatGPTUser } from "../app/chatgpt-auth";
export type ManagerRole = "owner" | "manager" | null;
export async function managerRole(user: ChatGPTUser | null): Promise<ManagerRole> {
if (!user) return null;
const email = user.email.trim().toLowerCase();
if (env.OWNER_EMAIL && email === env.OWNER_EMAIL.trim().toLowerCase()) return "owner";
const manager = await progressDb()
.prepare("SELECT email FROM tracker_managers WHERE email = ?")
.bind(email)
.first<{ email: string }>();
return manager ? "manager" : null;
}
export async function requireManager(user: ChatGPTUser | null) {
return (await managerRole(user)) !== null;
}
export async function requireOwner(user: ChatGPTUser | null) {
return (await managerRole(user)) === "owner";
}
SHA-256: 754c58f39473810a1a3f3954870e0cf155c15e5f0d27d70c5e98fb50dbe5395a