riseup-squad18/MEDICONNECT 2/scripts/testar-login-fernando.js

131 lines
4.4 KiB
JavaScript
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* Script para testar login do médico Fernando
* Verifica autenticação e se o usuário é identificado como médico
*/
import axios from "axios";
const SUPABASE_URL = "https://yuanqfswhberkoevtmfr.supabase.co";
const SUPABASE_ANON_KEY =
"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6Inl1YW5xZnN3aGJlcmtvZXZ0bWZyIiwicm9sZSI6ImFub24iLCJpYXQiOjE3NTQ5NTQzNjksImV4cCI6MjA3MDUzMDM2OX0.g8Fm4XAvtX46zifBZnYVH4tVuQkqUH6Ia9CXQj4DztQ";
const FERNANDO_EMAIL = "fernando.pirichowski@souunit.com.br";
const FERNANDO_PASSWORD = "fernando";
async function main() {
try {
console.log("🔐 TESTANDO LOGIN DO MÉDICO FERNANDO\n");
console.log("Credenciais:");
console.log(` Email: ${FERNANDO_EMAIL}`);
console.log(` Senha: ${FERNANDO_PASSWORD}\n`);
// 1. Fazer login
console.log("1⃣ Fazendo login...\n");
const loginResponse = await axios.post(
`${SUPABASE_URL}/auth/v1/token?grant_type=password`,
{
email: FERNANDO_EMAIL,
password: FERNANDO_PASSWORD,
},
{
headers: {
apikey: SUPABASE_ANON_KEY,
"Content-Type": "application/json",
},
}
);
const token = loginResponse.data.access_token;
const userId = loginResponse.data.user.id;
console.log("✅ Login realizado com sucesso!");
console.log(` User ID: ${userId}`);
console.log(` Email: ${loginResponse.data.user.email}\n`);
// 2. Verificar se é médico (consultar tabela doctors)
console.log("2⃣ Verificando se usuário é médico...\n");
const doctorResponse = await axios.get(
`${SUPABASE_URL}/rest/v1/doctors?user_id=eq.${userId}&select=*`,
{
headers: {
apikey: SUPABASE_ANON_KEY,
Authorization: `Bearer ${token}`,
},
}
);
if (doctorResponse.data.length > 0) {
const doctor = doctorResponse.data[0];
console.log("✅ USUÁRIO É MÉDICO!");
console.log("\n📋 Dados do médico:");
console.log(` ID: ${doctor.id}`);
console.log(` Nome: ${doctor.full_name}`);
console.log(` Email: ${doctor.email}`);
console.log(` CRM: ${doctor.crm}-${doctor.crm_uf}`);
console.log(` Especialidade: ${doctor.specialty}`);
console.log(` Ativo: ${doctor.active ? "Sim" : "Não"}`);
console.log(` User ID: ${doctor.user_id}\n`);
console.log("✅ LOGIN VÁLIDO - Pode acessar painel médico!");
console.log("🎯 Redirecionamento: /painel-medico\n");
} else {
console.log("❌ USUÁRIO NÃO É MÉDICO");
console.log(" Este usuário não tem registro na tabela doctors");
console.log(" Acesso ao painel médico será negado.\n");
}
// 3. Buscar consultas do médico (se aplicável)
if (doctorResponse.data.length > 0) {
console.log("3⃣ Buscando consultas do médico...\n");
try {
const consultasResponse = await axios.get(
`${SUPABASE_URL}/rest/v1/appointments?doctor_id=eq.${doctorResponse.data[0].id}&select=*`,
{
headers: {
apikey: SUPABASE_ANON_KEY,
Authorization: `Bearer ${token}`,
},
}
);
console.log(
` Total de consultas: ${consultasResponse.data.length}\n`
);
} catch (error) {
console.log(" ⚠️ Tabela appointments não encontrada ou sem dados\n");
}
}
// 4. Resumo
console.log("📊 RESUMO DO TESTE:\n");
console.log("✅ Autenticação funcionando corretamente");
console.log("✅ Verificação de role médico implementada");
console.log("✅ Token JWT válido gerado");
console.log(
`✅ Médico: ${doctorResponse.data.length > 0 ? "SIM" : "NÃO"}\n`
);
if (doctorResponse.data.length > 0) {
console.log("🎉 TESTE BEM-SUCEDIDO!");
console.log(
"O médico Fernando pode fazer login e acessar o painel médico.\n"
);
}
} catch (error) {
console.error("❌ ERRO NO TESTE:", error.response?.data || error.message);
if (error.response) {
console.error("Status:", error.response.status);
if (error.response.status === 400) {
console.error("\n💡 Possíveis causas:");
console.error(" - Email ou senha incorretos");
console.error(" - Usuário não existe");
console.error(
" - Email não confirmado (verificar configurações Supabase)"
);
}
}
}
}
main();