feat(auth): owner allowlist — founder gets full access, never plan-gated #4062
ccantynzcommented Jun 12, 2026
Originally written by @vercel[bot] on GitHub.
Deployment failed with the following error:
There is no GitHub account connected to this Vercel account.ccantynzcommented Jun 12, 2026
Originally written by @vercel[bot] on GitHub.
The latest updates on your projects. Learn more about Vercel for GitHub.
| Project | Deployment | Actions | Updated (UTC) |
|---|---|---|---|
| alec-rae-com-admin | Preview, Comment | Jun 12, 2026 9:50pm |
Cross-repo impact
See what breaks downstream if this PR merges.
⮌ Merged
This pull request was merged into main.
c comment · e edit title · m merge · a approve · r request changes · ? shortcuts
Originally written by @ccantynz-alt on GitHub.
Imported from https://github.com/ccantynz-alt/AlecRae.com/pull/69
The problem
New accounts default to the
freeplan tier (accounts.planTierdefault). So when the founder signs in with Google, he gets a free-tier account and is plan-gated on his own product — no way to use it as the owner.The fix
An env-driven owner allowlist (
apps/api/src/lib/owner-allowlist.ts):ccantynz@gmail.com) is built in, so it works with zero env config on the box (important — Craig is operating from an iPad)OWNER_EMAILSenv var adds more owners (staff, co-founders) without a code changeRole (
owner) and plan (enterprise) are now both correct for the founder, and the sidebar role badge from PR #67 will show OWNER.Verification
bun run typecheck✅ cleantests/owner-allowlist.test.ts) ✅ all pass — covers built-in founder, env additions, case/whitespace normalization, non-owner rejection, upgrade + no-op reconciliation.env.exampledocumentsOWNER_EMAILSTo take effect
The box needs to pull this build (the new "Deploy to Box" workflow from #68, or the one-liner). After it's live, sign in again — the free account upgrades to enterprise automatically.
https://claude.ai/code/session_0162YN9hcciwvFju6Ead8s2J
Generated by Claude Code