import fetch from "node-fetch"; const SUPABASE_URL = "https://yuanqfswhberkoevtmfr.supabase.co"; const SUPABASE_ANON_KEY = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6Inl1YW5xZnN3aGJlcmtvZXZ0bWZyIiwicm9sZSI6ImFub24iLCJpYXQiOjE3NTQ5NTQzNjksImV4cCI6MjA3MDUzMDM2OX0.g8Fm4XAvtX46zifBZnYVH4tVuQkqUH6Ia9CXQj4DztQ"; // Credenciais de admin const ADMIN_EMAIL = "riseup@popcode.com.br"; const ADMIN_PASSWORD = "riseup"; console.log("\n🗑️ DELETAR USUÁRIOS DE TESTE COM ADMIN\n"); async function deletarUsuariosTeste() { // PASSO 1: Fazer login como admin console.log("🔐 Fazendo login como admin...\n"); try { const loginResponse = await fetch( `${SUPABASE_URL}/auth/v1/token?grant_type=password`, { method: "POST", headers: { apikey: SUPABASE_ANON_KEY, "Content-Type": "application/json", }, body: JSON.stringify({ email: ADMIN_EMAIL, password: ADMIN_PASSWORD, }), } ); if (!loginResponse.ok) { console.log("❌ Login falhou:", loginResponse.status); return; } const loginData = await loginResponse.json(); const adminToken = loginData.access_token; console.log("✅ Login admin bem-sucedido!\n"); // PASSO 2: Buscar pacientes de teste console.log('📋 Buscando pacientes de teste (email contém "teste")...\n'); const pacientesResponse = await fetch( `${SUPABASE_URL}/rest/v1/patients?email=ilike.*teste*&select=id,full_name,email`, { method: "GET", headers: { apikey: SUPABASE_ANON_KEY, Authorization: `Bearer ${adminToken}`, "Content-Type": "application/json", }, } ); if (!pacientesResponse.ok) { console.log("❌ Erro ao buscar pacientes:", pacientesResponse.status); const error = await pacientesResponse.text(); console.log(error); return; } const pacientes = await pacientesResponse.json(); console.log(`Encontrados ${pacientes.length} paciente(s) de teste:\n`); if (pacientes.length > 0) { pacientes.forEach((p, index) => { console.log(`${index + 1}. ${p.full_name || "Sem nome"}`); console.log(` Email: ${p.email}`); console.log(` ID: ${p.id}\n`); }); // PASSO 3: Deletar pacientes de teste console.log("🗑️ Deletando pacientes de teste...\n"); for (const paciente of pacientes) { try { const deleteResponse = await fetch( `${SUPABASE_URL}/rest/v1/patients?id=eq.${paciente.id}`, { method: "DELETE", headers: { apikey: SUPABASE_ANON_KEY, Authorization: `Bearer ${adminToken}`, "Content-Type": "application/json", }, } ); if (deleteResponse.ok || deleteResponse.status === 204) { console.log(`✅ Deletado: ${paciente.email}`); } else { console.log( `❌ Erro ao deletar ${paciente.email}:`, deleteResponse.status ); const error = await deleteResponse.text(); console.log(error); } } catch (error) { console.log(`❌ Erro ao deletar ${paciente.email}:`, error.message); } } } else { console.log("✅ Nenhum paciente de teste encontrado!\n"); } // PASSO 4: Tentar deletar usuários de auth (pode não funcionar sem service_role) console.log("\n📋 Tentando deletar usuários do auth.users...\n"); console.log( "⚠️ NOTA: A API pública normalmente NÃO permite deletar usuários." ); console.log(" Isso requer service_role key ou acesso ao Dashboard.\n"); const emailsParaDeletar = [ "testefinal@gmail.com", "teste1759356178698@gmail.com", "pacienteteste", ]; console.log("Emails que deveriam ser deletados manualmente no Dashboard:"); emailsParaDeletar.forEach((email) => { console.log(` - ${email}`); }); console.log("\n💡 Para deletar usuários do auth.users:"); console.log( " 1. Acesse: https://app.supabase.com/project/yuanqfswhberkoevtmfr/auth/users" ); console.log(" 2. Busque pelos emails acima"); console.log(" 3. Clique nos 3 pontos → Delete user\n"); // Verificar resultado console.log("\n📊 VERIFICANDO RESULTADO...\n"); const verificarResponse = await fetch( `${SUPABASE_URL}/rest/v1/patients?email=ilike.*teste*&select=count`, { method: "GET", headers: { apikey: SUPABASE_ANON_KEY, Authorization: `Bearer ${adminToken}`, "Content-Type": "application/json", Prefer: "count=exact", }, } ); if (verificarResponse.ok) { const countHeader = verificarResponse.headers.get("content-range"); console.log(`✅ Pacientes de teste restantes: ${countHeader || "0"}\n`); } } catch (error) { console.error("❌ Erro:", error.message); } } deletarUsuariosTeste();