diff options
author | Simon Brandhof <simon.brandhof@sonarsource.com> | 2016-10-15 10:24:46 +0200 |
---|---|---|
committer | Simon Brandhof <simon.brandhof@sonarsource.com> | 2016-10-16 19:10:48 +0200 |
commit | cc2e1acfe9ce1e7daae0afd2ad4c1c0782c30dc5 (patch) | |
tree | de2244d880d7bc1194cf9c7966768038e29688cf /sonar-db/src/main/java/org | |
parent | 63ce1a3671fb71e25f77915c6db201eccd766d5e (diff) | |
download | sonarqube-cc2e1acfe9ce1e7daae0afd2ad4c1c0782c30dc5.tar.gz sonarqube-cc2e1acfe9ce1e7daae0afd2ad4c1c0782c30dc5.zip |
SONAR-8134 isolate deletion of permissions
Diffstat (limited to 'sonar-db/src/main/java/org')
3 files changed, 25 insertions, 21 deletions
diff --git a/sonar-db/src/main/java/org/sonar/db/permission/PermissionRepository.java b/sonar-db/src/main/java/org/sonar/db/permission/PermissionRepository.java index f9f00b66b07..05e2a39f85c 100644 --- a/sonar-db/src/main/java/org/sonar/db/permission/PermissionRepository.java +++ b/sonar-db/src/main/java/org/sonar/db/permission/PermissionRepository.java @@ -64,7 +64,7 @@ public class PermissionRepository { PermissionTemplate template = dbClient.permissionTemplateDao().selectPermissionTemplateWithPermissions(session, templateUuid); updateProjectAuthorizationDate(session, project.getId()); dbClient.groupPermissionDao().deleteByRootComponentId(session, project.getId()); - dbClient.userPermissionDao().delete(session, null, project.uuid(), null); + dbClient.userPermissionDao().deleteProjectPermissions(session, project.getId()); List<PermissionTemplateUserDto> usersPermissions = template.getUserPermissions(); String organizationUuid = template.getTemplate().getOrganizationUuid(); diff --git a/sonar-db/src/main/java/org/sonar/db/permission/UserPermissionDao.java b/sonar-db/src/main/java/org/sonar/db/permission/UserPermissionDao.java index 648ea0afd32..6772ff8f3ea 100644 --- a/sonar-db/src/main/java/org/sonar/db/permission/UserPermissionDao.java +++ b/sonar-db/src/main/java/org/sonar/db/permission/UserPermissionDao.java @@ -32,7 +32,6 @@ import org.sonar.db.DbSession; import static com.google.common.base.Preconditions.checkArgument; import static java.util.Arrays.asList; import static java.util.Collections.emptyList; -import static org.apache.commons.lang.StringUtils.isNotEmpty; import static org.sonar.db.DatabaseUtils.executeLargeInputs; public class UserPermissionDao implements Dao { @@ -106,21 +105,24 @@ public class UserPermissionDao implements Dao { } /** - * Delete permissions for a user, permissions for a project, or a mix of them. In all cases - * scope can be restricted to a specified permission. - * - * Examples: - * <ul> - * <li>{@code delete(dbSession, "marius", null, null)} deletes all permissions of Marius, including global and project permissions</li> - * <li>{@code delete(dbSession, null, "ABC", null)} deletes all permissions of project ABC</li> - * <li>{@code delete(dbSession, "marius", "ABC", null)} deletes the permissions of Marius on project "ABC"</li> - * </ul> - * - * @see UserPermissionMapper#delete(String, String, String) + * Removes a single global permission from user + */ + public void deleteGlobalPermission(DbSession dbSession, long userId, String permission, String organizationUuid) { + mapper(dbSession).deleteGlobalPermission(userId, permission, organizationUuid); + } + + /** + * Removes a single project permission from user + */ + public void deleteProjectPermission(DbSession dbSession, long userId, String permission, long projectId) { + mapper(dbSession).deleteProjectPermission(userId, permission, projectId); + } + + /** + * Deletes all the permissions defined on a project */ - public void delete(DbSession dbSession, @Nullable String login, @Nullable String projectUuid, @Nullable String permission) { - checkArgument(isNotEmpty(login) || isNotEmpty(projectUuid), "At least one of login or project must be set"); - mapper(dbSession).delete(login, projectUuid, permission); + public void deleteProjectPermissions(DbSession dbSession, long projectId) { + mapper(dbSession).deleteProjectPermissions(projectId); } private static UserPermissionMapper mapper(DbSession dbSession) { diff --git a/sonar-db/src/main/java/org/sonar/db/permission/UserPermissionMapper.java b/sonar-db/src/main/java/org/sonar/db/permission/UserPermissionMapper.java index 5da6ff35ff4..fffc729fac1 100644 --- a/sonar-db/src/main/java/org/sonar/db/permission/UserPermissionMapper.java +++ b/sonar-db/src/main/java/org/sonar/db/permission/UserPermissionMapper.java @@ -52,10 +52,12 @@ public interface UserPermissionMapper { void insert(UserPermissionDto dto); - /** - * Delete permissions by user and/or by project. In both cases scope can be restricted to a specified permission - */ - void delete(@Nullable @Param("login") String login, @Nullable @Param("projectUuid") String projectUuid, @Nullable @Param("permission") String permission); - int countRowsByRootComponentId(@Param("rootComponentId") long projectId); + + void deleteGlobalPermission(@Param("userId") long userId, @Param("permission") String permission, @Param("organizationUuid") String organizationUuid); + + void deleteProjectPermission(@Param("userId") long userId, @Param("permission") String permission, @Param("projectId") long projectId); + + void deleteProjectPermissions(@Param("projectId") long projectId); + } |