summaryrefslogtreecommitdiff
path: root/app/controllers/admin
diff options
context:
space:
mode:
authorSimon Vocella <voxsim@gmail.com>2017-01-06 17:00:46 +0100
committerTiago Botelho <tiagonbotelho@hotmail.com>2017-02-28 22:15:39 +0000
commitc2b1cdef7e8cdaec35bd0844301ce8f06ed742b7 (patch)
tree072d178375afe0875fe2f4342e4f167848213939 /app/controllers/admin
parent09dd6a7ead97122385f13265ea147ab689994244 (diff)
downloadgitlab-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.rb48
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