Skip to main content

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

  1. Usuário informa email/senha ou clica em Google
  2. Firebase Auth autentica
  3. Navigator.pop(true) → Home recebe e chama loadProfile

Código de referência

  • frontend/lib/presentation/pages/login/login_page.dart
  • frontend/lib/application/use_cases/sign_in_with_email_password.dart
  • frontend/lib/application/use_cases/sign_in_with_google.dart
  • frontend/lib/infrastructure/auth/firebase_auth_repository.dart