From c14d054ed5b6c22788bfbb0a9ff40c8fd278c162 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Vilain Date: Tue, 6 Aug 2013 17:05:09 +0200 Subject: [PATCH] SONAR-4434 Make the user name field mandatory on user creation both in UI and WS calls --- .../core/persistence/DatabaseVersion.java | 2 +- .../org/sonar/core/persistence/rows-h2.sql | 1 + .../app/controllers/api/users_controller.rb | 7 ++-- .../main/webapp/WEB-INF/app/models/user.rb | 8 ++-- .../app/views/layouts/_menu_user.html.erb | 2 +- .../db/migrate/431_migrate_users_names.rb | 41 +++++++++++++++++++ 6 files changed, 51 insertions(+), 10 deletions(-) create mode 100644 sonar-server/src/main/webapp/WEB-INF/db/migrate/431_migrate_users_names.rb diff --git a/sonar-core/src/main/java/org/sonar/core/persistence/DatabaseVersion.java b/sonar-core/src/main/java/org/sonar/core/persistence/DatabaseVersion.java index dc0382384d3..5d526a5b0cf 100644 --- a/sonar-core/src/main/java/org/sonar/core/persistence/DatabaseVersion.java +++ b/sonar-core/src/main/java/org/sonar/core/persistence/DatabaseVersion.java @@ -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 diff --git a/sonar-core/src/main/resources/org/sonar/core/persistence/rows-h2.sql b/sonar-core/src/main/resources/org/sonar/core/persistence/rows-h2.sql index 29c4e615445..3793aea1b2c 100644 --- a/sonar-core/src/main/resources/org/sonar/core/persistence/rows-h2.sql +++ b/sonar-core/src/main/resources/org/sonar/core/persistence/rows-h2.sql @@ -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; 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 cf255eb9f8f..dd69892f098 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 @@ -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 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 b544c0527d4..e5160f56fa6 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 @@ -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) diff --git a/sonar-server/src/main/webapp/WEB-INF/app/views/layouts/_menu_user.html.erb b/sonar-server/src/main/webapp/WEB-INF/app/views/layouts/_menu_user.html.erb index 5e07958c406..ec6a9bdaff1 100644 --- a/sonar-server/src/main/webapp/WEB-INF/app/views/layouts/_menu_user.html.erb +++ b/sonar-server/src/main/webapp/WEB-INF/app/views/layouts/_menu_user.html.erb @@ -1,5 +1,5 @@
  • - <%= current_user.name(true) -%> + <%= current_user.name -%>