Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2015-06-19 12:46:49 +0300
committerDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2015-06-19 16:29:53 +0300
commit270b7ce810775d69887e76162a00e8dc97e5d959 (patch)
tree33855438dcd29daf1a3ee74735f1dbb411a999c6
parent228da2dd28a91b3ab2729787e93e72940975a2bd (diff)
Add ability for admin to edit user identity
Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
-rw-r--r--CHANGELOG2
-rw-r--r--app/controllers/admin/identities_controller.rb26
-rw-r--r--app/views/admin/identities/_form.html.haml19
-rw-r--r--app/views/admin/identities/_identity.html.haml3
-rw-r--r--app/views/admin/identities/edit.html.haml6
-rw-r--r--config/routes.rb2
6 files changed, 52 insertions, 6 deletions
diff --git a/CHANGELOG b/CHANGELOG
index a6c2f9ac0cb..a0fb7ead800 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -7,7 +7,7 @@ v 7.13.0 (unreleased)
- Rename "Design" profile settings page to "Preferences".
- Allow users to customize their default Dashboard page.
- Update ssl_ciphers in Nginx example to remove DHE settings. This will deny forward secrecy for Android 2.3.7, Java 6 and OpenSSL 0.9.8
- - Admin can remove user identities
+ - Admin can edit and remove user identities
v 7.12.0 (unreleased)
- Fix post-receive errors on a push when an external issue tracker is configured (Stan Hu)
diff --git a/app/controllers/admin/identities_controller.rb b/app/controllers/admin/identities_controller.rb
index 6107b1bcb40..795fecd78d6 100644
--- a/app/controllers/admin/identities_controller.rb
+++ b/app/controllers/admin/identities_controller.rb
@@ -1,11 +1,21 @@
class Admin::IdentitiesController < Admin::ApplicationController
- before_action :user, only: [:destroy]
+ before_action :user
+ before_action :identity
- def destroy
- identity = user.identities.find(params[:id])
+ def edit
+ end
+
+ def update
+ if @identity.update_attributes(identity_params)
+ redirect_to admin_user_path(@user), notice: 'User identity was successfully updated.'
+ else
+ render :edit
+ end
+ end
+ def destroy
respond_to do |format|
- if identity.destroy
+ if @identity.destroy
format.html { redirect_to [:admin, user], notice: 'User identity was successfully removed.' }
else
format.html { redirect_to [:admin, user], alert: 'Failed to remove user identity.' }
@@ -18,4 +28,12 @@ class Admin::IdentitiesController < Admin::ApplicationController
def user
@user ||= User.find_by!(username: params[:user_id])
end
+
+ def identity
+ @identity ||= user.identities.find(params[:id])
+ end
+
+ def identity_params
+ params[:identity].permit(:provider, :extern_uid)
+ end
end
diff --git a/app/views/admin/identities/_form.html.haml b/app/views/admin/identities/_form.html.haml
new file mode 100644
index 00000000000..1c34706a124
--- /dev/null
+++ b/app/views/admin/identities/_form.html.haml
@@ -0,0 +1,19 @@
+= form_for [:admin, @user, @identity], html: { class: 'form-horizontal fieldset-form' } do |f|
+ -if @identity.errors.any?
+ #error_explanation
+ .alert.alert-danger
+ - @identity.errors.full_messages.each do |msg|
+ %p= msg
+
+ .form-group
+ = f.label :provider, class: 'control-label'
+ .col-sm-10
+ = f.text_field :provider, required: true, autocomplete: "off", class: 'form-control', required: true
+ .form-group
+ = f.label :extern_uid, class: 'control-label'
+ .col-sm-10
+ = f.text_field :extern_uid, required: true, autocomplete: "off", class: 'form-control', required: true
+
+ .form-actions
+ = f.submit 'Save changes', class: "btn btn-save"
+
diff --git a/app/views/admin/identities/_identity.html.haml b/app/views/admin/identities/_identity.html.haml
index b94edefaa41..0b7020b887d 100644
--- a/app/views/admin/identities/_identity.html.haml
+++ b/app/views/admin/identities/_identity.html.haml
@@ -4,6 +4,9 @@
%td
= identity.extern_uid
%td
+ = link_to edit_admin_user_identity_path(@user, identity), class: 'btn btn-xs btn-grouped' do
+ %i.fa.fa-edit
+ Edit
= link_to [:admin, @user, identity], method: :delete,
class: 'btn btn-xs btn-danger',
data: { confirm: "Are you sure you want to remove this identity" } do
diff --git a/app/views/admin/identities/edit.html.haml b/app/views/admin/identities/edit.html.haml
new file mode 100644
index 00000000000..d49d79ce5c9
--- /dev/null
+++ b/app/views/admin/identities/edit.html.haml
@@ -0,0 +1,6 @@
+- page_title @user.name, "Users"
+%h3.page-title
+ Edit identity for #{@user.name}
+%hr
+
+= render 'form'
diff --git a/config/routes.rb b/config/routes.rb
index e9ff607aafe..8428eff1ef5 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -149,7 +149,7 @@ Gitlab::Application.routes.draw do
namespace :admin do
resources :users, constraints: { id: /[a-zA-Z.\/0-9_\-]+/ } do
resources :keys, only: [:show, :destroy]
- resources :identities, only: [:destroy]
+ resources :identities, only: [:edit, :update, :destroy]
member do
put :team_update