import React, { useState } from "react"; import { Mail, Lock, Clipboard } 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 LoginSecretaria: 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("[LoginSecretaria] Fazendo login com email:", formData.email); // Fazer login via API Supabase const loginResponse = await authService.login({ email: formData.email, password: formData.senha, }); console.log("[LoginSecretaria] Login bem-sucedido!", loginResponse); // Buscar informações completas do usuário (profile + roles) const userInfo = await userService.getUserInfo(); console.log("[LoginSecretaria] UserInfo obtido:", userInfo); const userName = userInfo.profile?.full_name || loginResponse.user.email?.split("@")[0] || "Secretária"; const roles = userInfo.roles || []; // Validar se tem permissão (admin, gestor ou secretaria) // Secretária pode ser paciente também, mas não médica const isAdmin = roles.includes("admin"); const isGestor = roles.includes("gestor"); const isSecretaria = roles.includes("secretaria"); const isMedico = roles.includes("medico"); if (!isAdmin && !isGestor && !isSecretaria) { toast.error("Você não tem permissão para acessar esta área"); await authService.logout(); setLoading(false); return; } // Secretária não pode ser médica (exceto se for admin/gestor) if (isSecretaria && isMedico && !isAdmin && !isGestor) { toast.error( "Usuário com múltiplas funções incompatíveis. Entre em contato com o suporte." ); await authService.logout(); setLoading(false); return; } // Fazer login no contexto const ok = await loginComEmailSenha(formData.email, formData.senha); if (ok) { console.log( "[LoginSecretaria] Login bem-sucedido! Navegando para /painel-secretaria" ); toast.success(`Bem-vinda, ${userName}!`); navigate("/painel-secretaria"); } else { console.error("[LoginSecretaria] loginComEmailSenha retornou false"); toast.error("Erro ao processar login"); } } catch (error: unknown) { console.error("[LoginSecretaria] 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 da Secretaria

Faça login para acessar o sistema de gestão

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 LoginSecretaria;