Sha256: 1095dd59e0109af666c1699018e58b3cff99b9574ea1b31faf16ff374b090350

Contents?: true

Size: 963 Bytes

Versions: 3

Compression:

Stored size: 963 Bytes

Contents

module Admin
  class UsersController < ApplicationController
    before_action :require_admin!, except: [:stop_impersonating]
    skip_authorization_check

    def index
      @users = User.all
    end

    def impersonate
      user = User.find(params[:id])
      track_impersonation(user, 'Start')
      impersonate_user(user)
      redirect_to root_path
    end

    def stop_impersonating
      track_impersonation(current_user, 'Stop')
      stop_impersonating_user
      redirect_to admin_users_path
    end

    private

    def require_admin!
      txt = 'You must be an admin to perform that action'
      redirect_to root_path, notice: txt unless current_user.admin?
    end

    def track_impersonation(user, status)
      analytics_track(
        true_user,
        "Impersonation #{status}",
        impersonated_user_id: user.id,
        impersonated_user_email: user.email,
        impersonated_by_email: true_user.email,
      )
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
voyage-1.44.0.9 lib/voyage/templates/admin_users_controller.rb
voyage-1.44.0.8 lib/voyage/templates/admin_users_controller.rb
voyage-1.44.0.7 lib/voyage/templates/admin_users_controller.rb