147 lines
4.8 KiB
JavaScript
147 lines
4.8 KiB
JavaScript
/**
|
|
* Script para listar todos os usuários do sistema
|
|
* Lista informações de auth.users, doctors e patients
|
|
*/
|
|
|
|
import axios from "axios";
|
|
|
|
const SUPABASE_URL = "https://yuanqfswhberkoevtmfr.supabase.co";
|
|
const SUPABASE_ANON_KEY =
|
|
"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6Inl1YW5xZnN3aGJlcmtvZXZ0bWZyIiwicm9sZSI6ImFub24iLCJpYXQiOjE3NTQ5NTQzNjksImV4cCI6MjA3MDUzMDM2OX0.g8Fm4XAvtX46zifBZnYVH4tVuQkqUH6Ia9CXQj4DztQ";
|
|
|
|
// Credenciais do admin
|
|
const ADMIN_EMAIL = "riseup@popcode.com.br";
|
|
const ADMIN_PASSWORD = "riseup";
|
|
|
|
async function main() {
|
|
try {
|
|
console.log("🔐 Fazendo login como admin...\n");
|
|
|
|
// 1. Login do admin
|
|
const loginResponse = await axios.post(
|
|
`${SUPABASE_URL}/auth/v1/token?grant_type=password`,
|
|
{
|
|
email: ADMIN_EMAIL,
|
|
password: ADMIN_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}\n`);
|
|
|
|
// 2. Listar todos os médicos
|
|
console.log("👨⚕️ LISTANDO MÉDICOS:\n");
|
|
const medicosResponse = await axios.get(
|
|
`${SUPABASE_URL}/rest/v1/doctors?select=*`,
|
|
{
|
|
headers: {
|
|
apikey: SUPABASE_ANON_KEY,
|
|
Authorization: `Bearer ${token}`,
|
|
},
|
|
}
|
|
);
|
|
|
|
console.log(`Total de médicos: ${medicosResponse.data.length}\n`);
|
|
medicosResponse.data.forEach((medico, index) => {
|
|
console.log(
|
|
`${index + 1}. ${medico.full_name || medico.nome || "Sem nome"}`
|
|
);
|
|
console.log(` ID: ${medico.id}`);
|
|
console.log(` User ID: ${medico.user_id || "não vinculado"}`);
|
|
console.log(` Email: ${medico.email}`);
|
|
console.log(` CRM: ${medico.crm} - ${medico.crm_uf || ""}`);
|
|
console.log(
|
|
` Especialidade: ${medico.specialty || medico.especialidade}`
|
|
);
|
|
console.log(` Ativo: ${medico.active ? "Sim" : "Não"}`);
|
|
console.log("");
|
|
});
|
|
|
|
// 3. Listar todos os pacientes
|
|
console.log("👥 LISTANDO PACIENTES:\n");
|
|
const pacientesResponse = await axios.get(
|
|
`${SUPABASE_URL}/rest/v1/patients?select=*`,
|
|
{
|
|
headers: {
|
|
apikey: SUPABASE_ANON_KEY,
|
|
Authorization: `Bearer ${token}`,
|
|
},
|
|
}
|
|
);
|
|
|
|
console.log(`Total de pacientes: ${pacientesResponse.data.length}\n`);
|
|
pacientesResponse.data.forEach((paciente, index) => {
|
|
console.log(`${index + 1}. ${paciente.full_name}`);
|
|
console.log(` ID: ${paciente.id}`);
|
|
console.log(` Email: ${paciente.email}`);
|
|
console.log(` CPF: ${paciente.cpf}`);
|
|
console.log(` Telefone: ${paciente.phone_mobile}`);
|
|
console.log("");
|
|
});
|
|
|
|
// 4. Verificar se existe tabela de roles/profiles
|
|
console.log("🔍 VERIFICANDO ESTRUTURA DE ROLES:\n");
|
|
try {
|
|
const profilesResponse = await axios.get(
|
|
`${SUPABASE_URL}/rest/v1/profiles?select=*`,
|
|
{
|
|
headers: {
|
|
apikey: SUPABASE_ANON_KEY,
|
|
Authorization: `Bearer ${token}`,
|
|
},
|
|
}
|
|
);
|
|
console.log(
|
|
`✅ Tabela profiles encontrada com ${profilesResponse.data.length} registros`
|
|
);
|
|
console.log("Profiles:");
|
|
profilesResponse.data.forEach((profile) => {
|
|
console.log(` - User ID: ${profile.id || profile.user_id}`);
|
|
console.log(` Role: ${profile.role || "não definida"}`);
|
|
console.log(` Nome: ${profile.full_name || "não definido"}`);
|
|
console.log("");
|
|
});
|
|
} catch (error) {
|
|
if (error.response?.status === 404) {
|
|
console.log("⚠️ Tabela profiles não encontrada ou não acessível");
|
|
console.log(
|
|
"💡 Sugestão: Criar tabela profiles com campos: id (uuid), user_id (uuid), role (text), full_name (text)\n"
|
|
);
|
|
} else {
|
|
console.log(
|
|
"❌ Erro ao acessar profiles:",
|
|
error.response?.data?.message || error.message
|
|
);
|
|
}
|
|
}
|
|
|
|
// 5. Resumo
|
|
console.log("📊 RESUMO:\n");
|
|
console.log(`✅ ${medicosResponse.data.length} médicos cadastrados`);
|
|
console.log(`✅ ${pacientesResponse.data.length} pacientes cadastrados`);
|
|
|
|
const medicosComUser = medicosResponse.data.filter((m) => m.user_id).length;
|
|
console.log(`\n🔗 ${medicosComUser} médicos vinculados a usuários auth`);
|
|
console.log(
|
|
`⚠️ ${
|
|
medicosResponse.data.length - medicosComUser
|
|
} médicos SEM vinculação auth\n`
|
|
);
|
|
} catch (error) {
|
|
console.error("❌ Erro:", error.response?.data || error.message);
|
|
if (error.response) {
|
|
console.error("Status:", error.response.status);
|
|
}
|
|
}
|
|
}
|
|
|
|
main();
|