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

267 lines
8.4 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.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* Script para criar usuário com role "user" para o paciente Guilherme
* e configurar consultas de demonstração
*/
const SUPABASE_URL = "https://yuanqfswhberkoevtmfr.supabase.co";
const SUPABASE_ANON_KEY =
"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6Inl1YW5xZnN3aGJlcmtvZXZ0bWZyIiwicm9sZSI6ImFub24iLCJpYXQiOjE3NTQ5NTQzNjksImV4cCI6MjA3MDUzMDM2OX0.g8Fm4XAvtX46zifBZnYVH4tVuQkqUH6Ia9CXQj4DztQ";
// Admin credentials
const ADMIN_EMAIL = "riseup@popcode.com.br";
const ADMIN_PASSWORD = "riseup";
// Guilherme dados
const GUILHERME_ID = "864b1785-461f-4e92-8b74-2a6f17c58a80";
const GUILHERME_EMAIL = "guilherme@paciente.com";
const GUILHERME_PASSWORD = "guilherme123";
const GUILHERME_NOME = "Guilherme Silva Gomes - SQUAD 18";
// Fernando dados
const FERNANDO_USER_ID = "be1e3cba-534e-48c3-9590-b7e55861cade";
const FERNANDO_NOME = "Fernando Pirichowski - Squad 18";
async function criarUsuarioGuilherme() {
try {
console.log("\n🔐 === CRIAR USUÁRIO GUILHERME COM ROLE USER ===\n");
// 1. Login como admin
console.log("1⃣ Fazendo login como admin...");
const loginResponse = await fetch(
`${SUPABASE_URL}/auth/v1/token?grant_type=password`,
{
method: "POST",
headers: {
"Content-Type": "application/json",
apikey: SUPABASE_ANON_KEY,
},
body: JSON.stringify({
email: ADMIN_EMAIL,
password: ADMIN_PASSWORD,
}),
}
);
if (!loginResponse.ok) {
throw new Error(`Erro no login: ${loginResponse.status}`);
}
const loginData = await loginResponse.json();
const adminToken = loginData.access_token;
console.log("✅ Login admin realizado com sucesso!\n");
// 2. Verificar se usuário Guilherme já existe
console.log("2⃣ Verificando se usuário Guilherme já existe...");
try {
const loginGuilherme = await fetch(
`${SUPABASE_URL}/auth/v1/token?grant_type=password`,
{
method: "POST",
headers: {
"Content-Type": "application/json",
apikey: SUPABASE_ANON_KEY,
},
body: JSON.stringify({
email: GUILHERME_EMAIL,
password: GUILHERME_PASSWORD,
}),
}
);
if (loginGuilherme.ok) {
const guilhermeData = await loginGuilherme.json();
console.log("✅ Usuário Guilherme já existe!");
console.log(` User ID: ${guilhermeData.user.id}`);
console.log(` Email: ${guilhermeData.user.email}\n`);
return guilhermeData.user.id;
}
} catch (error) {
console.log(" Usuário não existe, criando...\n");
}
// 3. Criar usuário Guilherme via Edge Function
console.log("3⃣ Criando usuário Guilherme...");
console.log(` Email: ${GUILHERME_EMAIL}`);
console.log(` Senha: ${GUILHERME_PASSWORD}`);
console.log(` Role: user\n`);
const createUserResponse = await fetch(
`${SUPABASE_URL}/functions/v1/create-user`,
{
method: "POST",
headers: {
"Content-Type": "application/json",
Authorization: `Bearer ${adminToken}`,
apikey: SUPABASE_ANON_KEY,
},
body: JSON.stringify({
email: GUILHERME_EMAIL,
password: GUILHERME_PASSWORD,
full_name: GUILHERME_NOME,
role: "user", // Role "user" para paciente
}),
}
);
const createUserData = await createUserResponse.json();
if (!createUserResponse.ok) {
console.error("❌ Erro ao criar usuário:", createUserData);
throw new Error(JSON.stringify(createUserData));
}
console.log(
" Resposta da criação:",
JSON.stringify(createUserData, null, 2)
);
const guilhermeUserId =
createUserData.user_id || createUserData.id || createUserData.userId;
if (!guilhermeUserId) {
console.error("❌ User ID não encontrado na resposta!");
console.error(" Resposta completa:", createUserData);
throw new Error("User ID não retornado pela API");
}
console.log("✅ Usuário criado com sucesso!");
console.log(` User ID: ${guilhermeUserId}\n`);
// 4. Atribuir paciente ao usuário
console.log("4⃣ Atribuindo paciente ao usuário...");
// Verificar se atribuição já existe
const checkAssignment = await fetch(
`${SUPABASE_URL}/rest/v1/patient_assignments?user_id=eq.${guilhermeUserId}&patient_id=eq.${GUILHERME_ID}`,
{
headers: {
apikey: SUPABASE_ANON_KEY,
Authorization: `Bearer ${adminToken}`,
},
}
);
const existingAssignments = await checkAssignment.json();
if (existingAssignments.length > 0) {
console.log("✅ Atribuição já existe!\n");
} else {
const assignResponse = await fetch(
`${SUPABASE_URL}/rest/v1/patient_assignments`,
{
method: "POST",
headers: {
"Content-Type": "application/json",
Authorization: `Bearer ${adminToken}`,
apikey: SUPABASE_ANON_KEY,
Prefer: "return=representation",
},
body: JSON.stringify({
user_id: guilhermeUserId,
patient_id: GUILHERME_ID,
}),
}
);
if (!assignResponse.ok) {
const error = await assignResponse.text();
console.error("❌ Erro ao criar atribuição:", error);
} else {
console.log("✅ Paciente atribuído ao usuário!\n");
}
}
// 5. Criar consultas de demonstração
console.log("5⃣ Criando consultas de demonstração...\n");
await criarConsultasDemo();
console.log("\n✅ === CONFIGURAÇÃO CONCLUÍDA COM SUCESSO! ===\n");
console.log("📋 INFORMAÇÕES PARA LOGIN:\n");
console.log(" Email: guilherme@paciente.com");
console.log(" Senha: guilherme123");
console.log(" Role: user (acesso ao painel paciente)\n");
console.log("🔗 Próximos passos:");
console.log(" 1. Acesse /paciente no navegador");
console.log(" 2. Faça login com as credenciais acima");
console.log(" 3. Você verá as consultas no painel do paciente");
console.log(
" 4. As consultas também aparecerão no painel do médico Fernando"
);
console.log(" 5. E no painel da secretária\n");
return guilhermeUserId;
} catch (error) {
console.error("\n❌ Erro:", error.message);
console.error(error);
process.exit(1);
}
}
async function criarConsultasDemo() {
const fs = await import("fs");
const path = await import("path");
// Criar arquivo de consultas locais para demonstração
const consultas = [
{
id: "consulta-demo-001",
pacienteId: GUILHERME_ID,
medicoId: FERNANDO_USER_ID,
pacienteNome: GUILHERME_NOME,
medicoNome: FERNANDO_NOME,
dataHora: "2025-10-05T10:00:00",
status: "agendada",
tipo: "Consulta",
observacoes: "Primeira consulta - Check-up geral",
},
{
id: "consulta-demo-002",
pacienteId: GUILHERME_ID,
medicoId: FERNANDO_USER_ID,
pacienteNome: GUILHERME_NOME,
medicoNome: FERNANDO_NOME,
dataHora: "2025-09-28T14:30:00",
status: "realizada",
tipo: "Retorno",
observacoes: "Consulta de retorno - Avaliação de exames",
},
{
id: "consulta-demo-003",
pacienteId: GUILHERME_ID,
medicoId: FERNANDO_USER_ID,
pacienteNome: GUILHERME_NOME,
medicoNome: FERNANDO_NOME,
dataHora: "2025-10-10T09:00:00",
status: "confirmada",
tipo: "Consulta",
observacoes: "Consulta de acompanhamento mensal",
},
];
// Caminho para a pasta src/data
const dataDir = path.join(process.cwd(), "src", "data");
// Criar diretório se não existir
if (!fs.existsSync(dataDir)) {
fs.mkdirSync(dataDir, { recursive: true });
console.log(" 📁 Diretório src/data criado");
}
// Salvar consultas
const consultasPath = path.join(dataDir, "consultas-demo.json");
fs.writeFileSync(consultasPath, JSON.stringify(consultas, null, 2));
console.log(" ✅ Consultas salvas em src/data/consultas-demo.json");
console.log(` 📊 ${consultas.length} consultas criadas\n`);
// Também salvar no localStorage (simulado)
console.log(" 💡 Para usar as consultas:");
console.log(" - Importe de src/data/consultas-demo.json");
console.log(
" - Ou use localStorage.setItem('consultas_local', JSON.stringify(consultas))"
);
}
// Executar
criarUsuarioGuilherme();