import React, { useState } from "react"; import { Mail, Lock, Stethoscope } from "lucide-react"; import toast from "react-hot-toast"; import { useNavigate } from "react-router-dom"; import { useAuth } from "../hooks/useAuth"; import { authService, userService } from "../services"; const LoginMedico: React.FC = () => { const [formData, setFormData] = useState({ email: "", senha: "", }); const [loading, setLoading] = useState(false); const navigate = useNavigate(); const { loginComEmailSenha } = useAuth(); const handleLogin = async (e: React.FormEvent) => { e.preventDefault(); setLoading(true); try { console.log("[LoginMedico] Fazendo login com email:", formData.email); // Fazer login via API Supabase const loginResponse = await authService.login({ email: formData.email, password: formData.senha, }); console.log("[LoginMedico] Login bem-sucedido!", loginResponse); // Buscar informações completas do usuário (profile + roles) const userInfo = await userService.getUserInfo(); console.log("[LoginMedico] UserInfo obtido:", userInfo); const userName = userInfo.profile?.full_name || loginResponse.user.email?.split("@")[0] || "Médico"; const roles = userInfo.roles || []; // Validar se tem permissão (admin, gestor ou medico) const isAdmin = roles.includes("admin"); const isGestor = roles.includes("gestor"); const isMedico = roles.includes("medico"); if (!isAdmin && !isGestor && !isMedico) { toast.error("Você não tem permissão para acessar esta área"); await authService.logout(); setLoading(false); return; } // Fazer login no contexto const ok = await loginComEmailSenha(formData.email, formData.senha); if (ok) { console.log( "[LoginMedico] Login bem-sucedido! Navegando para /painel-medico" ); toast.success(`Bem-vindo, ${userName}!`); navigate("/painel-medico"); } else { console.error("[LoginMedico] loginComEmailSenha retornou false"); toast.error("Erro ao processar login"); } } catch (error: unknown) { console.error("[LoginMedico] Erro no login:", error); const err = error as { response?: { data?: { error_description?: string; message?: string } }; message?: string; }; const errorMessage = err?.response?.data?.error_description || err?.response?.data?.message || err?.message || "Erro ao fazer login. Verifique suas credenciais."; toast.error(errorMessage); } finally { setLoading(false); } }; return (

Área do Médico

Faça login para acessar seu painel médico

setFormData((prev) => ({ ...prev, email: e.target.value })) } className="form-input pl-10 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-gray-100" placeholder="seu@email.com" required autoComplete="email" />
setFormData((prev) => ({ ...prev, senha: e.target.value })) } className="form-input pl-10 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-gray-100" placeholder="Sua senha" required autoComplete="current-password" />
{/* Divisor OU */}
OU
{/* Botão Magic Link */}
); }; export default LoginMedico;