gitlab-org--gitlab-foss/app/controllers/admin/impersonation_tokens_controller.rb

56 lines
1.5 KiB
Ruby
Raw Normal View History

class Admin::ImpersonationTokensController < Admin::ApplicationController
2017-02-27 13:56:54 -05:00
before_action :user, :finder
def index
set_index_vars
end
def create
2017-02-27 13:56:54 -05:00
@impersonation_token = finder.execute.build(impersonation_token_params)
if @impersonation_token.save
flash[:impersonation_token] = @impersonation_token.token
redirect_to admin_user_impersonation_tokens_path, notice: "A new impersonation token has been created."
else
set_index_vars
render :index
end
end
def revoke
2017-02-27 13:56:54 -05:00
@impersonation_token = finder.execute(id: params[:id])
if @impersonation_token.revoke!
flash[:notice] = "Revoked impersonation token #{@impersonation_token.name}!"
else
flash[:alert] = "Could not revoke impersonation token #{@impersonation_token.name}."
end
redirect_to admin_user_impersonation_tokens_path
end
private
def user
@user ||= User.find_by!(username: params[:user_id])
end
2017-02-27 13:56:54 -05:00
def finder
@finder ||= PersonalAccessTokensFinder.new(user: user, impersonation: true)
end
def impersonation_token_params
params.require(:personal_access_token).permit(:name, :expires_at, :impersonation, scopes: [])
end
def set_index_vars
2017-02-27 13:56:54 -05:00
finder.params[:state] = 'active'
@impersonation_token ||= finder.execute.build
@scopes = Gitlab::Auth::SCOPES
2017-02-27 13:56:54 -05:00
finder.params[:order] = :expires_at
@active_impersonation_tokens = finder.execute
finder.params[:state] = 'inactive'
@inactive_impersonation_tokens = finder.execute
end
end