Spree Разрешить вход администратора с различными ролями, добавленными в пользователя

В своем приложении Spree я создал новую роль с именем sales_rep и хочу предоставить административный доступ пользователям, имеющим эту роль.

Здесь вы можете найти мой файл канканских способностей:

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

но когда я пытаюсь войти через admin с URL-адресом admin / login, это не аутентифицирует пользователя, кроме admin.

На самом деле я хочу переопределить метод создания Spree::Admin::UserSessionsController, в котором authenticate_spree_user! терпит неудачу.

Есть ли способ переопределить Spree::Admin::UserSessionsController 's 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, и для этого я хочу переопределить метод создания Spree::Admin::UserSessionsController.

Есть ли способ добиться этого? Как я могу позволить пользователю, имеющему другую роль, чем администратор, чтобы получить доступ к панели.

Любая помощь приветствуется!

1 ответ

Вы должны также зарегистрировать свою способность. добавлять Spree::Ability.register_ability(Spree:: SalesRepAbility) в spree.rb и перезагрузите сервер

Другие вопросы по тегам