private void removeGroupPermissions(DbSession dbSession, GroupDto groupId) { dbClient.roleDao().deleteGroupRolesByGroupId(dbSession, groupId.getId()); }
@Test public void selectComponentIdsByPermissionAndUserId_throws_IAR_if_permission_USER_is_specified() { expectUnsupportedUserAndCodeViewerPermission(); underTest.selectComponentIdsByPermissionAndUserId(dbSession, UserRole.USER, new Random().nextInt(55)); }
/** * All the projects on which the user has {@code permission}, directly or through * groups. * * @throws IllegalArgumentException this method does not support permissions {@link UserRole#USER user} nor * {@link UserRole#CODEVIEWER codeviewer} because it does not support public root components. */ public List<Long> selectComponentIdsByPermissionAndUserId(DbSession dbSession, String permission, int userId) { checkArgument( !UNSUPPORTED_PROJECT_PERMISSIONS.contains(permission), "Permissions %s are not supported by selectComponentIdsByPermissionAndUserId", UNSUPPORTED_PROJECT_PERMISSIONS); return mapper(dbSession).selectComponentIdsByPermissionAndUserId(permission, userId); }
@Test public void selectComponentIdsByPermissionAndUserId_throws_IAR_if_permission_CODEVIEWER_is_specified() { expectUnsupportedUserAndCodeViewerPermission(); underTest.selectComponentIdsByPermissionAndUserId(dbSession, UserRole.CODEVIEWER, new Random().nextInt(55)); }
@Test public void delete_all_group_permissions_by_group_id() { GroupDto group1 = db.users().insertGroup(); GroupDto group2 = db.users().insertGroup(); ComponentDto project = db.components().insertPrivateProject(); db.users().insertPermissionOnGroup(group1, "admin"); db.users().insertProjectPermissionOnGroup(group1, "profileadmin", project); db.users().insertPermissionOnGroup(group1, "gateadmin"); db.users().insertPermissionOnGroup(group2, "gateadmin"); db.users().insertProjectPermissionOnGroup(group2, "admin", project); db.users().insertPermissionOnAnyone(db.getDefaultOrganization(), "scan"); db.users().insertPermissionOnAnyone(db.getDefaultOrganization(), "provisioning"); underTest.deleteGroupRolesByGroupId(db.getSession(), group1.getId()); db.getSession().commit(); assertThat(db.getDbClient().groupPermissionDao().selectGlobalPermissionsOfGroup(db.getSession(), db.getDefaultOrganization().getUuid(), group1.getId())).isEmpty(); assertThat(db.getDbClient().groupPermissionDao().selectProjectPermissionsOfGroup(db.getSession(), db.getDefaultOrganization().getUuid(), group1.getId(), project.getId())).isEmpty(); assertThat(db.getDbClient().groupPermissionDao().selectGlobalPermissionsOfGroup(db.getSession(), db.getDefaultOrganization().getUuid(), group2.getId())).containsOnly("gateadmin"); assertThat(db.getDbClient().groupPermissionDao().selectProjectPermissionsOfGroup(db.getSession(), db.getDefaultOrganization().getUuid(), group2.getId(), project.getId())).containsOnly("admin"); assertThat(db.getDbClient().groupPermissionDao().selectGlobalPermissionsOfGroup(db.getSession(), db.getDefaultOrganization().getUuid(), null)).containsOnly("scan", "provisioning"); } }
public void deleteGroupRolesByGroupId(DbSession session, int groupId) { mapper(session).deleteGroupRolesByGroupId(groupId); }
@VisibleForTesting ProjectsResult searchProjects(DbSession dbSession, SearchMyProjectsRequest request) { int userId = requireNonNull(userSession.getUserId(), "Current user must be authenticated"); List<Long> componentIds = dbClient.roleDao().selectComponentIdsByPermissionAndUserId(dbSession, UserRole.ADMIN, userId); ComponentQuery dbQuery = ComponentQuery.builder() .setQualifiers(Qualifiers.PROJECT) .setComponentIds(ImmutableSet.copyOf(componentIds.subList(0, Math.min(componentIds.size(), DatabaseUtils.PARTITION_SIZE_FOR_ORACLE)))) .build(); return new ProjectsResult( dbClient.componentDao().selectByQuery(dbSession, dbQuery, offset(request.getPage(), request.getPageSize()), request.getPageSize()), dbClient.componentDao().countByQuery(dbSession, dbQuery)); }
private void removeGroupPermissions(DbSession dbSession, GroupDto groupId) { dbClient.roleDao().deleteGroupRolesByGroupId(dbSession, groupId.getId()); }
/** * All the projects on which the user has {@code permission}, directly or through * groups. */ public List<Long> selectComponentIdsByPermissionAndUserId(DbSession dbSession, String permission, long userId) { return mapper(dbSession).selectComponentIdsByPermissionAndUserId(permission, userId); }
@Test public void selectComponentIdsByPermissionAndUserId() { db.users().insertProjectPermissionOnUser(user1, UserRole.ADMIN, project1); db.users().insertProjectPermissionOnUser(user1, UserRole.ADMIN, project2); // global permission - not returned db.users().insertPermissionOnUser(user1, ADMINISTER); // project permission on another user id - not returned db.users().insertProjectPermissionOnUser(user2, UserRole.ADMIN, project1); // project permission on another permission - not returned db.users().insertProjectPermissionOnUser(user1, UserRole.ISSUE_ADMIN, project1); List<Long> projectIds = underTest.selectComponentIdsByPermissionAndUserId(dbSession, UserRole.ADMIN, user1.getId()); assertThat(projectIds).containsExactly(project1.getId(), project2.getId()); }
public void deleteGroupRolesByGroupId(DbSession session, long groupId) { mapper(session).deleteGroupRolesByGroupId(groupId); }
@Test public void selectComponentIdsByPermissionAndUserId_group_permissions() { GroupDto group1 = db.users().insertGroup(); GroupDto group2 = db.users().insertGroup(); db.users().insertProjectPermissionOnGroup(group1, UserRole.ADMIN, project1); db.users().insertMember(group1, user1); db.users().insertProjectPermissionOnUser(user1, UserRole.ADMIN, project2); // global permission - not returned db.users().insertPermissionOnUser(user1, ADMINISTER); db.users().insertPermissionOnGroup(group1, ADMINISTER); // project permission on another user id - not returned db.users().insertPermissionOnGroup(group2, ADMINISTER); db.users().insertMember(group2, user2); // project permission on another permission - not returned db.users().insertProjectPermissionOnGroup(group1, UserRole.ISSUE_ADMIN, project1); List<Long> result = underTest.selectComponentIdsByPermissionAndUserId(dbSession, UserRole.ADMIN, user1.getId()); assertThat(result).containsExactly(project1.getId(), project2.getId()); }
@VisibleForTesting ProjectsResult searchProjects(DbSession dbSession, SearchMyProjectsRequest request) { int userId = requireNonNull(userSession.getUserId(), "Current user must be authenticated"); List<Long> componentIds = dbClient.roleDao().selectComponentIdsByPermissionAndUserId(dbSession, UserRole.ADMIN, userId); ComponentQuery dbQuery = ComponentQuery.builder() .setQualifiers(Qualifiers.PROJECT) .setComponentIds(ImmutableSet.copyOf(componentIds.subList(0, Math.min(componentIds.size(), DatabaseUtils.PARTITION_SIZE_FOR_ORACLE)))) .build(); return new ProjectsResult( dbClient.componentDao().selectByQuery(dbSession, dbQuery, offset(request.getPage(), request.getPageSize()), request.getPageSize()), dbClient.componentDao().countByQuery(dbSession, dbQuery)); }