Spree自定义/扩展用户角色和权限

时间:2012-06-18 09:13:42

标签: ruby-on-rails spree

我正在尝试在Spree中指定一些自定义角色,例如角色'client',并扩展权限以访问此角色的管理部分。

此用户只能访问该用户创建的产品。概念是让具有角色“客户”的用户仅管理产品和其他特定模型。

首先,我添加了CanCan插件并在role_ability.rb中定义了RoleAbility类

关注此帖:Spree Custom Roles Permissions

class RoleAbility
  include CanCan::Ability

  def initialize(user)
    user ||= User.new
    if user.has_role? 'admin'
        can :manage, :all
    elsif user.has_role? 'client_admin'
      can :read, Product
      can :admin, Product
    end
  end
end

将此添加到初始化程序:config / initializers / spree.rb

Ability.register_ability(RetailerAbility)

同样扩展了admin_products_controller_decorator.rb:app / controllersadmin_products_controller_decorator.rb

Admin::ProductsController.class_eval do
    def authorize_admin
        authorize! :admin, Product
        authorize! params[:action].to_sym, Product
    end
end

但是我收到了Flash消息'授权失败'

试图找到一些运气,我提到了以下链接

自定义狂欢角色的github要点:https://gist.github.com/1277326

以下是我面临的类似问题:http://groups.google.com/group/spree-user/browse_thread/thread/1e819e10410d03c5/23b269e09c7ed47e

所有的努力都是徒劳的......

任何指针都高度赞赏?

提前致谢。

1 个答案:

答案 0 :(得分:4)

终于找到了它。

经过仔细研究后发现spree 1.1.1通过在每个类中添加“Spree”模块来改变了类,这导致了像“spree / admin / overview”这样的url,之前是“admin / overview”。 / p>

这对我有用,我能够控制角色的权限。