首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails declarative_authorization project_admin角色

Rails declarative_authorization project_admin角色
EN

Stack Overflow用户
提问于 2012-09-30 04:25:00
回答 1查看 245关注 0票数 0

我正在尝试使用declarative_authorization gem创建项目管理员和项目协作者角色。

我有一个名为'collaborators‘的表,其中包含用户到项目的映射。

型号:

项目

代码语言:javascript
复制
has_many :collaborators  
has_many :users, :through => :collaborators  

用户

代码语言:javascript
复制
has_many :collaborators
has_many :projects, :through => :collaborators

协作者

代码语言:javascript
复制
belongs_to :user
belongs_to :project

我需要一些关于定义project_admin和project_collaborator角色的领域特定语言的指导。我想出了以下几点:

代码语言:javascript
复制
authorization do
  role :guest do
    has_permission_on :users, :to => [:read]
  end

  role :project_admin do
    has_permission_on :projects, :to => :manage do
      if_attribute :project_admin => true
    end
  end

  role :admin do
    has_permission_on :users, :to => [:delete]
  end
end

privileges do
  privilege :manage do
    includes :create, :read, :update, :delete
  end
end

感谢任何建议/帮助。

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2013-05-15 21:52:42

我更喜欢这样的东西,这样每个用户都可以成为项目管理员:

项目

代码语言:javascript
复制
has_many :collaborators  
has_many :users, :through => :collaborators 
belongs_to :admin, :table_name => 'users' # Maybe has_many?

authorization_rules.rb

代码语言:javascript
复制
authorization do
  role :guest do
    has_permission_on :users, :to => [:read]
  end

  role :user do
    has_permission_on :projects, :to => :create
    has_permission_on :projects, :to => :manage do
      if_attribute :admin => is { user }
    end
    has_permission_on :projects, :to => :read do
      if_attribute :collaborators => contains { user }
    end
    has_permission_on :files, :to => :manage do
      if_permitted_to :read, :project
    end
  end
end

privileges do
  privilege :manage do
    includes :create, :read, :update, :delete
  end
  privilege :read, :includes => [:index, :show]
  privilege :create, :includes => :new
  privilege :update, :includes => :edit
  privilege :delete, :includes => :destroy
end
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12656201

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档