Skip to content

[DASHBOARD Q.A - LOGIN ] - FINALIZAÇÃO #31

Description

@GabrielAderaldo

Esse card fecha a saga do login. Aqui, o que foi feito nos cards anteriores deixa de ser isolado e passa a valer para o app inteiro.
Se o usuário está logado, ele acessa a aplicação. Se não está, ele é redirecionado pro login, sem perdão.

Além disso, o app precisa lembrar da sessão mesmo após atualizar ou reiniciar.

Ah, e claro: logout deve funcionar lindamente, limpando tudo e voltando pro login como se nada tivesse acontecido.

Caution

Esse é o card onde o P.O. chora se algo quebrar.
Qualquer falha aqui significa que todo o sistema perde controle de acesso.


🎯 Objetivos:

  • Proteger o app inteiro contra acessos não-autenticados
  • Redirecionar corretamente usuários conforme estado
  • Manter a sessão ativa mesmo após fechar ou atualizar
  • Permitir logout seguro e completo
  • Tornar a ViewModel globalmente acessível e reativa
  • Testar tudo isso de forma automatizada

🚦Fluxo de estado da sessão

stateDiagram-v2
    [*] --> VerificarSessao
    VerificarSessao --> Autenticado : token válido
    VerificarSessao --> NaoAutenticado : sem token ou inválido
    NaoAutenticado --> RedirecionaLogin
    Autenticado --> AppDestravado
    Logout --> LimpaSessao
    LimpaSessao --> RedirecionaLogin
Loading

📦 Deve conter:

Item O que fazer
Guarda de rotas Proteger todas as rotas do app: só entra se estiver autenticado
Sessão persistente Após login bem-sucedido, armazenar token em local seguro
Verificação automática Ao abrir o app, verificar se o token ainda está válido
Redirecionamento condicional Login → dashboard. Não logado → login. Logout → login.
Logout funcional Limpa token, reseta estados, volta para login
Centralização da ViewModel SessionViewModel precisa ser acessível de qualquer ponto da aplicação

✅ Critérios de Aceite (QA):

Cenário Resultado Esperado
Abriu o app sem estar logado Redirecionado automaticamente para tela de login
Logou com sucesso e fechou o app Ao abrir novamente, usuário ainda está autenticado
Logout clicado Token removido, estados resetados, redirecionado para login
Tentou acessar rota protegida diretamente sem login Não acessa. Forçado a ir para o login
Tentou forjar token inválido no localStorage/secureStore Detectado e tratado como sessão inválida
Refresh da página com sessão ativa Sessão continua ativa, sem bugs de estado quebrado

🧠 Considerações técnicas esperadas:

  • Verificação de sessão automática ao carregar o app (ex: no main(), App(), initState, etc.)
  • Sessão global usando singleton, provider, Riverpod, GetX ou qualquer injeção de dependência equivalente
  • Rotas protegidas devem redirecionar para o login caso não esteja logado
  • Logout limpa o armazenamento local e zera os estados

Important

O token nunca deve ficar salvo em variáveis voláteis. Use uma estratégia segura e compatível com todas as plataformas-alvo (Web, Desktop, Mobile).


📌 Lembretes finais:

Tip

Se estiver com dúvida sobre o funcionamento do controle de sessão, verifique:

  • O card 4 (estrutura)
  • O épico da feature de login
  • Ou me chame diretamente, Mas por favor não precise  😢

Note

O QA deve usar simulações de sessão para validar a integridade (testar login, logout, redirecionamento manual, manipular token, etc).

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    TASKPEQUENAS PARTES DA ISSUE PARA MAIOR QUEBRA NOS CARDS

    Type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions