aboutsummaryrefslogtreecommitdiffstats
path: root/sonar-db
diff options
context:
space:
mode:
authorTeryk Bellahsene <teryk.bellahsene@sonarsource.com>2015-10-06 10:11:05 +0200
committerTeryk Bellahsene <teryk.bellahsene@sonarsource.com>2015-10-06 10:18:38 +0200
commit790ce0a67f245c3c8d6f95f6f2323846aa069914 (patch)
treef092fea5a0d7b78437e9963b44fb37df8175069b /sonar-db
parente57493d42d4f9885329eb8be1e8aa66d57fc1e74 (diff)
downloadsonarqube-790ce0a67f245c3c8d6f95f6f2323846aa069914.tar.gz
sonarqube-790ce0a67f245c3c8d6f95f6f2323846aa069914.zip
SONAR-6854 WS permissions/template_group do not return anyone if admin permission
Diffstat (limited to 'sonar-db')
-rw-r--r--sonar-db/src/main/java/org/sonar/db/permission/PermissionTemplateDao.java2
-rw-r--r--sonar-db/src/main/resources/org/sonar/db/permission/PermissionTemplateMapper.xml4
-rw-r--r--sonar-db/src/test/java/org/sonar/db/permission/GroupWithPermissionTemplateDaoTest.java5
3 files changed, 9 insertions, 2 deletions
diff --git a/sonar-db/src/main/java/org/sonar/db/permission/PermissionTemplateDao.java b/sonar-db/src/main/java/org/sonar/db/permission/PermissionTemplateDao.java
index fdeda6b1861..8733b7d20da 100644
--- a/sonar-db/src/main/java/org/sonar/db/permission/PermissionTemplateDao.java
+++ b/sonar-db/src/main/java/org/sonar/db/permission/PermissionTemplateDao.java
@@ -34,6 +34,7 @@ import org.apache.ibatis.session.RowBounds;
import org.apache.ibatis.session.SqlSession;
import org.sonar.api.security.DefaultGroups;
import org.sonar.api.utils.System2;
+import org.sonar.api.web.UserRole;
import org.sonar.db.Dao;
import org.sonar.db.DbSession;
import org.sonar.db.MyBatis;
@@ -134,6 +135,7 @@ public class PermissionTemplateDao implements Dao {
params.put(QUERY_PARAMETER, query);
params.put(TEMPLATE_ID_PARAMETER, templateId);
params.put("anyoneGroup", DefaultGroups.ANYONE);
+ params.put("projectAdminPermission", UserRole.ADMIN);
return params;
}
diff --git a/sonar-db/src/main/resources/org/sonar/db/permission/PermissionTemplateMapper.xml b/sonar-db/src/main/resources/org/sonar/db/permission/PermissionTemplateMapper.xml
index f173f86eb24..d0c515fc6c9 100644
--- a/sonar-db/src/main/resources/org/sonar/db/permission/PermissionTemplateMapper.xml
+++ b/sonar-db/src/main/resources/org/sonar/db/permission/PermissionTemplateMapper.xml
@@ -105,6 +105,8 @@
LEFT JOIN perm_templates_groups ptg ON ptg.group_id=g.id
AND ptg.permission_reference=#{query.permission}
AND ptg.template_id=#{templateId}
+
+ <if test="!query.permission().equals(projectAdminPermission)">
UNION
-- Add Anyone group permission
SELECT
@@ -118,6 +120,8 @@
AND ptg.group_id IS NULL
</where>) as permission
FROM groups g
+ </if>
+
) groups
<where>
<if test="query.search() != null">
diff --git a/sonar-db/src/test/java/org/sonar/db/permission/GroupWithPermissionTemplateDaoTest.java b/sonar-db/src/test/java/org/sonar/db/permission/GroupWithPermissionTemplateDaoTest.java
index 0370a002ced..cd1c4463f02 100644
--- a/sonar-db/src/test/java/org/sonar/db/permission/GroupWithPermissionTemplateDaoTest.java
+++ b/sonar-db/src/test/java/org/sonar/db/permission/GroupWithPermissionTemplateDaoTest.java
@@ -25,6 +25,7 @@ import org.junit.Rule;
import org.junit.Test;
import org.junit.experimental.categories.Category;
import org.sonar.api.utils.System2;
+import org.sonar.api.web.UserRole;
import org.sonar.db.DbSession;
import org.sonar.db.DbTester;
import org.sonar.test.DbTests;
@@ -79,7 +80,7 @@ public class GroupWithPermissionTemplateDaoTest {
dbTester.prepareDbUnit(getClass(), "groups_with_permissions.xml");
// Anyone group is returned even if it doesn't have the permission
- PermissionQuery query = PermissionQuery.builder().permission("admin").build();
+ PermissionQuery query = PermissionQuery.builder().permission(UserRole.USER).build();
List<GroupWithPermissionDto> result = underTest.selectGroups(session, query, TEMPLATE_ID);
assertThat(result).hasSize(4);
@@ -93,7 +94,7 @@ public class GroupWithPermissionTemplateDaoTest {
GroupWithPermissionDto group3 = result.get(3);
assertThat(group3.getName()).isEqualTo("sonar-users");
- assertThat(group3.getPermission()).isNull();
+ assertThat(group3.getPermission()).isNotNull();
}
@Test