// Script diagnóstico para testar login Supabase password grant // Executar com: npx ts-node scripts/diagnose-login.ts (ou adicionar script no package.json) // Node 18+ possui fetch nativo; sem dependência externa // Declaração mínima para evitar erro de tipos sem adicionar @types/node // eslint-disable-next-line @typescript-eslint/no-explicit-any declare const process: any | undefined; const SUPABASE_URL = (typeof process !== "undefined" && process.env.VITE_SUPABASE_URL) || "https://yuanqfswhberkoevtmfr.supabase.co"; const ANON_KEY = (typeof process !== "undefined" && process.env.VITE_SUPABASE_ANON_KEY) || "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6Inl1YW5xZnN3aGJlcmtvZXZ0bWZyIiwicm9sZSI6ImFub24iLCJpYXQiOjE3NTQ5NTQzNjksImV4cCI6MjA3MDUzMDM2OX0.g8Fm4XAvtX46zifBZnYVH4tVuQkqUH6Ia9CXQj4DztQ"; // Credenciais admin de desenvolvimento (fornecidas) const EMAIL = (typeof process !== "undefined" && process.env.TEST_ADMIN_EMAIL) || "riseup@popcode.com.br"; const PASSWORD = (typeof process !== "undefined" && process.env.TEST_ADMIN_PASSWORD) || "riseup"; async function attemptLogin() { const url = `${SUPABASE_URL}/auth/v1/token?grant_type=password`; const body = { email: EMAIL, password: PASSWORD }; try { const res = await fetch(url, { method: "POST", headers: { "Content-Type": "application/json", apikey: ANON_KEY, Authorization: `Bearer ${ANON_KEY}`, }, body: JSON.stringify(body), }); const text = await res.text(); let parsed: unknown = null; try { parsed = JSON.parse(text); } catch { /* plain text */ } console.log("STATUS", res.status); console.log("RAW", text); if ( res.ok && typeof parsed === "object" && parsed && "access_token" in parsed ) { const token = (parsed as { access_token: string }).access_token; console.log("LOGIN OK: access_token prefix", token.slice(0, 20)); return true; } // Erro comum: user not confirmed / invalid login if (parsed && typeof parsed === "object") { const p = parsed as Record; if (p.error) console.log("ERROR CODE:", p.error); if (p.msg) console.log("MSG:", p.msg); } if (/email/i.test(text) && /confirm/i.test(text)) { console.log( "Possível conta não confirmada. Verifique no painel Supabase se o email foi confirmado." ); } return false; } catch (e) { console.error("Falha inesperada:", e); return false; } } (async () => { const ok = await attemptLogin(); if (!ok && typeof process !== "undefined") process.exit(1); })();