Rails专家授权特定的控制器操作

时间:2016-06-03 15:12:32

标签: ruby-on-rails pundit

所以我使用Pundit检查授权访问权限。

在我的应用程序中的每个控制器之前,我有

class ReservationsController < ApplicationController
  before_action :authorize_reception!

使用辅助模块:

module AuthorizeMethods
  def authorize_admin!
    authorize User, :admin?
  end
  def authorize_reception!
    authorize user, :allow_reception?
  end

此用户政策

class UserPolicy
  def initialize(user, _resource)
    @user = user
  end

  def admin?
    @user.hotel_admin
  end

  def reception?
    admin? || @user.allow_reception
  end

我现在想要将接收角色的访问限制为动作:来自预约控制器的索引。

我想出了这个:

class ReservationsController < ApplicationController
  sip_before_action :admin!, only: [:index]
  before_action :authorize_reception!, only: [:index]

因此,对于每个其他操作,它需要一个管理员,而对于索引,只需一个接收角色。但我的接收角色是,可以访问控制器的所有操作(编辑,删除,创建),而不仅仅是索引。

0 个答案:

没有答案