summaryrefslogtreecommitdiff
path: root/app/views/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/views/admin
parent09dd6a7ead97122385f13265ea147ab689994244 (diff)
downloadgitlab-ce-c2b1cdef7e8cdaec35bd0844301ce8f06ed742b7.tar.gz
add admin panel for personal access tokens
Diffstat (limited to 'app/views/admin')
-rw-r--r--app/views/admin/personal_access_tokens/_form.html.haml28
-rw-r--r--app/views/admin/personal_access_tokens/index.html.haml80
-rw-r--r--app/views/admin/users/_head.html.haml2
3 files changed, 110 insertions, 0 deletions
diff --git a/app/views/admin/personal_access_tokens/_form.html.haml b/app/views/admin/personal_access_tokens/_form.html.haml
new file mode 100644
index 00000000000..d194a0fd511
--- /dev/null
+++ b/app/views/admin/personal_access_tokens/_form.html.haml
@@ -0,0 +1,28 @@
+- personal_access_token = local_assigns.fetch(:personal_access_token)
+- scopes = local_assigns.fetch(:scopes)
+
+= form_for [:admin_user, personal_access_token], method: :post, html: { class: 'js-requires-input' } do |f|
+
+ = form_errors(personal_access_token)
+
+ .form-group
+ = f.label :name, class: 'label-light'
+ = f.text_field :name, class: "form-control", required: true
+
+ .form-group
+ = f.label :expires_at, class: 'label-light'
+ = f.text_field :expires_at, class: "datepicker form-control"
+
+ .form-group
+ = f.label :scopes, class: 'label-light'
+ = render 'shared/tokens/scopes_form', prefix: 'personal_access_token', token: personal_access_token, scopes: scopes
+
+ .form-group
+ = f.label :impersonation, class: 'label-light'
+ %fieldset
+ = f.check_box :impersonation
+ = f.label 'impersonation', 'You can impersonate the user'
+ %span= "(Normal users will not see this type of token)"
+
+ .prepend-top-default
+ = f.submit 'Create Personal Access Token', class: "btn btn-create"
diff --git a/app/views/admin/personal_access_tokens/index.html.haml b/app/views/admin/personal_access_tokens/index.html.haml
new file mode 100644
index 00000000000..90aade17e1b
--- /dev/null
+++ b/app/views/admin/personal_access_tokens/index.html.haml
@@ -0,0 +1,80 @@
+- page_title "Personal Access Tokens"
+= render 'admin/users/head'
+
+.row.prepend-top-default
+ .col-lg-12
+
+ %h5.prepend-top-0
+ Add a Personal Access Token
+ %p.profile-settings-content
+ Pick a name for the application, and we'll give you a unique token.
+
+ = render "form", personal_access_token: @personal_access_token, scopes: @scopes
+
+ %hr
+
+ %h5 Active Personal Access Tokens (#{@active_personal_access_tokens.length})
+
+ - if @active_personal_access_tokens.present?
+ .table-responsive
+ %table.table.active-personal-access-tokens
+ %thead
+ %tr
+ %th Name
+ %th Created
+ %th Expires
+ %th Scopes
+ %th Token
+ %th Impersonation
+ %th
+ %tbody
+ - @active_personal_access_tokens.each do |personal_access_token|
+ %tr
+ %td= personal_access_token.name
+ %td= personal_access_token.created_at.to_date.to_s(:medium)
+ %td
+ - if personal_access_token.expires?
+ %span{ class: ('text-warning' if personal_access_token.expires_soon?) }
+ In #{distance_of_time_in_words_to_now(personal_access_token.expires_at)}
+ - else
+ %span.personal-access-personal_access_tokens-never-expires-label Never
+ %td= personal_access_token.scopes.present? ? personal_access_token.scopes.join(", ") : "<no scopes selected>"
+ %td.personal-access-token-token-container
+ = text_field_tag 'personal-access-token-token', personal_access_token.token, readonly: true, class: "form-control"
+ = clipboard_button(clipboard_text: personal_access_token.token)
+ %td= personal_access_token.impersonation
+ %td= link_to "Revoke", revoke_admin_user_personal_access_token_path(id: personal_access_token.id, user_id: personal_access_token.user.username), method: :put, class: "btn btn-danger pull-right", data: { confirm: "Are you sure you want to revoke this token? This action cannot be undone." }
+
+ - else
+ .settings-message.text-center
+ This user has no active tokens.
+
+ %hr
+
+ %h5 Inactive Personal Access Tokens (#{@inactive_personal_access_tokens.length})
+
+ - if @inactive_personal_access_tokens.present?
+ .table-responsive
+ %table.table.inactive-personal-access-tokens
+ %thead
+ %tr
+ %th Name
+ %th Created
+ %tbody
+ - @inactive_personal_access_tokens.each do |token|
+ %tr
+ %td= token.name
+ %td= token.created_at.to_date.to_s(:medium)
+
+ - else
+ .settings-message.text-center
+ This user has no inactive tokens.
+
+
+:javascript
+ var date = $('#personal_access_token_expires_at').val();
+
+ var datepicker = $(".datepicker").datepicker({
+ dateFormat: "yy-mm-dd",
+ minDate: 0
+ });
diff --git a/app/views/admin/users/_head.html.haml b/app/views/admin/users/_head.html.haml
index 9984e733956..c95ae93b710 100644
--- a/app/views/admin/users/_head.html.haml
+++ b/app/views/admin/users/_head.html.haml
@@ -21,4 +21,6 @@
= link_to "SSH keys", keys_admin_user_path(@user)
= nav_link(controller: :identities) do
= link_to "Identities", admin_user_identities_path(@user)
+ = nav_link(controller: :personal_access_tokens) do
+ = link_to "Access Tokens", admin_user_personal_access_tokens_path(@user)
.append-bottom-default