debian-mirror-gitlab/app/controllers/admin/impersonations_controller.rb

29 lines
756 B
Ruby
Raw Normal View History

2018-12-05 23:21:45 +05:30
# frozen_string_literal: true
2016-06-02 11:05:42 +05:30
class Admin::ImpersonationsController < Admin::ApplicationController
skip_before_action :authenticate_admin!
before_action :authenticate_impersonator!
def destroy
original_user = current_user
warden.set_user(impersonator, scope: :user)
2016-09-13 17:45:13 +05:30
Gitlab::AppLogger.info("User #{impersonator.username} has stopped impersonating #{original_user.username}")
2016-06-02 11:05:42 +05:30
session[:impersonator_id] = nil
2018-11-18 11:00:15 +05:30
redirect_to admin_user_path(original_user), status: :found
2016-06-02 11:05:42 +05:30
end
private
def impersonator
@impersonator ||= User.find(session[:impersonator_id]) if session[:impersonator_id]
end
def authenticate_impersonator!
2017-08-17 22:00:37 +05:30
render_404 unless impersonator && impersonator.admin? && !impersonator.blocked?
2016-06-02 11:05:42 +05:30
end
end