狂欢允许管理员登录,在用户中添加了不同的角色

时间:2017-05-02 13:14:44

标签: ruby-on-rails-4 authentication spree spree-auth-devise

在我的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创建方法。

有没有办法实现这个目标?我如何允许用户具有与管理员不同的角色来访问面板。

任何帮助表示赞赏!!

1 个答案:

答案 0 :(得分:2)

您还必须注册自己的能力。 在spree.rb中添加Spree::Ability.register_ability(Spree:: SalesRepAbility)并重新启动服务器