Search in sources :

Example 1 with PermissionQuery

use of org.sonar.db.permission.PermissionQuery in project sonarqube by SonarSource.

the class TemplateUsersAction method handle.

@Override
public void handle(Request wsRequest, Response wsResponse) throws Exception {
    try (DbSession dbSession = dbClient.openSession(false)) {
        WsTemplateRef templateRef = WsTemplateRef.fromRequest(wsRequest);
        PermissionTemplateDto template = support.findTemplate(dbSession, templateRef);
        checkGlobalAdmin(userSession, template.getOrganizationUuid());
        PermissionQuery query = buildQuery(wsRequest, template);
        int total = dbClient.permissionTemplateDao().countUserLoginsByQueryAndTemplate(dbSession, query, template.getId());
        Paging paging = Paging.forPageIndex(wsRequest.mandatoryParamAsInt(PAGE)).withPageSize(wsRequest.mandatoryParamAsInt(PAGE_SIZE)).andTotal(total);
        List<UserDto> users = findUsers(dbSession, query, template);
        List<PermissionTemplateUserDto> permissionTemplateUsers = dbClient.permissionTemplateDao().selectUserPermissionsByTemplateIdAndUserLogins(dbSession, template.getId(), users.stream().map(UserDto::getLogin).collect(Collectors.toList()));
        WsPermissions.UsersWsResponse templateUsersResponse = buildResponse(users, permissionTemplateUsers, paging);
        writeProtobuf(templateUsersResponse, wsRequest, wsResponse);
    }
}
Also used : DbSession(org.sonar.db.DbSession) PermissionTemplateDto(org.sonar.db.permission.template.PermissionTemplateDto) UsersWsResponse(org.sonarqube.ws.WsPermissions.UsersWsResponse) PermissionTemplateUserDto(org.sonar.db.permission.template.PermissionTemplateUserDto) Paging(org.sonar.api.utils.Paging) UserDto(org.sonar.db.user.UserDto) PermissionTemplateUserDto(org.sonar.db.permission.template.PermissionTemplateUserDto) WsPermissions(org.sonarqube.ws.WsPermissions) PermissionQuery(org.sonar.db.permission.PermissionQuery)

Example 2 with PermissionQuery

use of org.sonar.db.permission.PermissionQuery in project sonarqube by SonarSource.

the class SearchGlobalPermissionsAction method buildResponse.

private WsSearchGlobalPermissionsResponse buildResponse(DbSession dbSession, OrganizationDto org) {
    WsSearchGlobalPermissionsResponse.Builder response = WsSearchGlobalPermissionsResponse.newBuilder();
    Permission.Builder permission = newBuilder();
    OrganizationPermission.all().map(OrganizationPermission::getKey).forEach(permissionKey -> {
        PermissionQuery query = permissionQuery(permissionKey);
        response.addPermissions(permission.clear().setKey(permissionKey).setName(i18nName(permissionKey)).setDescription(i18nDescriptionMessage(permissionKey)).setUsersCount(countUsers(dbSession, org, query)).setGroupsCount(countGroups(dbSession, org, permissionKey)));
    });
    return response.build();
}
Also used : WsSearchGlobalPermissionsResponse(org.sonarqube.ws.WsPermissions.WsSearchGlobalPermissionsResponse) OrganizationPermission(org.sonar.db.permission.OrganizationPermission) Permission(org.sonarqube.ws.WsPermissions.Permission) PermissionQuery(org.sonar.db.permission.PermissionQuery)

Example 3 with PermissionQuery

use of org.sonar.db.permission.PermissionQuery in project sonarqube by SonarSource.

the class UsersAction method findUserPermissions.

private List<UserPermissionDto> findUserPermissions(DbSession dbSession, OrganizationDto org, List<UserDto> users, Optional<ProjectId> project) {
    if (users.isEmpty()) {
        return emptyList();
    }
    List<String> logins = users.stream().map(UserDto::getLogin).collect(Collectors.toList());
    PermissionQuery query = PermissionQuery.builder().setComponentUuid(project.isPresent() ? project.get().getUuid() : null).withAtLeastOnePermission().build();
    return dbClient.userPermissionDao().select(dbSession, org.getUuid(), query, logins);
}
Also used : PermissionQuery(org.sonar.db.permission.PermissionQuery)

Example 4 with PermissionQuery

use of org.sonar.db.permission.PermissionQuery in project sonarqube by SonarSource.

the class UsersAction method handle.

@Override
public void handle(Request request, Response response) throws Exception {
    try (DbSession dbSession = dbClient.openSession(false)) {
        OrganizationDto org = support.findOrganization(dbSession, request.param(PARAM_ORGANIZATION));
        Optional<ProjectId> projectId = support.findProjectId(dbSession, request);
        checkProjectAdmin(userSession, org.getUuid(), projectId);
        PermissionQuery query = buildPermissionQuery(request, projectId);
        List<UserDto> users = findUsers(dbSession, org, query);
        int total = dbClient.userPermissionDao().countUsers(dbSession, org.getUuid(), query);
        List<UserPermissionDto> userPermissions = findUserPermissions(dbSession, org, users, projectId);
        Paging paging = Paging.forPageIndex(request.mandatoryParamAsInt(Param.PAGE)).withPageSize(query.getPageSize()).andTotal(total);
        UsersWsResponse usersWsResponse = buildResponse(users, userPermissions, paging);
        writeProtobuf(usersWsResponse, request, response);
    }
}
Also used : DbSession(org.sonar.db.DbSession) UserDto(org.sonar.db.user.UserDto) Paging(org.sonar.api.utils.Paging) ProjectId(org.sonar.server.permission.ProjectId) UserPermissionDto(org.sonar.db.permission.UserPermissionDto) OrganizationDto(org.sonar.db.organization.OrganizationDto) PermissionQuery(org.sonar.db.permission.PermissionQuery) UsersWsResponse(org.sonarqube.ws.WsPermissions.UsersWsResponse)

Example 5 with PermissionQuery

use of org.sonar.db.permission.PermissionQuery in project sonarqube by SonarSource.

the class GroupsAction method handle.

@Override
public void handle(Request request, Response response) throws Exception {
    try (DbSession dbSession = dbClient.openSession(false)) {
        OrganizationDto org = support.findOrganization(dbSession, request.param(PARAM_ORGANIZATION));
        Optional<ProjectId> projectId = support.findProjectId(dbSession, request);
        checkProjectAdmin(userSession, org.getUuid(), projectId);
        PermissionQuery query = buildPermissionQuery(request, projectId);
        // TODO validatePermission(groupsRequest.getPermission(), wsProjectRef);
        List<GroupDto> groups = findGroups(dbSession, org, query);
        int total = dbClient.groupPermissionDao().countGroupsByQuery(dbSession, org.getUuid(), query);
        List<GroupPermissionDto> groupsWithPermission = findGroupPermissions(dbSession, org, groups, projectId);
        Paging paging = Paging.forPageIndex(request.mandatoryParamAsInt(Param.PAGE)).withPageSize(query.getPageSize()).andTotal(total);
        WsGroupsResponse groupsResponse = buildResponse(groups, groupsWithPermission, paging);
        writeProtobuf(groupsResponse, request, response);
    }
}
Also used : DbSession(org.sonar.db.DbSession) Paging(org.sonar.api.utils.Paging) ProjectId(org.sonar.server.permission.ProjectId) GroupDto(org.sonar.db.user.GroupDto) WsGroupsResponse(org.sonarqube.ws.WsPermissions.WsGroupsResponse) OrganizationDto(org.sonar.db.organization.OrganizationDto) PermissionQuery(org.sonar.db.permission.PermissionQuery) GroupPermissionDto(org.sonar.db.permission.GroupPermissionDto)

Aggregations

PermissionQuery (org.sonar.db.permission.PermissionQuery)7 Paging (org.sonar.api.utils.Paging)4 DbSession (org.sonar.db.DbSession)4 OrganizationDto (org.sonar.db.organization.OrganizationDto)2 PermissionTemplateDto (org.sonar.db.permission.template.PermissionTemplateDto)2 GroupDto (org.sonar.db.user.GroupDto)2 UserDto (org.sonar.db.user.UserDto)2 ProjectId (org.sonar.server.permission.ProjectId)2 WsPermissions (org.sonarqube.ws.WsPermissions)2 UsersWsResponse (org.sonarqube.ws.WsPermissions.UsersWsResponse)2 GroupPermissionDto (org.sonar.db.permission.GroupPermissionDto)1 OrganizationPermission (org.sonar.db.permission.OrganizationPermission)1 UserPermissionDto (org.sonar.db.permission.UserPermissionDto)1 PermissionTemplateGroupDto (org.sonar.db.permission.template.PermissionTemplateGroupDto)1 PermissionTemplateUserDto (org.sonar.db.permission.template.PermissionTemplateUserDto)1 Permission (org.sonarqube.ws.WsPermissions.Permission)1 WsGroupsResponse (org.sonarqube.ws.WsPermissions.WsGroupsResponse)1 WsSearchGlobalPermissionsResponse (org.sonarqube.ws.WsPermissions.WsSearchGlobalPermissionsResponse)1