Jan 15, 2026

Como usar o Pundit para autorização no Hgr Rails?

Deixe um recado

Ei! Como fornecedor do Hgr Rails, muitas vezes sou questionado sobre como usar o Pundit para autorização em aplicações Hgr Rails. Nesta postagem do blog, vou orientar você no processo e compartilhar algumas dicas que facilitarão sua vida.

Primeiramente, vamos falar um pouco sobre o que é Hgr Rails. Hgr Rails são uma parte essencial de muitos sistemas de movimento linear. Eles oferecem alta precisão e durabilidade, o que os torna super populares em diversos setores. Você pode aprender mais sobre eles nesta página:Trilhos Hgr. E se você estiver curioso sobre os diferentes tipos de trilhos-guia lineares, confiraTipos de trilhos de guia linear. Um tipo específico no qual você pode estar interessado é oGuia Linear GHH-CA.

Agora, vamos mergulhar no Pundit. Pundit é uma joia que facilita muito o tratamento de autorizações em aplicações Rails. Ele segue o princípio de manter a lógica de autorização separada de seus modelos e controladores, o que é uma ótima prática para manter seu código limpo e de fácil manutenção.

Linear Guide Rail TypesGHH-CA Linear Guide suppliers

Primeiros passos com o Pundit

O primeiro passo é adicionar o Pundit à sua aplicação Rails. Abra o seuSalvar arquivose adicione a seguinte linha:

jóia 'estudioso'

Então, corrainstalação de pacoteno seu terminal. Feito isso, você precisa configurar o Pundit em seu aplicativo. Em seuControlador de aplicação, adicione o seguinte código:

class ApplicationController < ActionController::Base include Pundit Rescue_from Pundit::NotAuthorizedError, com: :user_not_authorized private def user_not_authorized flash[:alert] = "Você não está autorizado a executar esta ação." redirecionar_to(request.referrer || root_path) fim fim

Este código inclui o módulo Pundit em seuControlador de aplicaçãoe configura um bloco de resgate para quando um usuário tenta executar uma ação para a qual não está autorizado.

Criando Políticas

As políticas estão no centro do Pundit. É onde você define as regras de autorização para seu aplicativo. Para criar uma política, você pode usar o gerador Rails. Por exemplo, se você tiver umProdutomodelo, você pode criar uma política para ele assim:

Rails gera analista: produto político

Isso criará um arquivo chamadopolítica_do_produto.rbnoaplicativo/políticasdiretório. Abra este arquivo e você verá uma estrutura básica como esta:

classe ProductPolicy < Índice de definição de ApplicationPolicy? falso final def show? falso final def criar? falso fim def novo? criar? final da atualização de definição? falso final def editar? atualizar? fim def destruir? fim falso fim

Esses métodos representam diferentes ações que um usuário pode tentar executar em umProduto. Por padrão, todos eles retornamfalso, o que significa que ninguém está autorizado a realizar essas ações. Você precisa personalizar esses métodos com base nos requisitos do seu aplicativo.

Por exemplo, digamos que apenas administradores podem criar, atualizar e destruir produtos, mas todos os usuários podem visualizar a lista e os detalhes dos produtos. Você pode modificar a política assim:

classe ProductPolicy < Índice de definição de ApplicationPolicy? verdadeiro fim def show? verdadeiro fim def criar? usuário.admin? fim def novo? criar? final da atualização de definição? usuário.admin? final def editar? atualizar? fim def destruir? usuário.admin? fim fim

Neste código, ousuáriovariável representa o usuário atualmente conectado. Oadministrador?método é considerado um método noUsuáriomodelo que retornaverdadeirose o usuário for um administrador.

Usando políticas em controladores

Depois de criar suas políticas, você poderá usá-las em seus controladores. Por exemplo, em seuProdutosControlador, você pode adicionar o seguinte código:

class ProductsController < ApplicationController def index @products = Product.all autorizar @products end def show @product = Product.find(params[:id]) autorizar @product end def new @product = Product.new autorizar @product end def create @product = Product.new(product_params) autorizar @product if @product.save redirect_to @product, aviso: 'O produto foi criado com sucesso.' else render :new end end def edit @product = Product.find(params[:id]) autorizar @product end def update @product = Product.find(params[:id]) autorizar @product if @product.update(product_params) redirect_to @product, aviso: 'O produto foi atualizado com sucesso.' else render :edit end end def destroy @product = Product.find(params[:id]) authorize @product @product.destroy redirect_to products_url, aviso: 'O produto foi destruído com sucesso.' fim privado def produto_params params.require(:produto).permit(:nome, :preço) fim fim

OautorizarO método é chamado em cada ação para verificar se o usuário atual está autorizado a executar aquela ação. Se o usuário não estiver autorizado, o Pundit levantará umaEspecialista::NotAuthorizedError, que será capturado pelousuário_não_autorizadométodo noControlador de aplicação.

Políticas com escopo

Às vezes, você pode querer restringir a lista de recursos que um usuário pode acessar. Por exemplo, você pode ter um sistema onde os usuários só possam ver os produtos que criaram. O Pundit permite definir políticas com escopo para essa finalidade.

Primeiro, crie uma classe de escopo para seu modelo. Para oProdutomodelo, você pode criar umPolítica de Produto::Escopoclasse assim:

class ProductPolicy < ApplicationPolicy class Scope < Scope def resolve if user.admin? scope.all else scope.where(user_id: user.id) end end end # Outros métodos de política... end

Noresolvermétodo, você define a lógica para restringir o escopo dos recursos. Neste exemplo, os administradores podem ver todos os produtos, enquanto os usuários normais só podem ver os produtos que criaram.

Então, em seuProdutosControlador, você pode usar a política com escopo assim:

class ProductsController < ApplicationController def index @products = policy_scope(Product) authorize @products end # Outras ações do controlador... end

Oescopo_políticaO método retorna uma relação com escopo baseado na política de escopo que você definiu.

Conclusão

Usar o Pundit para autorização em aplicações Hgr Rails é uma ótima maneira de manter seu código organizado e seguro. Ao separar sua lógica de autorização em políticas, você pode gerenciar facilmente quem pode executar quais ações em seu aplicativo.

Se você estiver procurando por Hgr Rails ou outros produtos de movimento linear, sinta-se à vontade para entrar em contato para uma discussão de compra. Estamos aqui para lhe fornecer produtos de alta qualidade e excelente serviço.

Referências

  • Documentação oficial do especialista
  • Guias Rails sobre autorização
Enviar inquérito