diff options
author | Teryk Bellahsene <teryk.bellahsene@sonarsource.com> | 2015-10-06 10:11:05 +0200 |
---|---|---|
committer | Teryk Bellahsene <teryk.bellahsene@sonarsource.com> | 2015-10-06 10:18:38 +0200 |
commit | 790ce0a67f245c3c8d6f95f6f2323846aa069914 (patch) | |
tree | f092fea5a0d7b78437e9963b44fb37df8175069b /sonar-db | |
parent | e57493d42d4f9885329eb8be1e8aa66d57fc1e74 (diff) | |
download | sonarqube-790ce0a67f245c3c8d6f95f6f2323846aa069914.tar.gz sonarqube-790ce0a67f245c3c8d6f95f6f2323846aa069914.zip |
SONAR-6854 WS permissions/template_group do not return anyone if admin permission
Diffstat (limited to 'sonar-db')
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 |