mirror of
https://github.com/System-End/theseus.git
synced 2026-04-19 19:55:10 +00:00
33 lines
No EOL
914 B
Ruby
33 lines
No EOL
914 B
Ruby
module Public
|
|
class ImpersonationsController < ApplicationController
|
|
def new
|
|
authorize Impersonation
|
|
@impersonation = Impersonation.new
|
|
end
|
|
|
|
def create
|
|
@impersonation = Impersonation.new(impersonation_params.merge(user: current_user))
|
|
|
|
authorize @impersonation
|
|
|
|
if @impersonation.save
|
|
public_user = Public::User.find_or_create_by!(email: impersonation_params[:target_email])
|
|
session[:public_user_id] = public_user.id
|
|
session[:public_impersonator_user_id] = current_user.id
|
|
redirect_to public_root_path
|
|
else
|
|
render :new
|
|
end
|
|
end
|
|
|
|
def stop_impersonating
|
|
session[:public_user_id] = nil
|
|
session[:public_impersonator_user_id] = nil
|
|
redirect_to public_root_path
|
|
end
|
|
|
|
def impersonation_params
|
|
params.require(:public_impersonation).permit(:target_email, :justification)
|
|
end
|
|
end
|
|
end |