/** * 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();