aboutsummaryrefslogtreecommitdiffstats
path: root/sonar-db/src/main/java/org
diff options
context:
space:
mode:
authorSimon Brandhof <simon.brandhof@sonarsource.com>2016-10-15 10:24:46 +0200
committerSimon Brandhof <simon.brandhof@sonarsource.com>2016-10-16 19:10:48 +0200
commitcc2e1acfe9ce1e7daae0afd2ad4c1c0782c30dc5 (patch)
treede2244d880d7bc1194cf9c7966768038e29688cf /sonar-db/src/main/java/org
parent63ce1a3671fb71e25f77915c6db201eccd766d5e (diff)
downloadsonarqube-cc2e1acfe9ce1e7daae0afd2ad4c1c0782c30dc5.tar.gz
sonarqube-cc2e1acfe9ce1e7daae0afd2ad4c1c0782c30dc5.zip
SONAR-8134 isolate deletion of permissions
Diffstat (limited to 'sonar-db/src/main/java/org')
-rw-r--r--sonar-db/src/main/java/org/sonar/db/permission/PermissionRepository.java2
-rw-r--r--sonar-db/src/main/java/org/sonar/db/permission/UserPermissionDao.java32
-rw-r--r--sonar-db/src/main/java/org/sonar/db/permission/UserPermissionMapper.java12
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);
+
}