Autorização: Pundit
O Pundit é uma gem de autorização Ruby que este app nunca instalou. O curso lê as convenções do Pundit no README do GitHub: uma classe de policy por model, initialize(user, record), métodos de permissão terminados em interrogação e uma base ApplicationPolicy. Depois trata dos helpers de controller authorize e policy_scope e do rescue compartilhado de Pundit::NotAuthorizedError. Em seguida lê as policies que este app montou à mão, os outros arquivos de app/policies/ e como o formato delas se compara ao do Pundit. Fecha com custos e benefícios de adotar a gem e um pequeno desafio em Ruby.
O que você vai aprender
- ✓A convenção de nomes do Pundit, o formato das classes de policy e a base ApplicationPolicy
- ✓Como authorize, policy_scope e o rescue de Pundit::NotAuthorizedError funcionam nos controllers
- ✓Como as policies de controle de acesso feitas à mão neste app são escritas e chamadas
- ✓A diferença entre policies de controle de acesso e de regra de domínio em app/policies/
- ✓O que adotar o Pundit custaria e mudaria, incluindo a opção policy_class:
As convenções do Pundit, na documentação dele: uma classe de policy por model
O Pundit é uma gem de autorização Ruby muito usada, com mais de dez anos e ainda mantida. O Gemfile e o Gemfile.lock deste app não têm linha pundit; o app nunca o instalou. Antes de comparar qualquer coisa, este curso lê as convenções do Pundit no README do GitHub dele (github.com/varvet/pundit).…
Ler a aula completa grátis →Currículo
7 aulasAs convenções do Pundit, na documentação dele: uma classe de policy por model
Lê as convenções do README do Pundit: uma policy por model, um initialize de dois argumentos e a ApplicationPolicy gerada.
A integração do Pundit com controllers: authorize, policy_scope e NotAuthorizedError
Trata de authorize, do rescue compartilhado de Pundit::NotAuthorizedError, do policy_scope com Scope aninhada e do verify_authorized.
Este app nunca instalou o Pundit; construiu as próprias policies de controle de acesso
Lê Identity::UserPolicy e Community::CommentPolicy, policies de acesso feitas à mão e chamadas pelo nome em controllers, service e view.
Mais dois arquivos com Policy no nome, e a pasta em volta deles
Examina StreakPolicy e SolutionAccessPolicy como regras de domínio em métodos de classe, além de Partners::Tiers e dos outros arquivos.
O formato convergente: as policies deste app já parecem as do Pundit
Compara as policies deste app com o formato do Pundit e aponta três peças ausentes: authorize, rescue compartilhado e policy_scope.
O que adotar o Pundit mudaria, e uma diferença de nome neste app
Mostra a diferença de nome em Identity::UserPolicy, a opção policy_class: do Pundit e os custos e benefícios de adotar a gem.
Juntando tudo: um formato conhecido, alcançado sem a gem
Revisa o modelo mental do curso em ordem e fecha com um desafio em Ruby puro unindo submit_execution? e destroy?.