gpt4 book ai didi

ruby-on-rails - 使用 Pundit gem 导出所有用户策略

转载 作者:行者123 更新时间:2023-12-02 00:31:14 25 4
gpt4 key购买 nike

如何使用 Pundit Gem 检索所有用户策略和范围?我需要返回一个包含所有用户策略的 json 对象,以检查前端 javascript 模板中的权限。

使用 CanCanCan gem,我可以做这样的事情:

class Ability
include CanCan::Ability

# ....

def to_list
rules.map do |rule|
object = { actions: rule.actions, subject: rule.subjects.map{ |s| s.is_a?(Symbol) ? s : s.name } }
object[:conditions] = rule.conditions unless rule.conditions.blank?
object[:inverted] = true unless rule.base_behavior
object
end
end
end

是否可以对 Pundit 做同样的事情?

最佳答案

我有同样的要求,我在每次调查中得到了以下代码:

def index
classes = [Admin, BusNumber, Ticket, :ticket_statistics]

permissions = { }

classes.each do |clazz|
policy = Pundit.policy(current_admin, clazz)
policy.public_methods(false).sort.each do |m|
result = policy.send m
permissions["#{clazz}.#{m}"] = result
end
end

render json: permissions
end

current_admin是获取当前登录用户的方法,代码给出如下结果

{
"Admin.create?": true,
"Admin.disable?": true,
"Admin.enable?": true,
"Admin.index?": true,
"Admin.show?": true,
"Admin.update?": true,
"BusNumber.create?": true,
"BusNumber.destroy?": true,
"BusNumber.index?": true,
"BusNumber.update?": true,
"Ticket.index?": true,
"Ticket.refund_by_admin?": true,
"Ticket.show?": true,
"ticket_statistics.overall?": true
}

关于ruby-on-rails - 使用 Pundit gem 导出所有用户策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51830937/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com