summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarin Jankovski <maxlazio@gmail.com>2014-12-29 17:07:23 +0100
committerMarin Jankovski <maxlazio@gmail.com>2014-12-29 17:07:23 +0100
commit492f3a477940daf425aabc9dd4a33e7a1e9092c1 (patch)
tree5f81c89c5212c1ac01f2ec4f2e86fc8a7043e71d
parent75043a9eba557d1fe31d81dc30bd979af321e907 (diff)
downloadgitlab-ce-492f3a477940daf425aabc9dd4a33e7a1e9092c1.tar.gz
Add user key actions to admins.
-rw-r--r--app/controllers/admin/users_controller.rb24
-rw-r--r--app/views/admin/users/show.html.haml27
-rw-r--r--config/routes.rb2
3 files changed, 52 insertions, 1 deletions
diff --git a/app/controllers/admin/users_controller.rb b/app/controllers/admin/users_controller.rb
index baad9095b70..b11a0b04687 100644
--- a/app/controllers/admin/users_controller.rb
+++ b/app/controllers/admin/users_controller.rb
@@ -11,6 +11,7 @@ class Admin::UsersController < Admin::ApplicationController
def show
@personal_projects = user.personal_projects
@joined_projects = user.projects.joined(@user)
+ @ssh_keys = user.keys.order('id DESC')
end
def new
@@ -107,6 +108,27 @@ class Admin::UsersController < Admin::ApplicationController
end
end
+ def show_key
+ @key = user.keys.find(params[:key_id])
+
+ respond_to do |format|
+ format.html { render 'key' }
+ format.js { render nothing: true }
+ end
+ end
+
+ def remove_key
+ key = user.keys.find(params[:key_id])
+
+ respond_to do |format|
+ if key.destroy
+ format.html { redirect_to [:admin, user], notice: 'User key was successfully removed.' }
+ else
+ format.html { redirect_to [:admin, user], alert: 'Failed to remove user key.' }
+ end
+ end
+ end
+
protected
def user
@@ -118,7 +140,7 @@ class Admin::UsersController < Admin::ApplicationController
:email, :remember_me, :bio, :name, :username,
:skype, :linkedin, :twitter, :website_url, :color_scheme_id, :theme_id, :force_random_password,
:extern_uid, :provider, :password_expires_at, :avatar, :hide_no_ssh_key,
- :projects_limit, :can_create_group, :admin
+ :projects_limit, :can_create_group, :admin, :key_id
)
end
end
diff --git a/app/views/admin/users/show.html.haml b/app/views/admin/users/show.html.haml
index 29717aedd80..ef873fb2298 100644
--- a/app/views/admin/users/show.html.haml
+++ b/app/views/admin/users/show.html.haml
@@ -20,6 +20,8 @@
%a{"data-toggle" => "tab", href: "#groups"} Groups
%li
%a{"data-toggle" => "tab", href: "#projects"} Projects
+ %li
+ %a{"data-toggle" => "tab", href: "#ssh-keys"} SSH keys
.tab-content
#account.tab-pane.active
@@ -217,3 +219,28 @@
- if tm.respond_to? :project
= link_to project_team_member_path(project, @user), data: { confirm: remove_from_project_team_message(project, @user) }, remote: true, method: :delete, class: "btn-tiny btn btn-remove", title: 'Remove user from project' do
%i.fa.fa-times
+ #ssh-keys.tab-pane
+ - if @ssh_keys.any?
+ .panel.panel-default
+ %table.table
+ %thead.panel-heading
+ %tr
+ %th Title
+ %th Fingerprint
+ %th
+ %tbody
+ - @ssh_keys.each do |key|
+ %tr
+ %td
+ = link_to user_key_admin_user_path(@user, key) do
+ %strong= key.title
+ %td
+ %span
+ (#{key.fingerprint})
+ %span.cgray
+ added #{time_ago_with_tooltip(key.created_at)}
+ %td
+ = link_to 'Remove', remove_user_key_admin_user_path(@user, key), data: { confirm: 'Are you sure?'}, method: :delete, class: "btn btn-small btn-remove delete-key pull-right"
+
+ - else
+ .nothing-here-block User has no ssh keys
diff --git a/config/routes.rb b/config/routes.rb
index 9b99f0643a7..80a509976a1 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -84,6 +84,8 @@ Gitlab::Application.routes.draw do
put :team_update
put :block
put :unblock
+ get 'key/:key_id', action: 'show_key', as: 'user_key'
+ delete 'key/:key_id', action: 'remove_key', as: 'remove_user_key'
delete 'remove/:email_id', action: 'remove_email', as: 'remove_email'
end
end