Commit e80d7a80 authored by Stan Hu's avatar Stan Hu

Fix error when deleting a user who has projects

Closes #1856
Closes https://github.com/gitlabhq/gitlabhq/issues/9394
parent 88343897
Please view this file on the master branch, on stable branches it's out of date. Please view this file on the master branch, on stable branches it's out of date.
v 7.13.0 (unreleased) v 7.13.0 (unreleased)
- Fix error when deleting a user who has projects (Stan Hu)
- Update maintenance documentation to explain no need to recompile asssets for omnibus installations (Stan Hu) - Update maintenance documentation to explain no need to recompile asssets for omnibus installations (Stan Hu)
- Support commenting on diffs in side-by-side mode (Stan Hu) - Support commenting on diffs in side-by-side mode (Stan Hu)
- Fix JavaScript error when clicking on the comment button on a diff line that has a comment already (Stan Hu) - Fix JavaScript error when clicking on the comment button on a diff line that has a comment already (Stan Hu)
......
...@@ -86,7 +86,7 @@ class Admin::UsersController < Admin::ApplicationController ...@@ -86,7 +86,7 @@ class Admin::UsersController < Admin::ApplicationController
end end
def destroy def destroy
DeleteUserService.new.execute(user) DeleteUserService.new(current_user).execute(user)
respond_to do |format| respond_to do |format|
format.html { redirect_to admin_users_path } format.html { redirect_to admin_users_path }
......
...@@ -6,7 +6,7 @@ class RegistrationsController < Devise::RegistrationsController ...@@ -6,7 +6,7 @@ class RegistrationsController < Devise::RegistrationsController
end end
def destroy def destroy
DeleteUserService.new.execute(current_user) DeleteUserService.new(current_user).execute(current_user)
respond_to do |format| respond_to do |format|
format.html { redirect_to new_user_session_path, notice: "Account successfully removed." } format.html { redirect_to new_user_session_path, notice: "Account successfully removed." }
......
class DeleteUserService class DeleteUserService
attr_accessor :current_user
def initialize(current_user)
@current_user = current_user
end
def execute(user) def execute(user)
if user.solo_owned_groups.present? if user.solo_owned_groups.present?
user.errors[:base] << 'You must transfer ownership or delete groups before you can remove user' user.errors[:base] << 'You must transfer ownership or delete groups before you can remove user'
......
...@@ -194,7 +194,7 @@ module API ...@@ -194,7 +194,7 @@ module API
user = User.find_by(id: params[:id]) user = User.find_by(id: params[:id])
if user if user
DeleteUserService.new.execute(user) DeleteUserService.new(current_user).execute(user)
else else
not_found!('User') not_found!('User')
end end
......
require 'spec_helper'
describe Admin::UsersController do
let(:admin) { create(:admin) }
before do
sign_in(admin)
end
describe 'DELETE #user with projects' do
let(:user) { create(:user) }
let(:project) { create(:project, namespace: user.namespace) }
before do
project.team << [user, :developer]
end
it 'deletes user' do
delete :destroy, id: user.username, format: :json
expect(response.status).to eq(200)
expect { User.find(user.id) }.to raise_exception(ActiveRecord::RecordNotFound)
end
end
end
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment