내 응용 프로그램에서 사용자는 다른 사용자를 자신의 계정에서 '기여자'로 초대 할 수 있습니다. 이 참여자는 일단 로그인하면 로그인 할 수있는 각 계정을 보여주는 대시 보드로 리디렉션됩니다.Rails : Devise 다른 사용자의 문제로 로그인
아래는 제공자 및 학교 관리자가 선수 계정에 로그인 할 수있게하는 데 사용되는 컨트롤러입니다. 원래 사용자가 계정에 로그인하면 앱이 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