diff options
author | Simon Vocella <voxsim@gmail.com> | 2017-01-06 17:00:46 +0100 |
---|---|---|
committer | Tiago Botelho <tiagonbotelho@hotmail.com> | 2017-02-28 22:15:39 +0000 |
commit | c2b1cdef7e8cdaec35bd0844301ce8f06ed742b7 (patch) | |
tree | 072d178375afe0875fe2f4342e4f167848213939 /app/controllers/admin | |
parent | 09dd6a7ead97122385f13265ea147ab689994244 (diff) | |
download | gitlab-ce-c2b1cdef7e8cdaec35bd0844301ce8f06ed742b7.tar.gz |
add admin panel for personal access tokens
Diffstat (limited to 'app/controllers/admin')
-rw-r--r-- | app/controllers/admin/personal_access_tokens_controller.rb | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/app/controllers/admin/personal_access_tokens_controller.rb b/app/controllers/admin/personal_access_tokens_controller.rb new file mode 100644 index 00000000000..7202d80ce1b --- /dev/null +++ b/app/controllers/admin/personal_access_tokens_controller.rb @@ -0,0 +1,48 @@ +class Admin::PersonalAccessTokensController < Admin::ApplicationController + before_action :user + + def index + set_index_vars + end + + def create + @personal_access_token = user.personal_access_tokens.generate(personal_access_token_params) + + if @personal_access_token.save + flash[:personal_access_token] = @personal_access_token.token + redirect_to admin_user_personal_access_tokens_path, notice: "A new personal access token has been created." + else + set_index_vars + render :index + end + end + + def revoke + @personal_access_token = user.personal_access_tokens.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 admin_user_personal_access_tokens_path + end + + private + + def user + @user ||= User.find_by!(username: params[:user_id]) + end + + def personal_access_token_params + params.require(:personal_access_token).permit(:name, :expires_at, :impersonation, scopes: []) + end + + def set_index_vars + @personal_access_token ||= user.personal_access_tokens.build + @scopes = Gitlab::Auth::SCOPES + @active_personal_access_tokens = PersonalAccessToken.and_impersonation_tokens.where(user_id: user.id).active.order(:expires_at) + @inactive_personal_access_tokens = PersonalAccessToken.and_impersonation_tokens.where(user_id: user.id).inactive + end +end |