backend icon indicating copy to clipboard operation
backend copied to clipboard

Somente exibir campo de Contato quando logado(staff ou user)

Open kelvinsb opened this issue 9 months ago • 0 comments

Descrição

É necessário ocultar o dado de contato(telefone) para o público em geral e restringir para apenas usuários(STAFF e USER) para controlar melhor quem visualiza e deixar apenas para pessoal capacitado(registrado).

Solução

Como as guards atuais no controller(como @UseGuards(UserGuard)) restrigem totalmente o acesso a aquela rota para usuários registrados foi preciso

  1. Fazer um decorator(para interceptar a request) para pegar o contexto e retornar o usuário(caso tenha)
  2. Fazer uma guard para repassar o usuário para o controller
  3. No controller pegar o usuário e repassar para o service
  4. ~Então passar para uma função para verificar se o usuário(caso esteja logado) seja um dos permitidos(no momento todos)~ Basta verificar se um usuário é passado no guards(verificar se recebe do contexto de guard user, userId e sessionId)
  5. Caso seja então retorna o contact

Testes

É preciso fazer uns testes já que modifica alguns pontos e pode quebrar outros. Apesar de testar localmente e não ter quebrado nada os casos recomendados(mais impactados) foram:

  • [ ] (Logado) Testar no frontend detalhe de um abrigo: deve aparecer o contato
  • [ ] (Não Logado) Testar no frontend detalhe de um abrigo: não deve aparecer o contato

kelvinsb avatar May 11 '24 23:05 kelvinsb