Skip to content

GitLab

  • Menu
Projects Groups Snippets
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
  • backend backend
  • Project information
    • Project information
    • Activity
    • Labels
    • Planning hierarchy
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 0
    • Issues 0
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 0
    • Merge requests 0
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • dTool
  • backendbackend
  • Merge requests
  • !1

Merged
Created Apr 10, 2020 by Rafael Victor Ruwer Araujo@rafael.araujoGuest

Autenticação das rotas e modelo de rota

  • Overview 1
  • Commits 6
  • Changes 19

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.
Edited Apr 10, 2020 by Rafael Victor Ruwer Araujo
Assignee
Assign to
Reviewer
Request review from
Time tracking
Source branch: autenticacao