我正在尝试使用此权威政策,不允许具有角色临床医生的用户访问患者控制器上的索引操作。范围部分目前正如我所希望的那样工作,但根据目前编写的政策,我仍然可以作为临床医生用户访问/患者。我究竟做错了什么?谢谢你的帮助!
以下是我的角色定义:
enum role: { staff: 0, clinician: 1, admin: 2 }
患者政策
class PatientPolicy < ApplicationPolicy
class Scope
attr_reader :user, :scope
def initialize(user, scope)
@user = user
@scope = scope
end
def resolve
if user.admin?
scope.all
else
scope.joins(:user).merge(User.where(university: user.university))
end
end
end
def index?
user.staff? or user.admin?
end
end
患者控制器:
def index
@patients = policy_scope(Patient)
end
[rest of controller]
答案 0 :(得分:1)
自己的目标:我需要在我的病人控制器中为我的索引操作添加授权行:
def index
authorize Patient
@patients = policy_scope(Patient)
end