В моем приложении пользователи могут приглашать других пользователей «Contributors» на свою учетную запись. Эти участники после того, как они вошли в систему, перенаправляются на панель мониторинга, в которой отображаются все учетные записи, в которые они могут войти.Rails: Devise Login как другой пользовательский вопрос
Ниже приведен контроллер, который позволяет Участникам и школьным администраторам регистрироваться на счетах спортсменов. Когда исходный пользователь регистрируется в учетной записи, приложение проверяет переменную session[:original_user_id]
, чтобы отобразить баннер сообщений в верхней части экрана со ссылкой, чтобы администратор мог войти в свою учетную запись. Это то, что у меня возникают проблемы с попыткой выяснить, как войти первоначальный пользователь назад в
SignInAsController:.
class SignInAsController < ApplicationController
before_filter :authenticate_user!
include SchoolAdmin::Athletes
def create
session[:original_user_id] = if (current_user.school_admin? || current_user.athlete_contributor?)
current_user.id
else
nil
end
user = User.find(params[:id])
if current_user.can_manage?(user)
sign_out(User.find(current_user.id))
handle_request(athlete)
redirect_to user_root_path
else
redirect_to :back, notice: "You do not have access to that account"
end
end
private
def handle_request(athlete)
sign_in(:user, athlete, { bypass: true })
end
end
UserModel can_manage? Метод:
class User < ActiveRecord::Base
#other methods
def can_manage?(user)
if athlete_contributor?
managed_athletes.include?(user)
elsif school_admin?
active_subscription.athletes.include?(user)
end
false
end
end