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 и перезагрузите сервер