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();