]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-4950 update the users.updated_at in order to block other sessions
authorJulien Lancelot <julien.lancelot@sonarsource.com>
Tue, 4 Nov 2014 16:30:16 +0000 (17:30 +0100)
committerJulien Lancelot <julien.lancelot@sonarsource.com>
Fri, 7 Nov 2014 09:42:07 +0000 (10:42 +0100)
server/sonar-web/src/main/webapp/WEB-INF/db/migrate/602_remove_duplication_in_group_roles.rb [deleted file]
server/sonar-web/src/main/webapp/WEB-INF/db/migrate/605_remove_duplication_in_group_roles.rb [new file with mode: 0644]
server/sonar-web/src/main/webapp/WEB-INF/lib/need_authentication.rb
sonar-core/src/main/java/org/sonar/core/persistence/DatabaseVersion.java
sonar-core/src/main/resources/org/sonar/core/persistence/rows-h2.sql

diff --git a/server/sonar-web/src/main/webapp/WEB-INF/db/migrate/602_remove_duplication_in_group_roles.rb b/server/sonar-web/src/main/webapp/WEB-INF/db/migrate/602_remove_duplication_in_group_roles.rb
deleted file mode 100644 (file)
index 069b9a3..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-#
-# SonarQube, open source software quality management tool.
-# Copyright (C) 2008-2014 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.
-#
-
-#
-# SonarQube 4.5.1
-# SONAR-4950 Unique constraint cannot be created because it would be on resource_id that is nullable
-#
-class RemoveDuplicationInGroupRoles < ActiveRecord::Migration
-
-  class GroupRole < ActiveRecord::Base
-  end
-
-  def self.up
-    GroupRole.reset_column_information
-
-    duplicated_ids = ActiveRecord::Base.connection.select_rows('select group_id,resource_id,role from group_roles group by group_id,resource_id,role having count(*) > 1')
-    say_with_time "Remove #{duplicated_ids.size} duplicated group roles" do
-      duplicated_ids.each do |fields|
-        rows = GroupRole.find(:all, :conditions => {:group_id => fields[0], :resource_id => fields[1], :role => fields[2]})
-        # delete all rows except the last one
-        rows[0...-1].each do |row|
-          GroupRole.delete(row.id)
-        end
-      end
-    end
-  end
-end
diff --git a/server/sonar-web/src/main/webapp/WEB-INF/db/migrate/605_remove_duplication_in_group_roles.rb b/server/sonar-web/src/main/webapp/WEB-INF/db/migrate/605_remove_duplication_in_group_roles.rb
new file mode 100644 (file)
index 0000000..d39e52b
--- /dev/null
@@ -0,0 +1,46 @@
+#
+# SonarQube, open source software quality management tool.
+# Copyright (C) 2008-2014 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.
+#
+
+#
+# SonarQube 4.5.2
+# SONAR-4950
+#
+class RemoveDuplicationInGroupRoles < ActiveRecord::Migration
+
+  class GroupRole < ActiveRecord::Base
+  end
+
+  def self.up
+    GroupRole.reset_column_information
+
+    duplicated_ids = ActiveRecord::Base.connection.select_rows('select group_id,resource_id,role from group_roles group by group_id,resource_id,role having count(*) > 1')
+    say_with_time "Remove #{duplicated_ids.size} duplicated group roles" do
+      duplicated_ids.each do |fields|
+        rows = GroupRole.find(:all, :conditions => {:group_id => fields[0], :resource_id => fields[1], :role => fields[2]})
+        # delete all rows except the last one
+        rows[0...-1].each do |row|
+          GroupRole.delete(row.id)
+        end
+      end
+    end
+
+    add_index 'group_roles', ['group_id', 'resource_id', 'role'], :unique => true, :name => 'uniq_group_roles'
+  end
+end
index 61b266fc66df4e7435bfeac0b764af8527f3faec..3e49975583adf7bfb802b9e28139c4b5a7d15c6e 100644 (file)
@@ -146,6 +146,9 @@ class PluginRealm
           user.name = details.getName()
           user.email = details.getEmail()
         end
+
+        # Force the update of updated_ad in order to execute an SQL update to block other session
+        user.updated_at = Time.now
       end
       if @save_password
         user.password = password
index 6fdca61abb5c148078b5c262754df80affdaa08c..2b7f67bf0408d39e326ebd907da4806c0e3c7831 100644 (file)
@@ -33,7 +33,7 @@ import java.util.List;
  */
 public class DatabaseVersion implements BatchComponent, ServerComponent {
 
-  public static final int LAST_VERSION = 604;
+  public static final int LAST_VERSION = 605;
 
   public static enum Status {
     UP_TO_DATE, REQUIRES_UPGRADE, REQUIRES_DOWNGRADE, FRESH_INSTALL
index 7cad5b16ff43a4e1869c3ad7891a729c203d6bb4..57093c0eb7016f8b8b06c56ad22f6b97daaa7834 100644 (file)
@@ -256,9 +256,9 @@ INSERT INTO SCHEMA_MIGRATIONS(VERSION) VALUES ('583');
 INSERT INTO SCHEMA_MIGRATIONS(VERSION) VALUES ('584');
 INSERT INTO SCHEMA_MIGRATIONS(VERSION) VALUES ('600');
 INSERT INTO SCHEMA_MIGRATIONS(VERSION) VALUES ('601');
-INSERT INTO SCHEMA_MIGRATIONS(VERSION) VALUES ('602');
 INSERT INTO SCHEMA_MIGRATIONS(VERSION) VALUES ('603');
 INSERT INTO SCHEMA_MIGRATIONS(VERSION) VALUES ('604');
+INSERT INTO SCHEMA_MIGRATIONS(VERSION) VALUES ('605');
 
 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;