caterium-app/tests/auth-security-v1774.mjs
pavlov346346-source 736e551369
Security: require verified email for signup
* security: require verified email for client signups

* security: load verified-email auth guard

* test: include auth security guard in deploy checks

* test: guard verified-email signup flow

* security: remove client-controlled email autoconfirm triggers
2026-09-11 07:27:37 +03:00

21 lines
1.7 KiB
JavaScript

import fs from 'node:fs';
const auth=fs.readFileSync('public/core/auth-security-v1774.js','utf8');
const perf=fs.readFileSync('public/core/performance.js','utf8');
const migration=fs.readFileSync('ops/sql/SUPABASE-V17.7.4-AUTH-EMAIL-VERIFICATION.sql','utf8');
let bad=0;
const check=(ok,msg)=>{console.log(`${ok?'OK':'FAIL'}: ${msg}`);if(!ok)bad++;};
check(auth.includes('emailRedirectTo:redirectUrl()'),'signup sets explicit confirmation redirect');
check(auth.includes('showPublicConfirmation')&&auth.includes('Подтвердите email'),'public signup waits for email confirmation');
check(auth.includes('showInviteConfirmation'),'invite signup waits for email confirmation');
check(!auth.includes("registration_source:'caterium_public_signup'")&&!auth.includes("registration_source:'caterium_invite_signup'"),'security guard does not trust client-controlled registration_source');
check(auth.includes("result.data?.session")&&auth.includes('signOutUnsafeSession'),'guard fails closed if server still auto-confirms');
check(perf.includes('loadAuthSecurity')&&perf.includes('auth-security-v1774.js'),'auth security guard is loaded by performance core');
check(migration.includes('drop trigger if exists caterium_autoconfirm_signup_v25 on auth.users'),'autoconfirm users trigger is removed');
check(migration.includes('drop trigger if exists caterium_autoverify_identity_v25 on auth.identities'),'autoverify identity trigger is removed');
check(migration.includes('drop function if exists public.caterium_autoconfirm_signup_v25()'),'unsafe autoconfirm function is removed');
check(migration.includes('drop function if exists public.caterium_autoverify_identity_v25()'),'unsafe identity verification function is removed');
if(bad)process.exit(1);