‫Narrador: Portanto, estamos atualmente
‫no processo de dar alguns retoques finais em nossa
‫API, e uma das coisas que precisamos
‫fazer agora é consertar parte
‫da autenticação e autorização em todos os nossos recursos.
‫E vamos começar aqui com nosso recurso de turismo.
‫E como todo o material
‫de autenticação e autorização é sempre definido nas
‫declarações de rota,
‫bem, vamos trabalhar aqui no arquivo de rotas de passeio.
‫Então, essa API de tour que temos
‫aqui é basicamente o que queremos expor ao mundo.
‫Por exemplo, podemos permitir que
‫outros sites de viagens incorporem nossos passeios
‫em seus próprios sites.
‫E é para isso que essa API serve basicamente.
‫E portanto, não teremos qualquer autorização para
‫obter solicitações de passeios.
‫Direito?
‫E então devemos realmente nos livrar do
‫que temos atualmente.
‫Direito?
‫Então, este aqui.
‫Então, ao obter
‫todos os tours, agora temos
‫que protegê-los, e apenas usuários autenticados podem usar isso.
‫OK?
‫Mas, novamente, isso não
‫faz muito sentido, porque você
‫deseja expor essa parte da API para todos.
‫Então, vamos nos livrar disso.
‫No entanto, nas ações de criação ou edição de tours,
‫queremos apenas permitir que
‫os guias e administradores realizem essas ações.
‫Então, é claro, não há usuários normais e
‫também não há guias normais.
‫Portanto, apenas administradores e guias de leads.
‫E então vamos colocar isso aqui, na verdade.
‫Authcontroller. proteger
‫e authcontroller. restrito.
‫Administrador e
‫guia de leads.
‫Salve
‫aqui, e parece ótimo.
‫E a seguir queremos fazer o mesmo com a edição.
‫Direito?
‫Já fizemos isso no líder, então
‫vamos copiar o que temos aqui para corrigir também.
‫Salve, e agora está realmente perfeito.
‫OK?
‫Então todo o
‫resto, mesmo tendo apenas um único tour
‫aqui, é claro que é grátis para todos, ok?
‫E o mesmo vale para obter os melhores passeios
‫e também obter as estatísticas do passeio.
‫Agora, aqui, sobre o plano de
‫obtenção mensal, também podemos querer restringir isso.
‫Apenas, por exemplo, para todos, exceto usuários normais.
‫OK?
‫Então copie este aqui
‫também, salve-o e adicione também as guias normais.
‫Tudo bem?
‫E então, parece perfeito neste ponto, eu acho.
‫OK?
‫Então, basicamente, nosso roteador de tour está concluído.
‫Perfeito.
‫E não vou testar
‫tudo isso porque já sabemos que funciona.
‫Tudo bem?
‫Então, vamos fechar
‫este e seguir direto para o próximo.
‫Então, essas primeiras
‫rotas aqui são abertas a todos.
‫Portanto, inscreva-se, faça login,
‫esqueça a senha e redefina a senha.
‫Para nada disso, você precisa estar logado.
‫Direito?
‫Mas, você precisa estar
‫logado para ser autenticado para atualizar sua senha, para obter
‫suas próprias informações, para
‫atualizar ou deletar sua própria conta, e realmente
‫para todas essas outras operações
‫aqui também.
‫Portanto, não queremos que o público basicamente obtenha informações
‫sobre todos os usuários.
‫Também não queremos que ninguém exclua
‫ou atualize usuários, e realmente nenhuma dessas operações
‫aqui deve ser gratuita para o público.
‫OK?
‫Portanto, para todas essas
‫rotas aqui, a partir deste
‫ponto, você sempre terá que estar autenticado.
‫Tudo bem?
‫E então, podemos ir em frente e
‫adicionar este controlador de autorização. proteger para todas essas rotas, mas
‫na verdade podemos fazer melhor do que isso, certo?
‫Então, para fazer isso,
‫vamos ter em mente que esta função de proteção
‫aqui é apenas um middleware.
‫E lembre-se também de que
‫o middleware é executado sempre em sequência, certo?
‫Agora, com esse roteador que
‫temos aqui, que criamos
‫no começo, é como um mini-aplicativo.
‫Lembre-se disso?
‫E assim como com o
‫aplicativo normal, podemos usar middleware neste roteador também.
‫OK?
‫E então, podemos fazer algo assim.
‫Roteador. use
‫e agora o authcontroller. proteger, e é
‫isso.
‫E o
‫que isso fará é basicamente proteger todas
‫as rotas que vierem depois desse ponto.
‫OK?
‫E, novamente, isso ocorre porque o middleware
‫é executado em sequência.
‫E então, após essas quatro funções de
‫middleware, porque lembre-se de que
‫tecnicamente isso ainda é
‫middleware, o próximo middleware na pilha é este proteger.
‫E isso só chamará o próximo middleware
‫se o usuário for autenticado.
‫E o próximo middleware neste caso é este patch aqui.
‫OK?
‫E então, novamente, o que
‫isso significa é
‫que todas essas rotas para todos
‫esses middlewares, tecnicamente, que vêm depois desse agora estão protegidas.
‫E assim, podemos ir em frente e remover essa proteção
‫de todos eles.
‫OK?
‫E só para provar que isso ainda
‫funciona, vamos apenas prosseguir e obter as informações sobre mim.
‫Então, basicamente, o usuário atual.
‫Portanto, se eu executar
‫isso agora, você verá que ainda funciona.
‫E se eu remover a
‫autenticação, ele dirá que não estamos logados.
‫E é exatamente isso que protege o middleware.
‫Direito?
‫Então, agora vai voltar a funcionar.
‫Tão perfeito!
‫Esse é um pequeno truque legal para
‫proteger todas as rotas ao mesmo
‫tempo, normalmente usando um middleware
‫que vem antes de todas essas outras rotas.
‫OK?
‫E por exemplo, se
‫movermos agora um pouco para cima, como este
‫por exemplo, então também precisaríamos
‫estar logados para usar a senha esquecida.
‫Direito?
‫Então, deixe-me provar isso para você.
‫OK?
‫E então normalmente, é claro, não precisamos estar
‫logados para esquecer nossa
‫senha, porque isso não faria sentido, certo?
‫Mas agora, como movemos esse middleware um
‫pouco para cima, ele diz "você não está logado".
‫OK?
‫E então, realmente, isso prova que este controlador de autenticação aqui está
‫fazendo seu trabalho.
‫Portanto, proteja todas as rotas - após
‫este middleware.
‫OK.
‫Agora lembre-se também de como dissemos
‫que todas essas ações aqui devem ser
‫executadas apenas por
‫administradores e, portanto, agora podemos usar exatamente a mesma
‫técnica que usamos aqui para proteger todas essas rotas.
‫Então, roteador.
‫use, authcontroller. restrito, admin.
‫OK?
‫E agora, apenas os administradores poderão obter
‫todos os usuários, criar novos usuários, obter usuários novamente
‫e corrigir e excluir usuários.
‫Tudo bem?
‫E assim, a partir
‫deste ponto, todas as rotas não são
‫apenas protegidas, mas também restritas apenas ao administrador.
‫Mas é claro, aqueles que vêm antes
‫de todos que estão logados podem acessá-los, certo?
‫Então, deixe-me provar isso para você.
‫Então, vou fazer o login, não com admin,
‫mas com testuser.
‫OK?
‫E assim, fizemos o login
‫com sucesso, agora vamos tentar ver todos os usuários.
‫E agora diz que você não está logado.
‫Bem, na verdade estamos logados,
‫mas esquecemos de adicionar a autorização aqui.
‫Então, token de portador, envie-o novamente, e agora vemos
‫que você não tem permissão para executar.
‫Mas agora, quando mudamos isso para o administrador, então nos
‫conectamos como administrador agora, e
‫agora que pegamos todos os usuários, então é claro
‫que funciona.
‫Tão perfeito!
‫E isso realmente conclui
‫a autenticação e autorização para esses usuários também.
‫Mas só para
‫refletir isso no Postman, vamos voltar e basicamente colocar a
‫autorização aqui, em todos os lugares.
‫OK?
‫E, novamente, isso é
‫porque mais tarde iremos criar uma
‫documentação de API baseada na coleção que criamos aqui.
‫E então, é importante que realmente marcemos
‫este aqui como protegido.
‫Salve isso.
‫Salve este também.
‫E o mesmo para atualizar e excluir usuário.
‫Portanto, token do portador, salve e
‫o mesmo para atualização.
‫Tudo bem, e já que estamos fazendo isso, vamos fazer o
‫mesmo com todos os outros.
‫Então, não as críticas, essa
‫é para um pouco
‫mais tarde, mas realmente para os passeios.
‫Então, aqui não precisamos mais de
‫autenticação, vamos salvá-la.
‫Esquecendo, também não precisamos de nenhuma
‫autorização, mas para criar, agora precisamos do token do portador.
‫OK?
‫Também para atualização, então faz
‫sentido protegê-los aqui no Postman também.
‫Agora, este já tinha, porque
‫na verdade usamos este para testá-lo em
‫primeiro lugar.
‫Então esse aqui não tinha, mas o plano ganha mensal, nós
‫protegemos esse aqui também.
‫Adicione o token do portador
‫aqui também e,
‫assim, acredito que estamos realmente concluídos agora, com estes também.
‫E então o que precisamos fazer para terminar
‫agora esta parte está aqui, consertar a mesma coisa nos comentários também.
‫E a primeira coisa que
‫quero fazer é basicamente proteger todas as
‫rotas que têm a ver com revisões.
‫Portanto, não queremos que ninguém
‫que não seja autenticado obtenha, publique, altere ou exclua quaisquer comentários.
‫OK?
‫Dizemos roteador. usar,
‫controlador de autenticação. proteger.
‫OK?
‫E isso significa que a partir
‫deste ponto ninguém pode acessar qualquer uma
‫dessas rotas sem ser autenticado.
‫Mas podemos remover essa parte aqui, ok?
‫E agora, com a autenticação fora do
‫caminho, vamos pensar sobre a autorização.
‫Portanto, em primeiro lugar, apenas os usuários devem
‫ser capazes de postar comentários.
‫Sem guias e também sem administradores.
‫E então essa parte, na verdade já temos isso aqui.
‫OK?
‫Então, os administradores devem ser capazes de atualizar
‫ou deletar resenhas, assim como usuários regulares, é
‫claro, para que eles possam editar
‫ou deletar suas próprias resenhas.
‫E, finalmente, os guias não podem adicionar, editar ou excluir avaliações.
‫Já que os guias são os que estão realizando o trabalho,
‫seria estranho se eles próprios pudessem
‫postar avaliações ou editar as avaliações de outras pessoas, certo?
‫E então vamos colocar o que acabamos de descrever em código.
‫Então, basicamente patch e delete
‫são restritos a
‫usuários, ou
‫na verdade apenas usuário e administrador.
‫E então a mesma coisa para deletar.
‫OK?
‫E então você vê que agora os guias e
‫guias líderes não têm nada a ver com as revisões.
‫Tudo o que eles podem fazer
‫é realmente obter comentários, mas não alterá-los ou publicá-los, certo?
‫E então, rapidamente agora no Postman, vamos
‫colocar isso aqui também.
‫Portanto, criar novos comentários já tem autorização, obter todos os
‫comentários também precisa disso agora.
‫Assim, com o token do portador, salve este, aqui,
‫o token do portador também.
‫Agora escreva e obtenha também uma única revisão.
‫Na verdade, vamos ordenar isso também, para
‫que todos fiquem mais ou menos na mesma ordem.
‫E agora, sobre esses dois aqui,
‫eles também estão protegidos.
‫Direito?
‫Porque, em última análise, são os
‫manipuladores de revisão que realmente são chamados para ambos.
‫E aqui também precisamos adicionar esse token de portador.
‫OK?
‫Portanto, agora, basicamente, a única maneira
‫de obter acesso aos dados sobre as avaliações é ligar para todos os passeios.
‫Direito?
‫Pelo menos para pessoas que não são autenticadas.
‫OK?
‫Então, vamos encerrar tudo isso, acho que
‫agora estamos prontos para prosseguir e, na
‫verdade, também concluímos esta parte.
‫Vamos limpar isso aqui um pouco.
‫E sim, acho que é isso.
‫Com isso, concluímos as partes de
‫autenticação e autorização de todos os nossos três recursos, portanto,
‫estamos perto de terminar nossa API aqui.
‫Há apenas uma pequena quantidade de coisas a serem feitas
‫e, portanto, faremos tudo isso
‫no restante desta seção.