Private data
The denylist table lives in a dedicated private schema and revokes access from public, anon, and authenticated.
Supabase integration · review first
Reject temporary email signups before Auth creates a user, using a private schema, RLS, least-privilege grants, and an explicit hook migration.
SIGNUP_EMAIL_NOT_ALLOWED for malformed or default-blockable disposable domains and returns an empty object for allowed signups.node cli/dist/bin.js init supabase \
--output supabase/migrations/20260827000000_disposable_email_guard.sqlInspect the file before applying it with your normal migration workflow. The command does not read credentials, connect to a project, or run supabase db push.
The denylist table lives in a dedicated private schema and revokes access from public, anon, and authenticated.
Only supabase_auth_admin receives schema usage, table select, and function execute grants.
SQL is generated locally. Production application remains an explicit operator decision.
It does not block Gmail/Yahoo, probe SMTP, copy another list, or replace rate limiting, CAPTCHA, or email verification. Use a reviewed custom allowlist for false positives.