Trilha Júnior Trilha

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:
Prévia grátis · Aula 1 3 min de leitura

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 aulas
1

As 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.

Prévia grátis
2

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.

Quiz
3

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.

Quiz
4

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.

Quiz
5

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.

Quiz
6

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.

Quiz
7

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?.

Quiz + desafio
Digite para buscar...