]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-4434 Make the user name field mandatory on user creation both in UI and WS...
authorJean-Baptiste Vilain <jean-baptiste.vilain@sonarsource.com>
Tue, 6 Aug 2013 15:05:09 +0000 (17:05 +0200)
committerJean-Baptiste Vilain <jean-baptiste.vilain@sonarsource.com>
Tue, 6 Aug 2013 15:05:09 +0000 (17:05 +0200)
sonar-core/src/main/java/org/sonar/core/persistence/DatabaseVersion.java
sonar-core/src/main/resources/org/sonar/core/persistence/rows-h2.sql
sonar-server/src/main/webapp/WEB-INF/app/controllers/api/users_controller.rb
sonar-server/src/main/webapp/WEB-INF/app/models/user.rb
sonar-server/src/main/webapp/WEB-INF/app/views/layouts/_menu_user.html.erb
sonar-server/src/main/webapp/WEB-INF/db/migrate/431_migrate_users_names.rb [new file with mode: 0644]

index dc0382384d3f49c77b5cb07176492bd148aceaac..5d526a5b0cf3eb0b4a09feb828f823ed59b4cc70 100644 (file)
@@ -33,7 +33,7 @@ import java.util.List;
  */
 public class DatabaseVersion implements BatchComponent, ServerComponent {
 
-  public static final int LAST_VERSION = 430;
+  public static final int LAST_VERSION = 431;
 
   public static enum Status {
     UP_TO_DATE, REQUIRES_UPGRADE, REQUIRES_DOWNGRADE, FRESH_INSTALL
index 29c4e6154452355aee49397c0864d44d3474500b..3793aea1b2cb0fec6ca2cb352f56243915d64533 100644 (file)
@@ -173,6 +173,7 @@ INSERT INTO SCHEMA_MIGRATIONS(VERSION) VALUES ('417');
 INSERT INTO SCHEMA_MIGRATIONS(VERSION) VALUES ('418');
 INSERT INTO SCHEMA_MIGRATIONS(VERSION) VALUES ('419');
 INSERT INTO SCHEMA_MIGRATIONS(VERSION) VALUES ('430');
+INSERT INTO SCHEMA_MIGRATIONS(VERSION) VALUES ('431');
 
 INSERT INTO USERS(ID, LOGIN, NAME, EMAIL, CRYPTED_PASSWORD, SALT, CREATED_AT, UPDATED_AT, REMEMBER_TOKEN, REMEMBER_TOKEN_EXPIRES_AT) VALUES (1, 'admin', 'Administrator', '', 'a373a0e667abb2604c1fd571eb4ad47fe8cc0878', '48bc4b0d93179b5103fd3885ea9119498e9d161b', '2011-09-26 22:27:48.0', '2011-09-26 22:27:48.0', null, null);
 ALTER TABLE USERS ALTER COLUMN ID RESTART WITH 2;
index cf255eb9f8f62739988c627c29a428b59256fca9..dd69892f098974204b2719ad8b3bd9d1fda6f597 100644 (file)
@@ -51,17 +51,18 @@ class Api::UsersController < Api::ApiController
   #
   # -- Mandatory parameters
   # 'login' is the user identifier
+  # 'name' is the user display name
   # 'password' is the user password
   # 'password_confirmation' is the confirmed user password
   #
   # -- Optional parameters
-  # 'name' is the user display name
   # 'email' is the user email
   #
   # -- Example
-  # curl -X POST -v -u admin:admin 'http://localhost:9000/api/users/create?login=user&password=user_pw&password_confirmation=user_pw'
+  # curl -X POST -v -u admin:admin 'http://localhost:9000/api/users/create?login=user&name=user_name&password=user_pw&password_confirmation=user_pw'
   #
-  # since 3.7
+  # since SonarQube 3.7
+  # SonarQube 4.0 update : name is now mandatory
   #
   def create
     verify_post_request
index b544c0527d457686b4e59acdc8c505856c1e466e..e5160f56fa6c9f24d4aedf3f986651693dc88484 100644 (file)
@@ -43,7 +43,9 @@ class User < ActiveRecord::Base
   include NeedAuthorization::ForUser
   include NeedAuthentication::ForUser
 
-  validates_length_of :name, :maximum => 200, :allow_blank => true, :allow_nil => true
+  validates_presence_of :name
+  validates_length_of :name, :maximum => 200, :unless => 'name.blank?'
+
   validates_length_of :email, :maximum => 100, :allow_blank => true, :allow_nil => true
 
   # The following two validations not needed, because they come with Authentication::ByPassword - see SONAR-2656
@@ -61,10 +63,6 @@ class User < ActiveRecord::Base
   # anything else you want your user to change should be added here.
   attr_accessible :login, :email, :name, :password, :password_confirmation
 
-  def name(login_if_nil=false)
-    result=read_attribute :name
-    result.blank? ? login : result
-  end
 
   def email=(value)
     write_attribute :email, (value ? value.downcase : nil)
index 5e07958c406062a45330a3fda4703a9aa7474e3c..ec6a9bdaff1db39dbd8ca1253ec9b983c3040ac2 100644 (file)
@@ -1,5 +1,5 @@
 <li>
-  <a href="#" onclick="showDropdownMenu('user-panel'); return false;" class="link-more"><%= current_user.name(true) -%></a>
+  <a href="#" onclick="showDropdownMenu('user-panel'); return false;" class="link-more"><%= current_user.name -%></a>
   
   <div id="user-panel" class="dropdown-menu" style="display: none">
     <ul>
diff --git a/sonar-server/src/main/webapp/WEB-INF/db/migrate/431_migrate_users_names.rb b/sonar-server/src/main/webapp/WEB-INF/db/migrate/431_migrate_users_names.rb
new file mode 100644 (file)
index 0000000..4280d6c
--- /dev/null
@@ -0,0 +1,41 @@
+#
+# SonarQube, open source software quality management tool.
+# Copyright (C) 2008-2013 SonarSource
+# mailto:contact AT sonarsource DOT com
+#
+# SonarQube is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 3 of the License, or (at your option) any later version.
+#
+# SonarQube is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with this program; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+#
+
+#
+# @since SonarQube 4.0
+#
+class MigrateUsersNames < ActiveRecord::Migration
+
+  class User < ActiveRecord::Base
+  end
+
+  def self.up
+    User.reset_column_information
+
+    User.find(:all).each do |user|
+      if user.name.blank?
+        user.name = user.login
+        user.save!
+      end
+    end
+
+  end
+
+end