← Files Electrical Progress TrackerARCHIVED FILE

skills/create-tracker/assets/source/db/manager-access.ts

864 Bytes · Oct 3, 2026 · 06:35 UTC

↓ Download file

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