]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-3258 Add feedback from Freddy
authorFabrice Bellingard <bellingard@gmail.com>
Tue, 14 Feb 2012 10:01:58 +0000 (11:01 +0100)
committerFabrice Bellingard <bellingard@gmail.com>
Tue, 14 Feb 2012 10:46:58 +0000 (11:46 +0100)
sonar-server/src/main/webapp/WEB-INF/app/controllers/users_controller.rb
sonar-server/src/main/webapp/WEB-INF/app/helpers/roles_helper.rb
sonar-server/src/main/webapp/WEB-INF/app/models/group.rb
sonar-server/src/main/webapp/WEB-INF/app/models/user.rb
sonar-server/src/main/webapp/WEB-INF/app/views/users/index.html.erb

index 850a3308e90f3956475b2801dd7a29d469b42749..30b06744cf32deb76b3e5ff457dd650f3a1da7a5 100644 (file)
@@ -30,12 +30,16 @@ class UsersController < ApplicationController
 
     user = User.find_by_login(params[:user][:login])
     if user && !user.active
-      # users was deleted, a message must be displayed to ask wether to override it or not
-      @user = user
-      @user.name = params[:user][:name]
-      @user.email = params[:user][:email]
-      @users = User.find(:all, :conditions => ["active=?", true], :include => 'groups')
-      render :index
+      # users is deativated, this is a special case:
+      # 1- first, we save the given information, in case the user is reactivated (to not ask for it twice)
+       if user.update_attributes(params[:user])
+        # 2- if info correctly saved, then we display a message to ask wether the user should be reactivated or not
+        @user = user
+        @users = User.find(:all, :conditions => ["active=?", true], :include => 'groups')
+        render :index
+      else
+        to_index(user.errors, nil)
+      end
     else
       user=prepare_user
       if user.save
@@ -110,12 +114,8 @@ class UsersController < ApplicationController
   
   def reactivate
     user = User.find_by_login(params[:user][:login])
-    if user 
-      user.name = params[:user][:name]
-      user.email = params[:user][:email]
-      user.password = params[:user][:password]
-      user.password_confirmation = params[:user][:password_confirmation]
-      user.active = true
+    if user
+      user.reactivate(java_facade.getSettings().getString('sonar.defaultGroup'))
       user.save!
       flash[:notice] = 'User was successfully reactivated.'
     else
@@ -169,7 +169,7 @@ class UsersController < ApplicationController
   end
 
   def autocomplete
-    @users = User.find(:all, :conditions => ["UPPER(name) like ?", params[:user_name_start].clone.upcase+"%"])
+    @users = User.find(:all, :conditions => ["UPPER(name) like ? AND active=?", params[:user_name_start].clone.upcase+"%", true])
     @char_count = params[:user_name_start].size
     render :partial => 'autocomplete'
   end
index 8ad5e3e757c400fb862fdf781f475fa38b50fcac..55936a07bfe5ecb045ebb5a810ac84cf413903b4 100644 (file)
@@ -26,7 +26,7 @@ module RolesHelper
   end
 
   def all_users
-    User.find(:all, :order => 'name')
+    User.find(:all, :conditions => ["active=?", true], :order => 'name')
   end
 
   def groups(role, resource_id=nil)
index 48f2653136077f4afa4ef87745ef21c5953650d9..8537c5d4224271ceac699a710cde50ffe4e31e90 100644 (file)
@@ -29,7 +29,7 @@ class Group < ActiveRecord::Base
 
   # all the users that are NOT members of this group
   def available_users
-    User.find(:all, :order => 'name') - users
+    User.find(:all, :conditions => ["active=?", true], :order => 'name') - users
   end
 
   def set_users(new_users=[])
index e04db76b0a33025f718c34e1b395fea8382986dc..019809fa77b80b1de4432f37d7fdc968d7e6ee8b 100644 (file)
@@ -89,12 +89,22 @@ class User < ActiveRecord::Base
   # However, all related data is removed from the DB.
   def deactivate
     self.active = false
+    self.groups.clear
     self.save!
     self.user_roles.each {|role| role.delete}
     self.properties.each {|prop| prop.delete}
     self.filters.each {|f| f.destroy}
     self.dashboards.each {|d| d.destroy}
-    self.active_dashboards.each {|ad| ad.destroy}    
+    self.active_dashboards.each {|ad| ad.destroy}
+  end
+  
+  # SONAR-3258
+  def reactivate(default_group_name)
+    if default_group_name
+      default_group=Group.find_by_name(default_group_name)
+      self.groups<<default_group if default_group
+    end
+    self.active = true
   end
   
   def self.find_active_by_login(login)
index eed786fafadac34e193b874d2b825d21e391e893..ef8536511884a4a5d38d43fd5ada12d1c05797b6 100644 (file)
       <% if @user && !@user.active %>
       <%= @user.name -%>
         <%= f.hidden_field :login %>
-        <%= f.hidden_field :name %>
-        <%= f.hidden_field :email %>
         <tr>
           <td>
             <p class="error">
-              A user with login "<%= @user.login -%>" already exists in the database but had been deleted.<br/>
+              A user with login "<%= @user.login -%>" already exists in the database but is deactivated.<br/>
               <br/>
-              Do you want to reactivate this user? (if yes, please provide a new password)
+              Do you really want to reactivate this user ?
             </p>
           </td>
-          <tr>
-            <td class="left" valign="top">New password:<br/><%= f.password_field :password, :size => 30, :maxLength => 50 %></td>
-          </tr>
-          <tr>
-            <td class="left" valign="top">Confirm new password:<br/><%= f.password_field :password_confirmation, :size => 30, :maxLength => 50 %></td>
-          </tr>
         <tr>
       <% else %>
         <tr>