riseup-squad18/MEDICONNECT 2/scripts/deletar-usuarios-admin.js
2025-10-07 14:53:47 -03:00

160 lines
5.0 KiB
JavaScript
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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