声明性授权用户切换

时间:2014-03-19 12:52:24

标签: ruby-on-rails-3 authlogic declarative-authorization

是否有人尝试使用authlogic / declarative授权gems添加用户角色切换?

我的要求是用户可以拥有多个角色(例如作者,教师)并可以在应用程序中切换角色。

我对如何处理这个问题有两个想法:

  1. 将另一个布尔属性(活动)添加到user_roles连接 表
  2. 将已切换的role_id复制到users表并正常工作
  3. 我阅读了声明性授权自述文件,看不到任何看似内置的内容。任何想法都会受到赞赏

1 个答案:

答案 0 :(得分:0)

今天回顾一下,解决方案很简单。我为我的多对多user_roles连接添加了一个布尔属性,以避免重复。现在,联接具有以下属性:

id | user_id | role_id | active

我的用户模型中的 role_symbols 方法,用于挂钩在authorization_rules.rb DSL中,现在看起来像:

def role_symbols
  user_roles.where(:active => true).map do |user_role|
    user_role.role.name.underscore.to_sym
  end
end

现在,一个用户角色将自己设置为user_roles表中哪个角色的活动为true。

用户切换也很容易(来自用户模型)

def self.set_active_role(user_id, role_id)
  UserRole.where(:user_id => user_id).update_all(:active => false)

  activate_role = UserRole.where(:user_id => user_id, :role_id => role_id).first
  activate_role.update_attributes(:active => true)
end

认为它可能会帮助将来的某个人