import axios from "axios"; const SUPABASE_URL = "https://yuanqfswhberkoevtmfr.supabase.co"; const ANON_KEY = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6Inl1YW5xZnN3aGJlcmtvZXZ0bWZyIiwicm9sZSI6ImFub24iLCJpYXQiOjE3NTQ5NTQzNjksImV4cCI6MjA3MDUzMDM2OX0.g8Fm4XAvtX46zifBZnYVH4tVuQkqUH6Ia9CXQj4DztQ"; let ACCESS_TOKEN = ""; // 1. Login como admin async function login() { console.log("\nšŸ” Fazendo login como admin..."); try { const response = await axios.post( `${SUPABASE_URL}/auth/v1/token?grant_type=password`, { email: "riseup@popcode.com.br", password: "riseup", }, { headers: { "Content-Type": "application/json", apikey: ANON_KEY, }, } ); ACCESS_TOKEN = response.data.access_token; console.log("āœ… Login realizado com sucesso!"); console.log(`šŸ“§ Email: ${response.data.user.email}`); console.log(`šŸ†” User ID: ${response.data.user.id}`); return response.data; } catch (error) { console.error("āŒ Erro no login:", error.response?.data || error.message); process.exit(1); } } // 2. Listar usuĆ”rios async function listUsers() { console.log("\nšŸ“‹ Listando usuĆ”rios...\n"); try { const response = await axios.get( `${SUPABASE_URL}/rest/v1/profiles?select=id,full_name,email`, { headers: { apikey: ANON_KEY, Authorization: `Bearer ${ACCESS_TOKEN}`, }, } ); console.log(`āœ… ${response.data.length} usuĆ”rios encontrados:\n`); response.data.forEach((user, index) => { console.log(`${index + 1}. ${user.full_name || "Sem nome"}`); console.log(` šŸ“§ Email: ${user.email}`); console.log(` šŸ†” ID: ${user.id}\n`); }); return response.data; } catch (error) { console.error( "āŒ Erro ao listar usuĆ”rios:", error.response?.data || error.message ); return []; } } // 3. Deletar usuĆ”rio async function deleteUser(userId, userName) { console.log(`\nšŸ—‘ļø Deletando usuĆ”rio: ${userName} (${userId})...`); try { const response = await axios.post( `${SUPABASE_URL}/functions/v1/delete-user`, { userId }, { headers: { "Content-Type": "application/json", apikey: ANON_KEY, Authorization: `Bearer ${ACCESS_TOKEN}`, }, } ); console.log(`āœ… ${userName} deletado com sucesso!`); return response.data; } catch (error) { console.error( `āŒ Erro ao deletar ${userName}:`, error.response?.data || error.message ); } } // Script principal async function main() { console.log("🧹 Iniciando limpeza de usuĆ”rios de teste..."); // 1. Login await login(); // 2. Listar usuĆ”rios atuais const users = await listUsers(); // 3. Lista de emails para deletar (apenas os que o assistente criou) const testEmails = [ "admin@mediconnect.com", "secretaria@mediconnect.com", "dr.medico@mediconnect.com", "fernando.pirichowski@souunit.com.br", ]; // 4. Deletar usuĆ”rios de teste let deletedCount = 0; for (const user of users) { if (testEmails.includes(user.email)) { await deleteUser(user.id, user.full_name || user.email); deletedCount++; // Aguardar 1 segundo entre deleƧƵes await new Promise((resolve) => setTimeout(resolve, 1000)); } } console.log( `\nāœ… Limpeza concluĆ­da! ${deletedCount} usuĆ”rios de teste deletados.` ); // 5. Listar usuĆ”rios finais console.log("\nšŸ“Š UsuĆ”rios restantes:"); await listUsers(); } main().catch(console.error);