我的场景涉及超级管理员、客户端管理员、客户端用户的 Rails CanCan 授权

发布于 2024-12-14 13:21:59 字数 598 浏览 3 评论 0原文

我是 ROR 的新手。我的项目超级管理员中有以下角色及其操作

[这就是我]
->可以管理所有

Clientadmin [每个客户的管理员用户]
->可以管理用户,其组织的用户
->可以管理由其组织的用户创建的客户数据

Clientuser [可以创建、更新自己的数据的用户]
->可以读取由其组织的用户创建的数据[客户]
->可以创建数据
->可以更新由他创建的数据

模型

客户端
用户
数据

关联

客户端 has_many :users

用户 own_to :client
用户 has_many :datas

数据属于_to :users

问题:

我已使用 devise 进行身份验证。并尝试使用CanCan进行授权。需要授权超级管理员来管理所有内容,我可以指定“该用户只能看到其组织的用户创建的数据”吗?

如果您帮助我提供示例代码,将会更有帮助。

谢谢,
克格克

I am a newbie to ROR. I have the following Roles and their actions in my project

Superadmin [ thatz me ]
-> Can Manage all

Clientadmin [admin user for each customer ]
-> can Manage User, users of his organization
-> can Manage Client Data, created by users of his organization

Clientuser [ user who can create, update their own data]
-> can read Data, created by users of his organization [client]
-> can create Data
-> can update Data, created by him

Models

Client
User
Data

Association

Client has_many :users

User belongs_to :client
User has_many :datas

Data belongs_to :users

Problem:

I have used devise for authentication. And trying to use CanCan for authorization. Need to authorize superadmin to manage all, and can I specify that "this user can see only datas created by users of his organization" if so how.

It will be more helpful if you help me with a sample code.

Thanks,
KGK

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

信愁 2024-12-21 13:22:00

维基页面“定义能力”有一些很好的例子。

class Ability
  include CanCan::Ability

  def initialize(user)
    user ||= User.new # guest user (not logged in)
    if user.admin?
      can :manage, :all
    elsif user.clientadmin?
      can :manage, User, :client_id => user.client_id
      can :manage, Data, :client_id => user.client_id
    end
  end
end

The wiki page "Defining Abilities" has some good examples.

https://github.com/ryanb/cancan/wiki/defining-abilities

class Ability
  include CanCan::Ability

  def initialize(user)
    user ||= User.new # guest user (not logged in)
    if user.admin?
      can :manage, :all
    elsif user.clientadmin?
      can :manage, User, :client_id => user.client_id
      can :manage, Data, :client_id => user.client_id
    end
  end
end
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文