在我的Spree应用程序中,我创建了名为 sales_rep 的新角色,我希望为具有此角色的用户授予管理员权限。
在这里你可以找到我的cancan能力档案:
module Spree
class SalesRepAbility
include CanCan::Ability
def initialize(user)
if user.respond_to?(:has_spree_role?) && user.has_spree_role?('sales_rep')
can :manage, :all
end
end
end
end
但是当我尝试使用管理员/登录网址管理员登录时,它不会对管理员以外的用户进行身份验证。
其实我想覆盖 Spree :: Admin :: UserSessionsController 的 authenticate_spree_user!失败的创建方法。
有没有办法覆盖 Spree :: Admin :: UserSessionsController 的 authenticate_spree_user!方法,以便让sales_rep
的角色可以访问这个管理面板。
这是我的控制器方法:
def create
authenticate_spree_user!
if spree_user_signed_in?
respond_to do |format|
format.html {
flash[:success] = Spree.t(:logged_in_succesfully)
redirect_back_or_default(after_sign_in_path_for(spree_current_user))
}
format.js {
user = resource.record
render :json => {:ship_address => user.ship_address, :bill_address => user.bill_address}.to_json
}
end
end
我只是想允许具有sales_rep
角色的用户登录与Spree中的Admin一样,并且我想要覆盖 Spree :: Admin :: UserSessionsController ' s创建方法。
有没有办法实现这个目标?我如何允许用户具有与管理员不同的角色来访问面板。
任何帮助表示赞赏!!
答案 0 :(得分:2)
您还必须注册自己的能力。
在spree.rb中添加Spree::Ability.register_ability(Spree:: SalesRepAbility)
并重新启动服务器