2012-06-18 29 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」。

因此,這爲我工作,我能夠控制我的角色的權限。