TDD — Login
Status
Implementado
Contexto
Tela de login. Email/senha (Firebase Auth) ou Google. Após sucesso, retorna à Home e pode abrir ProfileDialog.
Interface de Usuário (UI)
Tela de login com formulário centralizado.
Componentes e organização:
- Campo Email — TextField com validação
- Campo Senha — TextField obscuro; opção "mostrar/ocultar"
- Botão Entrar — submit email/senha; loading durante autenticação
- Link "Esqueci minha senha" — abre diálogo para reset (ver tdd-reset-senha)
- Botão "Entrar com Google" — ícone Google; inicia popup OAuth
- Link para Registro — redireciona para RegisterPage
Observação: Erros de autenticação exibidos em SnackBar ou inline abaixo do formulário.
Contratos
- Firebase Auth:
signInWithEmailAndPassword,signInWithPopup(Google) - Reset de senha:
sendPasswordResetEmail(Firebase Auth) - Sem endpoint HTTP próprio — autenticação via Firebase
Fluxo
- Usuário informa email/senha ou clica em Google
- Firebase Auth autentica
- Navigator.pop(true) → Home recebe e chama loadProfile
Código de referência
frontend/lib/presentation/pages/login/login_page.dartfrontend/lib/application/use_cases/sign_in_with_email_password.dartfrontend/lib/application/use_cases/sign_in_with_google.dartfrontend/lib/infrastructure/auth/firebase_auth_repository.dart