diff --git a/CHANGELOG b/CHANGELOG index a6c2f9ac0cb7badad226be8a51c4daa2565fba2c..a0fb7ead8006a1dd31e8cec939471b27e13e11c9 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 6107b1bcb40400877caea0d19cbd2c387e36de07..795fecd78d6da2f41b8cae6b182403690972dfac 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 0000000000000000000000000000000000000000..1c34706a1245de0a664a579e69f851c9be9f7670 --- /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 b94edefaa410d6900ce87a4d789e64b551f05a09..0b7020b887d1f9ea3f652add6eeafd479870058f 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 0000000000000000000000000000000000000000..d49d79ce5c9bf91f9a0465341f9df72f5886488f --- /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 e9ff607aafec9e2973d87d1f686a4797cbe63184..8428eff1ef5ecca418ad70fef4e9db460d6e3170 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