From 6821732d7e83b0bcd4d886441d689707cad05e5c Mon Sep 17 00:00:00 2001 From: Simon Brandhof Date: Thu, 27 Jun 2013 16:38:51 +0200 Subject: [PATCH] SONAR-4411 user deactivation is fully implemented in Java --- .../app/controllers/api/users_controller.rb | 26 +++++++++---------- .../app/controllers/users_controller.rb | 2 +- .../main/webapp/WEB-INF/app/models/user.rb | 16 ------------ 3 files changed, 13 insertions(+), 31 deletions(-) diff --git a/sonar-server/src/main/webapp/WEB-INF/app/controllers/api/users_controller.rb b/sonar-server/src/main/webapp/WEB-INF/app/controllers/api/users_controller.rb index 16d19f4d1ad..9ced56dd192 100644 --- a/sonar-server/src/main/webapp/WEB-INF/app/controllers/api/users_controller.rb +++ b/sonar-server/src/main/webapp/WEB-INF/app/controllers/api/users_controller.rb @@ -123,6 +123,11 @@ class Api::UsersController < Api::ApiController end + def delete + # TODO : DROP + deactivate + end + # # POST /api/users/delete # @@ -130,27 +135,20 @@ class Api::UsersController < Api::ApiController # 'login' is the user identifier # # -- Example - # curl -X POST -v -u admin:admin 'http://localhost:9000/api/users/delete?login=user' + # curl -X POST -v -u admin:admin 'http://localhost:9000/api/users/deactivate?login=' # # since 3.7 # - def delete + def deactivate verify_post_request - access_denied unless has_role?(:admin) require_parameters :login - @user = User.find_active_by_login(params[:login]) + Api.users.deactivate(params[:login]) - if @user.nil? - render_bad_request "Could not find user with login #{params[:login]}" - elsif @user == current_user || @user.login == 'admin' - render_bad_request "Cannot delete user #{params[:login]}" - else - if @user.deactivate - render_success "Successfully deleted user #{params[:login]}" - else - render_error("Could not delete user #{params[:login]}") - end + hash={} + respond_to do |format| + format.json { render :json => jsonp(hash) } + format.xml { render :xml => hash.to_xml(:skip_types => true, :root => 'users') } end end diff --git a/sonar-server/src/main/webapp/WEB-INF/app/controllers/users_controller.rb b/sonar-server/src/main/webapp/WEB-INF/app/controllers/users_controller.rb index a4c50d857b5..97807f9a749 100644 --- a/sonar-server/src/main/webapp/WEB-INF/app/controllers/users_controller.rb +++ b/sonar-server/src/main/webapp/WEB-INF/app/controllers/users_controller.rb @@ -136,7 +136,7 @@ class UsersController < ApplicationController flash[:error] = 'Please log in with another user in order to delete yourself.' else - @user.deactivate + Api.users.deactivate(@user.login) flash[:notice] = 'User is deleted.' end diff --git a/sonar-server/src/main/webapp/WEB-INF/app/models/user.rb b/sonar-server/src/main/webapp/WEB-INF/app/models/user.rb index 0fe2c3bd403..b544c0527d4 100644 --- a/sonar-server/src/main/webapp/WEB-INF/app/models/user.rb +++ b/sonar-server/src/main/webapp/WEB-INF/app/models/user.rb @@ -88,22 +88,6 @@ class User < ActiveRecord::Base name.downcase<=>other.name.downcase end - # SONAR-3258 : we do not delete users anymore. Users are just deactivated. - # However, all related data is removed from the DB. - def deactivate - self.active = false - self.groups.clear - - # do not validate user, for example when user created via SSO has no password - self.save(false) - self.user_roles.clear - self.properties.clear - self.dashboards.clear - self.active_dashboards.clear - self.measure_filter_favourites.clear - self.measure_filters.clear - end - # SONAR-3258 def reactivate!(default_group_name) if default_group_name -- 2.39.5