188 lines
6.8 KiB
JavaScript
188 lines
6.8 KiB
JavaScript
import axios from "axios";
|
||
|
||
const SUPABASE_URL = "https://yuanqfswhberkoevtmfr.supabase.co";
|
||
const SUPABASE_ANON_KEY =
|
||
"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6Inl1YW5xZnN3aGJlcmtvZXZ0bWZyIiwicm9sZSI6ImFub24iLCJpYXQiOjE3NTQ5NTQzNjksImV4cCI6MjA3MDUzMDM2OX0.g8Fm4XAvtX46zifBZnYVH4tVuQkqUH6Ia9CXQj4DztQ";
|
||
|
||
async function verificarPermissoesFernando() {
|
||
try {
|
||
console.log("═══════════════════════════════════════════════════");
|
||
console.log("🔍 VERIFICANDO PERMISSÕES DE FERNANDO");
|
||
console.log("═══════════════════════════════════════════════════\n");
|
||
|
||
// 1. Login como Fernando
|
||
console.log("🔑 Fazendo login como Fernando...");
|
||
const loginResponse = await axios.post(
|
||
`${SUPABASE_URL}/auth/v1/token?grant_type=password`,
|
||
{
|
||
email: "fernando.pirichowski@souunit.com.br",
|
||
password: "fernando",
|
||
},
|
||
{
|
||
headers: {
|
||
apikey: SUPABASE_ANON_KEY,
|
||
"Content-Type": "application/json",
|
||
},
|
||
}
|
||
);
|
||
|
||
const token = loginResponse.data.access_token;
|
||
const userId = loginResponse.data.user.id;
|
||
const userEmail = loginResponse.data.user.email;
|
||
|
||
console.log("✅ Login realizado com sucesso!");
|
||
console.log(` User ID: ${userId}`);
|
||
console.log(` Email: ${userEmail}\n`);
|
||
|
||
// 2. Buscar dados do usuário na tabela profiles
|
||
console.log("👤 Buscando dados na tabela profiles...");
|
||
const userResponse = await axios.get(
|
||
`${SUPABASE_URL}/rest/v1/profiles?id=eq.${userId}&select=*`,
|
||
{
|
||
headers: {
|
||
apikey: SUPABASE_ANON_KEY,
|
||
Authorization: `Bearer ${token}`,
|
||
},
|
||
}
|
||
);
|
||
|
||
if (userResponse.data.length === 0) {
|
||
console.log("❌ Usuário não encontrado na tabela profiles!\n");
|
||
} else {
|
||
const user = userResponse.data[0];
|
||
console.log("✅ Dados do usuário:");
|
||
console.log(` Nome: ${user.full_name || "N/A"}`);
|
||
console.log(` Email: ${user.email}`);
|
||
console.log(` is_admin: ${user.is_admin}`);
|
||
console.log(` is_secretary: ${user.is_secretary}`);
|
||
console.log(` is_admin_or_manager: ${user.is_admin_or_manager}\n`);
|
||
}
|
||
|
||
// 3. Buscar roles na tabela user_roles
|
||
console.log("🎭 Buscando roles na tabela user_roles...");
|
||
const rolesResponse = await axios.get(
|
||
`${SUPABASE_URL}/rest/v1/user_roles?user_id=eq.${userId}&select=*`,
|
||
{
|
||
headers: {
|
||
apikey: SUPABASE_ANON_KEY,
|
||
Authorization: `Bearer ${token}`,
|
||
},
|
||
}
|
||
);
|
||
|
||
if (rolesResponse.data.length === 0) {
|
||
console.log("❌ Nenhuma role encontrada!\n");
|
||
} else {
|
||
console.log("✅ Roles encontradas:");
|
||
rolesResponse.data.forEach((role) => {
|
||
console.log(` • ${role.role}`);
|
||
});
|
||
console.log("");
|
||
}
|
||
|
||
// 4. Testar acesso aos pacientes
|
||
console.log("🏥 Testando acesso aos pacientes...");
|
||
try {
|
||
const pacientesResponse = await axios.get(
|
||
`${SUPABASE_URL}/rest/v1/patients?select=id,full_name,email&limit=5`,
|
||
{
|
||
headers: {
|
||
apikey: SUPABASE_ANON_KEY,
|
||
Authorization: `Bearer ${token}`,
|
||
},
|
||
}
|
||
);
|
||
|
||
console.log(
|
||
`✅ ACESSO PERMITIDO! (${pacientesResponse.data.length} pacientes encontrados)`
|
||
);
|
||
|
||
if (pacientesResponse.data.length > 0) {
|
||
console.log("\n📋 Pacientes acessíveis:");
|
||
pacientesResponse.data.forEach((p) => {
|
||
console.log(
|
||
` • ${p.full_name || "Sem nome"} - ${p.email || "Sem email"}`
|
||
);
|
||
});
|
||
}
|
||
console.log("");
|
||
} catch (error) {
|
||
console.log(`❌ ACESSO NEGADO!`);
|
||
console.log(
|
||
` Erro: ${error.response?.data?.message || error.message}\n`
|
||
);
|
||
}
|
||
|
||
// 5. Testar criação de relatório
|
||
console.log("📝 Testando permissão para criar relatório...");
|
||
try {
|
||
// Não vou criar de fato, só testar se tem permissão
|
||
const testReportData = {
|
||
patient_id: "00000000-0000-0000-0000-000000000000", // ID fake para teste
|
||
exam: "Teste de permissão",
|
||
diagnosis: "Teste",
|
||
conclusion: "Teste",
|
||
order_number: "TEST-001",
|
||
status: "draft",
|
||
};
|
||
|
||
await axios.post(`${SUPABASE_URL}/rest/v1/reports`, testReportData, {
|
||
headers: {
|
||
apikey: SUPABASE_ANON_KEY,
|
||
Authorization: `Bearer ${token}`,
|
||
"Content-Type": "application/json",
|
||
Prefer: "return=representation",
|
||
},
|
||
});
|
||
|
||
console.log("✅ PERMISSÃO PARA CRIAR RELATÓRIOS: SIM\n");
|
||
} catch (error) {
|
||
if (error.response?.status === 403) {
|
||
console.log("❌ PERMISSÃO PARA CRIAR RELATÓRIOS: NEGADA");
|
||
console.log(
|
||
` Erro: ${error.response?.data?.message || "Acesso negado"}\n`
|
||
);
|
||
} else {
|
||
console.log(
|
||
"⚠️ Erro ao testar (pode ser FK constraint, não necessariamente permissão)"
|
||
);
|
||
console.log(` ${error.response?.data?.message || error.message}\n`);
|
||
}
|
||
}
|
||
|
||
// 6. Resumo
|
||
console.log("═══════════════════════════════════════════════════");
|
||
console.log("📊 RESUMO DAS PERMISSÕES DE FERNANDO");
|
||
console.log("═══════════════════════════════════════════════════");
|
||
|
||
const userData = userResponse.data[0] || {};
|
||
const roles = rolesResponse.data.map((r) => r.role);
|
||
|
||
console.log("\n🎭 Roles:", roles.length > 0 ? roles.join(", ") : "Nenhuma");
|
||
console.log("👑 Is Admin:", userData.is_admin || false);
|
||
console.log("👔 Is Secretary:", userData.is_secretary || false);
|
||
console.log("👨💼 Is Admin/Manager:", userData.is_admin_or_manager || false);
|
||
console.log("");
|
||
|
||
if (userData.is_admin || roles.includes("admin")) {
|
||
console.log("✅ Fernando TEM permissões de ADMIN");
|
||
} else {
|
||
console.log("❌ Fernando NÃO TEM permissões de ADMIN");
|
||
console.log("\n💡 Para adicionar permissões de admin:");
|
||
console.log(" 1. Execute: node scripts/dar-admin-fernando.js");
|
||
console.log(" 2. Ou use o painel do Supabase");
|
||
}
|
||
console.log("");
|
||
} catch (error) {
|
||
console.error("\n❌ ERRO:", error.response?.data || error.message);
|
||
|
||
if (error.code === "ENOTFOUND") {
|
||
console.log("\n⚠️ Problema de conexão com Supabase");
|
||
} else if (error.response?.status === 400) {
|
||
console.log("\n⚠️ Credenciais inválidas ou usuário não existe");
|
||
}
|
||
}
|
||
}
|
||
|
||
verificarPermissoesFernando();
|