Autenticação das rotas e modelo de rota
As rotas da API que requerem autenticação serão protegidas com o uso de um token JWT gerado pelo servidor, com o objetivo de garantir que apenas quem tem os acessos corretos consiga fazer uma requisição a uma rota.
O app deve, inicialmente, fazer request POST
para a rota /api/auth
, passando o payload JSON conforme descrito no Postman:
{
"code": "<código de acesso>"
}
Se o código for válido, a API retornará um campo na resposta JSON com o token de acesso a ser usado em requests futuros:
{
"accessCode": "<token JWT (uma string que parece ser aleatória, mas não é :D )>",
"permission": "<tipo do código de acesso informado: contagem de tempo, gestão ou administração do app>",
"//": "outras informações que podem ser obtidas pelo código, como os dados do hospital, suas funções, tecnologias e atividades"
}
O app deve mandar o valor recebido em accessToken
no header Authorization
de cada request: Authorization: Bearer token_recebido
.
Autores: Rafael Araujo
Checklist
-
✅ funciona conforme especificação no Postman -
❌ possui testes de unidade/integração associados -
❌ mantém cobertura de pelo menos 50%
Os testes de unidade/integração serão iniciados na próxima sprint.
-
✅ documentação atualizada -
✅ código dentro dos padrões -
⚠ ️ código sem warnings ou erros de linter
Apenas um warning sobre ter um único export em um módulo, mas será corrigido quando tivermos a definição do segundo modelo.
-
✅ adiciona dependências externas (✅ aprovadas pelos AGES III)
Outras informações
Modifiquei algumas regras de linter e padrão de formatação para deixar o desenvolvimento mais prático. Também tive de adicionar uma regra de transpilação que pensava já vir por padrão pelo preset do babel.
Dependências:
-
express-jwt
: middleware para requerer um token JWT válido nas rotas necessárias; -
express-jwt-permissions
: middleware para requerer que uma permissão específica esteja presente em um token JWT; -
jsonwebtoken
: gerar tokens JWT.
Ambiente:
-
JWT_SECRET
: segredo usado para geração do token; -
JWT_EXPIRES_IN
: duração do token.