0b81b5ace0
This is the first commit doing mainly 3 things: 1. create a new scope and allow users to use it 2. Have the JWTController respond correctly on this 3. Updates documentation to suggest usage of PATs There is one gotcha, there will be no support for impersonation tokens, as this seems not needed. Fixes gitlab-org/gitlab-ce#19219
47 lines
1.4 KiB
Ruby
47 lines
1.4 KiB
Ruby
class Profiles::PersonalAccessTokensController < Profiles::ApplicationController
|
|
def index
|
|
set_index_vars
|
|
end
|
|
|
|
def create
|
|
@personal_access_token = finder.build(personal_access_token_params)
|
|
|
|
if @personal_access_token.save
|
|
flash[:personal_access_token] = @personal_access_token.token
|
|
redirect_to profile_personal_access_tokens_path, notice: "Your new personal access token has been created."
|
|
else
|
|
set_index_vars
|
|
render :index
|
|
end
|
|
end
|
|
|
|
def revoke
|
|
@personal_access_token = finder.find(params[:id])
|
|
|
|
if @personal_access_token.revoke!
|
|
flash[:notice] = "Revoked personal access token #{@personal_access_token.name}!"
|
|
else
|
|
flash[:alert] = "Could not revoke personal access token #{@personal_access_token.name}."
|
|
end
|
|
|
|
redirect_to profile_personal_access_tokens_path
|
|
end
|
|
|
|
private
|
|
|
|
def finder(options = {})
|
|
PersonalAccessTokensFinder.new({ user: current_user, impersonation: false }.merge(options))
|
|
end
|
|
|
|
def personal_access_token_params
|
|
params.require(:personal_access_token).permit(:name, :expires_at, scopes: [])
|
|
end
|
|
|
|
def set_index_vars
|
|
@scopes = Gitlab::Auth::AVAILABLE_SCOPES
|
|
|
|
@personal_access_token = finder.build
|
|
@inactive_personal_access_tokens = finder(state: 'inactive').execute
|
|
@active_personal_access_tokens = finder(state: 'active').execute.order(:expires_at)
|
|
end
|
|
end
|