267 lines
8.4 KiB
JavaScript
267 lines
8.4 KiB
JavaScript
/**
|
||
* 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();
|