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