import axios from "axios"; const SUPABASE_URL = "https://yuanqfswhberkoevtmfr.supabase.co"; const SUPABASE_ANON_KEY = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6Inl1YW5xZnN3aGJlcmtvZXZ0bWZyIiwicm9sZSI6ImFub24iLCJpYXQiOjE3NTQ5NTQzNjksImV4cCI6MjA3MDUzMDM2OX0.g8Fm4XAvtX46zifBZnYVH4tVuQkqUH6Ia9CXQj4DztQ"; async function criarJuliaComAdmin() { try { console.log("═══════════════════════════════════════════════════"); console.log("🔐 CRIANDO USUÁRIA JULIA CARVALHO"); console.log("═══════════════════════════════════════════════════\n"); // 1. Login como admin console.log("🔑 Fazendo login como admin (riseup@popcode.com.br)..."); const loginResponse = await axios.post( `${SUPABASE_URL}/auth/v1/token?grant_type=password`, { email: "riseup@popcode.com.br", password: "riseup", }, { headers: { apikey: SUPABASE_ANON_KEY, "Content-Type": "application/json", }, } ); const adminToken = loginResponse.data.access_token; const adminUserId = loginResponse.data.user.id; console.log("✅ Login admin realizado com sucesso!"); console.log(` Admin ID: ${adminUserId}\n`); // 2. Criar usuário Julia no Supabase Auth console.log("👤 Criando usuária Julia na autenticação..."); const signupResponse = await axios.post( `${SUPABASE_URL}/auth/v1/signup`, { email: "secretaria.mediconnect@gmail.com", password: "secretaria@mediconnect", data: { full_name: "Julia Carvalho", role: "admin", }, }, { headers: { apikey: SUPABASE_ANON_KEY, "Content-Type": "application/json", }, } ); const juliaUserId = signupResponse.data.user?.id; const juliaToken = signupResponse.data.access_token; if (!juliaUserId) { throw new Error("Não foi possível obter o ID da usuária criada"); } console.log("✅ Usuária criada na autenticação!"); console.log(` Julia ID: ${juliaUserId}\n`); // 3. Criar perfil na tabela profiles usando token admin console.log("📋 Criando perfil na tabela profiles..."); try { await axios.post( `${SUPABASE_URL}/rest/v1/profiles`, { id: juliaUserId, email: "secretaria.mediconnect@gmail.com", full_name: "Julia Carvalho", is_admin: true, is_secretary: true, is_admin_or_manager: true, }, { headers: { apikey: SUPABASE_ANON_KEY, Authorization: `Bearer ${adminToken}`, "Content-Type": "application/json", Prefer: "return=representation", }, } ); console.log("✅ Perfil criado com sucesso!\n"); } catch (error) { if (error.response?.status === 409) { console.log("⚠️ Perfil já existe, atualizando..."); await axios.patch( `${SUPABASE_URL}/rest/v1/profiles?id=eq.${juliaUserId}`, { full_name: "Julia Carvalho", is_admin: true, is_secretary: true, is_admin_or_manager: true, }, { headers: { apikey: SUPABASE_ANON_KEY, Authorization: `Bearer ${adminToken}`, "Content-Type": "application/json", }, } ); console.log("✅ Perfil atualizado!\n"); } else { throw error; } } // 4. Adicionar role admin na tabela user_roles console.log("🎭 Adicionando role admin..."); try { await axios.post( `${SUPABASE_URL}/rest/v1/user_roles`, { user_id: juliaUserId, role: "admin", }, { headers: { apikey: SUPABASE_ANON_KEY, Authorization: `Bearer ${adminToken}`, "Content-Type": "application/json", Prefer: "return=representation", }, } ); console.log("✅ Role admin adicionada!\n"); } catch (error) { if (error.response?.status === 409) { console.log("⚠️ Role admin já existe!\n"); } else { throw error; } } // 5. Verificar se Julia consegue acessar pacientes console.log("🏥 Testando acesso aos pacientes..."); const pacientesResponse = await axios.get( `${SUPABASE_URL}/rest/v1/patients?select=id,full_name,email&limit=5`, { headers: { apikey: SUPABASE_ANON_KEY, Authorization: `Bearer ${juliaToken}`, }, } ); console.log( `✅ Julia consegue acessar pacientes! (${pacientesResponse.data.length} encontrados)\n` ); if (pacientesResponse.data.length > 0) { console.log("📋 Pacientes acessíveis:"); pacientesResponse.data.forEach((p) => { console.log( ` • ${p.full_name || "Sem nome"} - ${p.email || "Sem email"}` ); }); console.log(""); } // 6. Resumo final console.log("═══════════════════════════════════════════════════"); console.log("✅ USUÁRIA JULIA CRIADA COM SUCESSO!"); console.log("═══════════════════════════════════════════════════"); console.log(""); console.log("👤 Nome: Julia Carvalho"); console.log("📧 Email: secretaria.mediconnect@gmail.com"); console.log("🔑 Senha: secretaria@mediconnect"); console.log("🎭 Role: admin"); console.log(""); console.log("✨ Permissões:"); console.log(" ✅ is_admin: true"); console.log(" ✅ is_secretary: true"); console.log(" ✅ is_admin_or_manager: true"); console.log(" ✅ Acesso completo aos pacientes"); console.log(""); console.log("🌐 Faça login em:"); console.log(" http://localhost:5173/login-secretaria"); console.log(""); console.log("═══════════════════════════════════════════════════"); } catch (error) { console.error( "\n❌ ERRO ao criar usuária:", error.response?.data || error.message ); if (error.response?.data?.code === "23505") { console.log("\n⚠️ USUÁRIA JÁ EXISTE!"); console.log(""); console.log("Você pode fazer login com:"); console.log("📧 Email: secretaria.mediconnect@gmail.com"); console.log("🔑 Senha: secretaria@mediconnect"); console.log("🌐 URL: http://localhost:5173/login-secretaria"); } else if (error.response?.status === 422) { console.log("\n⚠️ USUÁRIA JÁ EXISTE (email já cadastrado)"); console.log(""); console.log("Tente fazer login com:"); console.log("📧 Email: secretaria.mediconnect@gmail.com"); console.log("🔑 Senha: secretaria@mediconnect"); } else if (error.code === "ENOTFOUND") { console.log("\n⚠️ ERRO DE CONEXÃO"); console.log("Verifique sua conexão com a internet e tente novamente."); } else { console.log("\n📋 Detalhes do erro:"); console.log(JSON.stringify(error.response?.data, null, 2)); } } } criarJuliaComAdmin();