✅ RF-01: Permitir que usuários façam login com e-mail e senha.
✅ RF-02: Gerar e validar tokens JWT para autenticação de usuários.
✅ RF-03: Permitir logout invalidando o token JWT.
✅ RF-04: Impedir acessos não autorizados a rotas protegidas.
✅ RF-05: Renovar tokens JWT expirados sem precisar de novo login.
✅ RF-06: Permitir que novos usuários se registrem.
✅ RF-07: Validar dados do usuário antes do cadastro (e-mail, senha, nome).
✅ RF-08: Criar diferentes níveis de permissão para usuários (exemplo: Admin, Usuário Comum).
✅ RF-09: Permitir que usuários atualizem seus dados.
✅ RF-10: Permitir que usuários alterem sua senha.
✅ RF-11: Implementar recuperação de senha via e-mail.
✅ RF-12: Listar todos os usuários (somente para admins).
✅ RF-13: Exibir detalhes do perfil de um usuário autenticado.
✅ RF-14: Excluir conta de usuário.
✅ RF-15: Aplicar middleware de autenticação nas rotas protegidas.
✅ RF-16: Implementar CORS para permitir acesso seguro à API.
✅ RF-17: Aplicar sanitização e validação de entrada de dados para evitar injeção de SQL e XSS.
✅ RF-18: Registrar logs de autenticação e eventos críticos.
✅ RF-19: Implementar rota de teste para verificar se a API está online.
✅ RF-20: Criar testes unitários para serviços e controladores.
✅ RF-21: Criar testes de integração para verificar o fluxo completo do sistema.
✅ RNF-01: O projeto deve seguir a arquitetura MVC (Model-View-Controller).
✅ RNF-02: A API deve ser construída utilizando o framework Express.js.
✅ RNF-03: O acesso ao banco de dados deve ser feito via DAO (Data Access Object).
✅ RNF-04: Todas as chamadas assíncronas ao banco de dados devem usar Promisify para evitar callbacks.
✅ RNF-05: O banco de dados utilizado deve ser o SQLite.
✅ RNF-06: O projeto não deve utilizar nenhum ORM.
✅ RNF-07: Senhas devem ser armazenadas de forma segura usando hashing (ex: bcrypt).
✅ RNF-08: Tokens JWT devem expirar após um período definido e devem ser renováveis.
✅ RNF-09: O sistema deve seguir boas práticas de desenvolvimento seguro para APIs REST.
✅ RNF-10: Configurações sensíveis (chaves JWT, credenciais de banco de dados) devem ser armazenadas em variáveis de ambiente (.env).
✅ RNF-11: Deve haver testes automatizados para garantir a integridade do sistema.
✅ RNF-12: O código deve ser modular e reutilizável, facilitando a manutenção.
✅ RNF-13: Logs de erros devem ser armazenados para facilitar a depuração.
⚖️ RN-01: Apenas usuários com e-mail válido podem se registrar.
⚖️ RN-02: A senha deve conter pelo menos:
- 8 caracteres
- 1 letra maiúscula
- 1 letra minúscula
- 1 número
- 1 caractere especial
⚖️ RN-03: Um usuário não pode se registrar com um e-mail já existente.
⚖️ RN-05: Apenas administradores podem listar todos os usuários.
⚖️ RN-06: Apenas o próprio usuário pode editar seu perfil, exceto admins.
⚖️ RN-07: Apenas administradores podem excluir contas de outros usuários.
⚖️ RN-08: Tokens JWT devem ser obrigatórios para acessar rotas protegidas.
⚖️ RN-09: Senhas não podem ser recuperadas, apenas redefinidas via e-mail.