diff options
author | Jean-Baptiste Vilain <jean-baptiste.vilain@sonarsource.com> | 2013-06-28 17:29:50 +0200 |
---|---|---|
committer | Jean-Baptiste Vilain <jean-baptiste.vilain@sonarsource.com> | 2013-06-28 17:29:50 +0200 |
commit | 3694e5bd318d541215887a94f099ac28d39358f5 (patch) | |
tree | 7eefaf6bc3dff72032d422cefee1dd81d1afe0dd /sonar-server | |
parent | 2c433ff51da6a0ae1dbd286a5ae1d039b2a3b634 (diff) | |
download | sonarqube-3694e5bd318d541215887a94f099ac28d39358f5.tar.gz sonarqube-3694e5bd318d541215887a94f099ac28d39358f5.zip |
SONAR-4412 Added support of group 'Anyone'
Diffstat (limited to 'sonar-server')
-rw-r--r-- | sonar-server/src/main/java/org/sonar/server/permission/InternalPermissionService.java | 16 | ||||
-rw-r--r-- | sonar-server/src/test/java/org/sonar/server/permission/InternalPermissionServiceTest.java | 11 |
2 files changed, 21 insertions, 6 deletions
diff --git a/sonar-server/src/main/java/org/sonar/server/permission/InternalPermissionService.java b/sonar-server/src/main/java/org/sonar/server/permission/InternalPermissionService.java index 5693bdb7d00..78e9a12393c 100644 --- a/sonar-server/src/main/java/org/sonar/server/permission/InternalPermissionService.java +++ b/sonar-server/src/main/java/org/sonar/server/permission/InternalPermissionService.java @@ -23,6 +23,7 @@ package org.sonar.server.permission; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.sonar.api.ServerComponent; +import org.sonar.api.security.DefaultGroups; import org.sonar.core.user.*; import org.sonar.server.exceptions.BadRequestException; import org.sonar.server.user.UserSession; @@ -85,7 +86,7 @@ public class InternalPermissionService implements ServerComponent { LOG.info("Skipping permission change '{} {}' for group {} as it matches the current permission scheme", new String[]{operation, permissionChangeQuery.getRole(), permissionChangeQuery.getGroup()}); } else { - Long targetedGroup = getTargetedGroup(permissionChangeQuery.getGroup()).getId(); + Long targetedGroup = getTargetedGroup(permissionChangeQuery.getGroup()); GroupRoleDto groupRole = new GroupRoleDto().setRole(permissionChangeQuery.getRole()).setGroupId(targetedGroup); if(ADD.equals(operation)) { roleDao.insertGroupRole(groupRole); @@ -101,7 +102,7 @@ public class InternalPermissionService implements ServerComponent { LOG.info("Skipping permission change '{} {}' for user {} as it matches the current permission scheme", new String[]{operation, permissionChangeQuery.getRole(), permissionChangeQuery.getUser()}); } else { - Long targetedUser = getTargetedUser(permissionChangeQuery.getUser()).getId(); + Long targetedUser = getTargetedUser(permissionChangeQuery.getUser()); UserRoleDto userRole = new UserRoleDto().setRole(permissionChangeQuery.getRole()).setUserId(targetedUser); if(ADD.equals(operation)) { roleDao.insertUserRole(userRole); @@ -111,12 +112,15 @@ public class InternalPermissionService implements ServerComponent { } } - private UserDto getTargetedUser(String userLogin) { - return userDao.selectActiveUserByLogin(userLogin); + private Long getTargetedUser(String userLogin) { + return userDao.selectActiveUserByLogin(userLogin).getId(); } - private GroupDto getTargetedGroup(String group) { - return userDao.selectGroupByName(group); + private Long getTargetedGroup(String group) { + if(DefaultGroups.isAnyone(group)) { + return null; + } + return userDao.selectGroupByName(group).getId(); } private boolean shouldSkipPermissionChange(String operation, List<String> existingPermissions, String role) { diff --git a/sonar-server/src/test/java/org/sonar/server/permission/InternalPermissionServiceTest.java b/sonar-server/src/test/java/org/sonar/server/permission/InternalPermissionServiceTest.java index 39603f983e6..540df23025e 100644 --- a/sonar-server/src/test/java/org/sonar/server/permission/InternalPermissionServiceTest.java +++ b/sonar-server/src/test/java/org/sonar/server/permission/InternalPermissionServiceTest.java @@ -29,6 +29,7 @@ import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; +import org.sonar.api.security.DefaultGroups; import org.sonar.core.user.*; import org.sonar.server.exceptions.BadRequestException; import org.sonar.server.exceptions.ForbiddenException; @@ -172,6 +173,16 @@ public class InternalPermissionServiceTest { service.addPermission(params); } + @Test + public void should_support_special_anyone_group() throws Exception { + params = buildParams(null, DefaultGroups.ANYONE, Permissions.QUALITY_PROFILE_ADMIN); + GroupRoleDto roleToInsert = new GroupRoleDto().setRole(Permissions.QUALITY_PROFILE_ADMIN); + + service.addPermission(params); + + verify(roleDao).insertGroupRole(argThat(matchesRole(roleToInsert))); + } + protected static class MatchesUserRole extends BaseMatcher<UserRoleDto> { private final UserRoleDto referenceDto; |