2025-10-07 14:53:47 -03:00

78 lines
2.6 KiB
TypeScript

// 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<string, unknown>;
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);
})();