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

221 lines
7.5 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 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();