2012-06-18 28 views
2

我试图在Spree中指定一些自定义角色,例如角色“客户端”并扩展权限以访问此角色的管理员部分。Spree定制/扩展用户角色和权限

此用户将只能访问由该用户创建的产品。概念让具有角色“客户”的用户只管理产品和其他某些模型。

首先我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 

添加到了一个初始化:配置/初始化/ spree.rb

Ability.register_ability(RetailerAbility) 

也延长admin_products_controller_decorator.rb:应用程序/ controllersadmin_products_controller_decorator.rb

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

但我得到提示信息“授权失败”

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

一个GitHub的要点进行定制盛宴角色:https://gist.github.com/1277326

这里有一个类似的问题我面临:http://groups.google.com/group/spree-user/browse_thread/thread/1e819e10410d03c5/23b269e09c7ed47e

所有努力徒劳...

任何指针高度赞赏?

在此先感谢。

+0

使用spree 1.1.1,spree_multi_domain – swapab

回答

3

终于找到了。

经过一番仔细的研究发现,1.1版的Spree通过向每个类添加“Spree”模块来改变类,这导致了像“spree/admin/overview”这样的URL,早先是“admin/overview”。

因此,这为我工作,我能够控制我的角色的权限。