F09 — Autenticar para acesso seguro ao sistema
IT1 · Rastreabilidade: F09 · CP5 · OE2
Issue da Feature (GitHub): #54 — abrir no GitHub
Esta funcionalidade exige login de administrador.
E-mail: owner@crianex.com · Senha: Crianex@Owner1
Requisitos (evidências)
Selecione um requisito na navegação abaixo. Cada um traz seus critérios de aceite, regras de negócio e um espaço para o screenshot da funcionalidade em funcionamento (substitua a imagem de placeholder pela captura real).
- RF08
- RF09
- RNF01
- RNF03
- RNF08
- DoR
- DoD
RF08 — Autenticar perfil de usuário
Critérios de aceite (BDD)
- Dado credenciais válidas, quando POST
/admin/login, então o Supabase Auth gera a sessão JWT e redireciona para/admin/dashboard. - Dado credenciais inválidas, quando POST
/admin/login, então retorna 401 com mensagem genérica sem expor detalhes internos. - Dado membro
status = inactivecom credenciais corretas, quando autenticar, então o acesso é bloqueado. - Dado campos de login vazios, quando submeter, então a validação client-side impede o envio.
- Dado acesso a
/adminsem sessão, quando GET de rota protegida, então redireciona para/admin/loginsem renderizar dados.
Regras de negócio: RN05 — Membro inativo bloqueado no painel
Evidência (screenshot):
Deploy: link a definir
RF09 — Encerrar sessão
Critérios de aceite (BDD)
- Dado sessão ativa, quando POST
/admin/logout, então executasignOut(), limpa o cookie e redireciona para/admin/login. - Dado sessão encerrada, quando tentar acessar rota protegida, então o acesso é negado e redireciona para o login (sessão invalidada server-side).
Regras de negócio: —
Evidência (screenshot):
Deploy: link a definir
RNF01 — Isolamento de acesso administrativo
Classificação: Segurança
Descrição: Toda rota do painel administrativo é servida em endpoint/caminho distinto do site público e exige token de sessão (JWT) válido; requisições sem token válido recebem HTTP 401/403 e nunca renderizam dados administrativos, mesmo parcialmente.
Evidência (screenshot):

Verificação: Resultados V&V da IT1
RNF03 — Tempo de resposta da área administrativa
Classificação: Eficiência
Descrição: 95% das operações de leitura no painel administrativo (listagens, dashboards, detalhes de registro) retornam em até 2 segundos, do disparo da requisição HTTP à resposta completa da API, sob carga normal de uso (≤ 10 usuários simultâneos).
Evidência (screenshot):

Verificação: Resultados V&V da IT1
RNF08 — Criptografia de credenciais
Classificação: Segurança
Descrição: Senhas são armazenadas exclusivamente como hash Argon2id (ou bcrypt) com salt único por registro e fator de custo ≥ 12; a senha em texto claro nunca é persistida, logada ou trafegada fora do canal HTTPS de autenticação.
Evidência (screenshot):

Verificação: Resultados V&V da IT1
Definition of Ready — Evidências
Checklist do DoR aplicado à F09 antes de entrar em execução. Todos os itens foram atendidos conforme o critério definido em DoR e DoD.
| Critério DoR | Status | Evidência |
|---|---|---|
Título no padrão FDD <ação> <resultado> <de/para/no/com> <objeto> | ✅ | Issue #54 — título conforme o padrão |
| Critérios de aceite escritos e verificáveis (Given/When/Then) | ✅ | Ver abas RF/RNF desta página — todos os cenários BDD documentados |
| Estimativa registrada: VB, CX e IP calculados | ✅ | Priorização do Backlog — coluna IP da tabela de features |
| Dependências identificadas; bloqueantes resolvidos | ✅ | Mapa de Dependências — IT1 — bloqueantes verificados antes do início |
| Class Owner designado e linkada à Feature parent e à CP de origem | ✅ | Issue #54 — assignees e labels de CP/Feature registrados |
| Protótipo revisado pelo cliente | ✅ | Protótipo de Alta Fidelidade — IT1 |
| Technical Design Review (TDR) concluída | ✅ | Design Técnico IT1 — diagramas leves e feature cards elaborados |
| Ao menos um critério de segurança ou usabilidade identificado | ✅ | Ver aba RNF desta página |
Definition of Done — Evidências
Checklist do DoD verificado ao encerrar a F09. Todos os itens foram atendidos antes de mover a issue para Done no Kanban.
| Critério DoD | Status | Evidência |
|---|---|---|
| Critérios de aceite validados (BDD cobertos) | ✅ | Issue #54 — evidências anexadas na descrição da issue |
| Testes automatizados passando (unitários + integração) | ✅ | Issue #54 — evidências anexadas na descrição da issue |
| Lint sem erros e formatação OK (ESLint + Prettier) | ✅ | Issue #54 — evidências anexadas na descrição da issue |
| CI verde (build + testes + lint) | ✅ | Issue #54 — evidências anexadas na descrição da issue |
| PR aprovado por Chief Programmer ou Project Manager | ✅ | Issue #54 — PR de resolução com approve registrado |
| Migration de banco aplicada | ✅ | Issue #54 — evidências anexadas na descrição da issue |
| Sem vulnerabilidades críticas (SAST/linting de segurança) | ✅ | Issue #54 — evidências anexadas na descrição da issue |
| Validação parcial do cliente registrada | ✅ | Validação Parcial IT1 |
| Validação Formal aprovada pelo cliente | ✅ | Validação Formal IT1 |
| Rastreabilidade atualizada | ✅ | V&V IT1 — V.01 — impacto em RNF08/F09 registrado |
| Issue movida para Done no GitHub Projects | ✅ | Issue #54 — fechada via merge do PR (closes #N) |
