]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-6851 Analysis of new projects requires the "Provision Project" permission
authorSimon Brandhof <simon.brandhof@sonarsource.com>
Thu, 17 Sep 2015 22:02:02 +0000 (00:02 +0200)
committerSimon Brandhof <simon.brandhof@sonarsource.com>
Fri, 18 Sep 2015 21:48:48 +0000 (23:48 +0200)
server/sonar-web/src/main/webapp/WEB-INF/db/migrate/935_add_provisioning_permission_to_scan.rb [new file with mode: 0644]
sonar-db/src/main/java/org/sonar/db/version/DatabaseVersion.java
sonar-db/src/main/resources/org/sonar/db/version/rows-h2.sql

diff --git a/server/sonar-web/src/main/webapp/WEB-INF/db/migrate/935_add_provisioning_permission_to_scan.rb b/server/sonar-web/src/main/webapp/WEB-INF/db/migrate/935_add_provisioning_permission_to_scan.rb
new file mode 100644 (file)
index 0000000..9d67ea6
--- /dev/null
@@ -0,0 +1,60 @@
+#
+# 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 5.2
+# SONAR-6861
+#
+# Add the permission "provisionning" to the users and groups that have already
+# the permission "scan" and if, and only if, the property sonar.preventAutoProjectCreation is false
+# (default value)
+class AddProvisioningPermissionToScan < ActiveRecord::Migration
+
+  class Property < ActiveRecord::Base
+  end
+
+  class GroupRole < ActiveRecord::Base
+  end
+
+  class UserRole < ActiveRecord::Base
+  end
+
+  def self.up
+    papc = Property.find(:first, :conditions => ['prop_key=?', 'sonar.preventAutoProjectCreation'])
+    unless papc && papc.text_value=='true'
+      group_roles=GroupRole.find(:all, :conditions => {:role => 'scan', :resource_id => nil})
+      groups = group_roles.map { |ur| ur.group_id }
+      groups.each do |group_id|
+        unless GroupRole.exists?(['group_id=? and role=? and resource_id is null', group_id, 'provisioning'])
+          GroupRole.create(:group_id => group_id, :role => 'provisioning', :resource_id => nil)
+        end
+      end
+
+      user_roles=UserRole.find(:all, :conditions => {:role => 'scan', :resource_id => nil})
+      users = user_roles.map { |ur| ur.user_id }
+      users.each do |user_id|
+        unless UserRole.exists?(['user_id=? and role=? and resource_id is null', user_id, 'provisioning'])
+          UserRole.create(:user_id => user_id, :role=> 'provisioning', :resource_id => nil)
+        end
+      end
+     end
+  end
+
+end
index 3e00526a1f0a70c6c244f36ac73006ec539ea413..f6ab58c5a8be4ffb22f6d563e95220f9ea1ced31 100644 (file)
@@ -29,7 +29,7 @@ import org.sonar.db.MyBatis;
 
 public class DatabaseVersion {
 
-  public static final int LAST_VERSION = 934;
+  public static final int LAST_VERSION = 935;
 
   /**
    * The minimum supported version which can be upgraded. Lower
index a2d75b28898d89057d7f852a1120c7117185e89d..f985a934d646fb4e101a114852834a4128b0e08a 100644 (file)
@@ -353,6 +353,7 @@ INSERT INTO SCHEMA_MIGRATIONS(VERSION) VALUES ('931');
 INSERT INTO SCHEMA_MIGRATIONS(VERSION) VALUES ('932');
 INSERT INTO SCHEMA_MIGRATIONS(VERSION) VALUES ('933');
 INSERT INTO SCHEMA_MIGRATIONS(VERSION) VALUES ('934');
+INSERT INTO SCHEMA_MIGRATIONS(VERSION) VALUES ('935');
 
 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', '1418215735482', '1418215735482', null, null);
 ALTER TABLE USERS ALTER COLUMN ID RESTART WITH 2;