Sha256: 708cfc26fa3422d1048cd54eedbc01d308f8b8efc7d18c5abe39dd08fa87743b

Contents?: true

Size: 1.09 KB

Versions: 15

Compression:

Stored size: 1.09 KB

Contents

module UcbRailsUser::Concerns::ImpersonationsController
  extend ActiveSupport::Concern

  included do
    before_action :check_permissions, except: [:stop_impersonation]
  end

  def index

  end

  def create
    target = User.find_by(id: params[:ucb_rails_user_impersonation][:target_id])
    if logged_in_user.impersonate!(target)
      flash[:info] = "You are now impersonating #{target.full_name}"
      return redirect_to "/"
    else
      if target&.id == logged_in_user.id
        flash[:error] = "Sorry - you can't impersonate yourself."
      else
        flash[:error] = "Unable to start impersonating - please try again"
      end
      return redirect_to action: :index
    end
  end

  def stop_impersonation
    logged_in_user.stop_impersonation!
    flash[:info] = "You are no longer impersonating."
    redirect_to request.referer || "/"
  end

  private

  def check_permissions
    unless logged_in_user.can_impersonate?
      # TODO: I'm not crazy about this - should we provide some generic error pages for common situations?
      return render plain: "Not Authorized"
    end
  end

end

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
ucb_rails_user-4.1.2 app/controllers/ucb_rails_user/concerns/impersonations_controller.rb
ucb_rails_user-4.1.1 app/controllers/ucb_rails_user/concerns/impersonations_controller.rb
ucb_rails_user-4.1.0 app/controllers/ucb_rails_user/concerns/impersonations_controller.rb
ucb_rails_user-4.0.7 app/controllers/ucb_rails_user/concerns/impersonations_controller.rb
ucb_rails_user-4.0.6 app/controllers/ucb_rails_user/concerns/impersonations_controller.rb
ucb_rails_user-4.0.5 app/controllers/ucb_rails_user/concerns/impersonations_controller.rb
ucb_rails_user-4.0.4 app/controllers/ucb_rails_user/concerns/impersonations_controller.rb
ucb_rails_user-4.0.3 app/controllers/ucb_rails_user/concerns/impersonations_controller.rb
ucb_rails_user-4.0.2 app/controllers/ucb_rails_user/concerns/impersonations_controller.rb
ucb_rails_user-4.0.1 app/controllers/ucb_rails_user/concerns/impersonations_controller.rb
ucb_rails_user-4.0.0 app/controllers/ucb_rails_user/concerns/impersonations_controller.rb
ucb_rails_user-3.0.2 app/controllers/ucb_rails_user/concerns/impersonations_controller.rb
ucb_rails_user-4.0.0.beta1 app/controllers/ucb_rails_user/concerns/impersonations_controller.rb
ucb_rails_user-3.0.1 app/controllers/ucb_rails_user/concerns/impersonations_controller.rb
ucb_rails_user-3.0.0 app/controllers/ucb_rails_user/concerns/impersonations_controller.rb