diff options
author | Julien HENRY <julien.henry@sonarsource.com> | 2017-09-28 14:54:02 +0200 |
---|---|---|
committer | Julien HENRY <julien.henry@sonarsource.com> | 2017-09-29 10:13:30 +0200 |
commit | 451c00462f77778d5ca3972da4ca86d3ceee086f (patch) | |
tree | fa839e8bf5cfaa36357b298ba21f1951f4d927b5 /server | |
parent | 0546704b7a152de911c3f0000418c14013392d6e (diff) | |
download | sonarqube-451c00462f77778d5ca3972da4ca86d3ceee086f.tar.gz sonarqube-451c00462f77778d5ca3972da4ca86d3ceee086f.zip |
Add method to select all administrators (for license notifications)
Diffstat (limited to 'server')
4 files changed, 37 insertions, 6 deletions
diff --git a/server/sonar-db-dao/src/main/java/org/sonar/db/permission/AuthorizationDao.java b/server/sonar-db-dao/src/main/java/org/sonar/db/permission/AuthorizationDao.java index 44afc088c09..d92a139a1b5 100644 --- a/server/sonar-db-dao/src/main/java/org/sonar/db/permission/AuthorizationDao.java +++ b/server/sonar-db-dao/src/main/java/org/sonar/db/permission/AuthorizationDao.java @@ -28,6 +28,7 @@ import org.sonar.db.DbSession; import static org.sonar.db.DatabaseUtils.executeLargeInputs; import static org.sonar.db.DatabaseUtils.executeLargeInputsIntoSet; +import static org.sonar.db.permission.OrganizationPermission.ADMINISTER; import static org.sonar.db.permission.OrganizationPermission.ADMINISTER_QUALITY_PROFILES; /** @@ -166,7 +167,14 @@ public class AuthorizationDao implements Dao { } public List<String> selectQualityProfileAdministratorLogins(DbSession dbSession) { - return mapper(dbSession).selectQualityProfileAdministratorLogins(ADMINISTER_QUALITY_PROFILES.getKey()); + return mapper(dbSession).selectLoginsWithGlobalPermission(ADMINISTER_QUALITY_PROFILES.getKey()); + } + + /** + * Used by license notifications + */ + public List<String> selectGlobalAdministratorLogins(DbSession dbSession) { + return mapper(dbSession).selectLoginsWithGlobalPermission(ADMINISTER.getKey()); } private static AuthorizationMapper mapper(DbSession dbSession) { diff --git a/server/sonar-db-dao/src/main/java/org/sonar/db/permission/AuthorizationMapper.java b/server/sonar-db-dao/src/main/java/org/sonar/db/permission/AuthorizationMapper.java index 5c76c4ea5d4..da8ecbb5356 100644 --- a/server/sonar-db-dao/src/main/java/org/sonar/db/permission/AuthorizationMapper.java +++ b/server/sonar-db-dao/src/main/java/org/sonar/db/permission/AuthorizationMapper.java @@ -40,15 +40,15 @@ public interface AuthorizationMapper { @Param("excludedUserId") int excludedUserId); int countUsersWithGlobalPermissionExcludingGroupMember(@Param("organizationUuid") String organizationUuid, - @Param("permission") String permission, @Param("groupId") int groupId, @Param("userId") int userId); + @Param("permission") String permission, @Param("groupId") int groupId, @Param("userId") int userId); int countUsersWithGlobalPermissionExcludingUserPermission(@Param("organizationUuid") String organizationUuid, - @Param("permission") String permission, @Param("userId") int userId); + @Param("permission") String permission, @Param("userId") int userId); Set<String> selectOrganizationUuidsOfUserWithGlobalPermission(@Param("userId") int userId, @Param("permission") String permission); Set<Long> keepAuthorizedProjectIdsForAnonymous(@Param("role") String role, @Param("componentIds") Collection<Long> componentIds); - + Set<Long> keepAuthorizedProjectIdsForUser(@Param("userId") int userId, @Param("role") String role, @Param("componentIds") Collection<Long> componentIds); List<Integer> keepAuthorizedUsersForRoleAndProject(@Param("role") String role, @Param("componentId") long componentId, @Param("userIds") List<Integer> userIds); @@ -61,5 +61,5 @@ public interface AuthorizationMapper { Set<String> selectProjectPermissionsOfAnonymous(@Param("projectUuid") String projectUuid); - List<String> selectQualityProfileAdministratorLogins(@Param("permission") String permission); + List<String> selectLoginsWithGlobalPermission(@Param("permission") String permission); } diff --git a/server/sonar-db-dao/src/main/resources/org/sonar/db/permission/AuthorizationMapper.xml b/server/sonar-db-dao/src/main/resources/org/sonar/db/permission/AuthorizationMapper.xml index 52248d4b65f..072fefe4e3d 100644 --- a/server/sonar-db-dao/src/main/resources/org/sonar/db/permission/AuthorizationMapper.xml +++ b/server/sonar-db-dao/src/main/resources/org/sonar/db/permission/AuthorizationMapper.xml @@ -379,7 +379,7 @@ and gr.group_id is null </sql> - <select id="selectQualityProfileAdministratorLogins" parameterType="map" resultType="String"> + <select id="selectLoginsWithGlobalPermission" parameterType="map" resultType="String"> select u.login from user_roles ur inner join users u on u.id=ur.user_id diff --git a/server/sonar-db-dao/src/test/java/org/sonar/db/permission/AuthorizationDaoTest.java b/server/sonar-db-dao/src/test/java/org/sonar/db/permission/AuthorizationDaoTest.java index c3a099c4f8a..36595bc5d72 100644 --- a/server/sonar-db-dao/src/test/java/org/sonar/db/permission/AuthorizationDaoTest.java +++ b/server/sonar-db-dao/src/test/java/org/sonar/db/permission/AuthorizationDaoTest.java @@ -1005,4 +1005,27 @@ public class AuthorizationDaoTest { assertThat(logins).isEmpty(); } + @Test + public void selectGlobalAdministratorLogins() { + OrganizationDto organization1 = db.organizations().insert(); + UserDto user1 = db.users().insertUser(); + db.users().insertPermissionOnUser(organization1, user1, ADMINISTER); + OrganizationDto organization2 = db.organizations().insert(); + UserDto user2 = db.users().insertUser(); + db.users().insertPermissionOnUser(organization2, user2, ADMINISTER); + + GroupDto administratorGroup2 = db.users().insertGroup(organization2); + db.users().insertPermissionOnGroup(administratorGroup2, ADMINISTER); + UserDto user3 = db.users().insertUser(); + db.users().insertMember(administratorGroup2, user3); + + UserDto user4 = db.users().insertUser(); + db.users().insertPermissionOnUser(organization1, user4, ADMINISTER_QUALITY_PROFILES); + db.users().insertUser(); + + List<String> logins = underTest.selectGlobalAdministratorLogins(dbSession); + + assertThat(logins).containsExactlyInAnyOrder(user1.getLogin(), user2.getLogin(), user3.getLogin()); + } + } |