/* ============================================================ KeS Metas — Tela de Login (Firebase Authentication) ============================================================ */ const { useState, useEffect, useRef } = React; function LoginScreen({ state, dispatch, onLogin }) { const K = window.KES; const A = window.KESAUTH; const usaFirebase = !!(A && A.configured()); const [email, setEmail] = useState(""); const [senha, setSenha] = useState(""); const [show, setShow] = useState(false); const [erro, setErro] = useState(""); const [busy, setBusy] = useState(false); const [info, setInfo] = useState(""); // E-mail do admin da KeS (para o atalho de primeiro acesso). const adminUser = state.users.find((u) => u.papel === "admin"); async function submit(e) { e && e.preventDefault(); setErro(""); setInfo(""); if (!email.trim() || !senha) { setErro("Informe e-mail e senha."); return; } if (usaFirebase) { setBusy(true); // Para o e-mail do admin, na 1ª vez cria a conta automaticamente. const ehAdmin = adminUser && email.trim().toLowerCase() === adminUser.email.toLowerCase(); const res = ehAdmin ? await A.signInOrCreate(email, senha) : await A.signIn(email, senha); setBusy(false); if (!res.ok) { setErro(A.traduzErro(res)); return; } if (res.created) setInfo("Conta de administrador criada. Entrando…"); // O App detecta o login pelo "escutador" e abre o sistema. return; } // Fallback (sem internet/Firebase): login local em memória. const r = K.AuthService.authenticate(state.users, email, senha); if (!r.ok) { setErro(r.motivo); return; } onLogin(r.user); } async function esqueciSenha() { setErro(""); setInfo(""); if (!email.trim()) { setErro("Digite seu e-mail para receber o link de redefinição."); return; } if (!usaFirebase) { setErro("Redefinição de senha disponível só com o banco de dados conectado."); return; } setBusy(true); const res = await A.resetPassword(email); setBusy(false); if (res.ok) setInfo("Enviamos um link de redefinição de senha para o seu e-mail."); else setErro(A.traduzErro(res)); } return (
Acesse o painel de metas da KeS.