Search in sources :

Example 6 with PermissionDeniedRequestException

use of com.webank.wedatasphere.qualitis.exception.PermissionDeniedRequestException in project Qualitis by WeBankFinTech.

the class RuleMetricServiceImpl method modifyRuleMetricReal.

private GeneralResponse<RuleMetricResponse> modifyRuleMetricReal(ModifyRuleMetricRequest request, String userName) throws UnExpectedRequestException, PermissionDeniedRequestException {
    if (request == null) {
        throw new UnExpectedRequestException("{&REQUEST_CAN_NOT_BE_NULL}");
    }
    // Check rule metric existence.
    RuleMetric ruleMetricInDb = ruleMetricDao.findById(request.getId());
    if (ruleMetricInDb == null) {
        throw new UnExpectedRequestException("Rule Metric [ID=" + request.getId() + "] {&DOES_NOT_EXIST}");
    }
    LOGGER.info("Start to modify rule metric, modify request: [{}], user: [{}]", request.toString(), userName);
    if (!ruleMetricInDb.getName().equals(request.getName())) {
        checkDuplicateName(request.getName());
    }
    if (!ruleMetricInDb.getEnCode().equals(request.getEnCode())) {
        checkDuplicateCode(request.getEnCode());
    }
    User loginUser = userDao.findByUsername(userName);
    List<UserRole> userRoles = userRoleDao.findByUser(loginUser);
    Integer roleType = roleService.getRoleType(userRoles);
    if (roleType.equals(RoleDefaultTypeEnum.ADMIN.getCode())) {
        LOGGER.info("First level(created by SYS_ADMIN) indicator will be modified soon.");
    } else if (roleType.equals(RoleDefaultTypeEnum.DEPARTMENT_ADMIN.getCode())) {
        LOGGER.info("Second level(created by DEPARTMENT_ADMIN) indicator will be modified soon.");
        if (ruleMetricInDb.getLevel().equals(RuleMetricLevelEnum.DEFAULT_METRIC.getCode())) {
            throw new PermissionDeniedRequestException("User {&HAS_NO_PERMISSION_TO_ACCESS}", 403);
        }
        List<Department> managedDepartment = new ArrayList<>();
        for (UserRole userRole : userRoles) {
            Department department = userRole.getRole().getDepartment();
            if (department != null) {
                managedDepartment.add(department);
            }
        }
        RuleMetricDepartmentUser ruleMetricDepartmentUser = ruleMetricDepartmentUserDao.findByRuleMetric(ruleMetricInDb);
        if (ruleMetricDepartmentUser != null && managedDepartment.contains(ruleMetricDepartmentUser.getDepartment())) {
            LOGGER.info("Rule metric[{}]", ruleMetricInDb.toString());
        } else {
            throw new PermissionDeniedRequestException("User {&HAS_NO_PERMISSION_TO_ACCESS}", 403);
        }
    } else {
        LOGGER.info("Third level(created by PROJECTOR) indicator will be modified soon.");
        if (!ruleMetricInDb.getLevel().equals(RuleMetricLevelEnum.PERSONAL_METRIC.getCode()) || !ruleMetricInDb.getCreateUser().equals(loginUser.getUserName())) {
            throw new PermissionDeniedRequestException("User {&HAS_NO_PERMISSION_TO_ACCESS}", 403);
        }
    }
    Integer bussCode = request.getBussCode();
    ruleMetricInDb.setName(request.getName());
    ruleMetricInDb.setCnName(request.getCnName());
    ruleMetricInDb.setMetricDesc(request.getDesc());
    ruleMetricInDb.setBussCode(bussCode);
    if (RuleMetricBussCodeEnum.SUBSYSTEM.getCode().equals(bussCode)) {
        ruleMetricInDb.setSubSystemName(request.getSubSystemName());
        ruleMetricInDb.setFullCnName(request.getFullCnName());
        // Empty them
        ruleMetricInDb.setBussCustom("");
        ruleMetricInDb.setProductName("");
    } else if (RuleMetricBussCodeEnum.PRODUCT.getCode().equals(bussCode)) {
        ruleMetricInDb.setProductName(request.getProductName());
        ruleMetricInDb.setSubSystemName("");
        ruleMetricInDb.setFullCnName("");
        ruleMetricInDb.setBussCustom("");
    } else if (RuleMetricBussCodeEnum.CUSTOM.getCode().equals(bussCode)) {
        ruleMetricInDb.setBussCustom(request.getBussCustom());
        ruleMetricInDb.setProductName("");
        ruleMetricInDb.setSubSystemName("");
        ruleMetricInDb.setFullCnName("");
    }
    ruleMetricInDb.setModifyUser(userName);
    ruleMetricInDb.setModifyTime(ExecutionManagerImpl.PRINT_TIME_FORMAT.format(new Date()));
    ruleMetricInDb.setType(request.getType());
    ruleMetricInDb.setEnCode(request.getEnCode());
    ruleMetricInDb.setFrequency(request.getFrequency());
    ruleMetricInDb.setDepartmentName(request.getDepartmentName());
    ruleMetricInDb.setDevDepartmentName(request.getDevDepartmentName());
    ruleMetricInDb.setOpsDepartmentName(request.getOpsDepartmentName());
    ruleMetricInDb.setAvailable(request.getAvailable());
    RuleMetricResponse response = new RuleMetricResponse(ruleMetricDao.add(ruleMetricInDb));
    return new GeneralResponse<>("200", "{&MODIFY_RULE_METRIC_SUCCESSFULLY}", response);
}
Also used : ExcelRuleMetric(com.webank.wedatasphere.qualitis.project.excel.ExcelRuleMetric) RuleMetric(com.webank.wedatasphere.qualitis.entity.RuleMetric) RuleMetricDepartmentUser(com.webank.wedatasphere.qualitis.entity.RuleMetricDepartmentUser) UnExpectedRequestException(com.webank.wedatasphere.qualitis.exception.UnExpectedRequestException) PermissionDeniedRequestException(com.webank.wedatasphere.qualitis.exception.PermissionDeniedRequestException) RuleMetricDepartmentUser(com.webank.wedatasphere.qualitis.entity.RuleMetricDepartmentUser) User(com.webank.wedatasphere.qualitis.entity.User) Date(java.util.Date) GeneralResponse(com.webank.wedatasphere.qualitis.response.GeneralResponse) RuleMetricResponse(com.webank.wedatasphere.qualitis.response.RuleMetricResponse) Department(com.webank.wedatasphere.qualitis.entity.Department) UserRole(com.webank.wedatasphere.qualitis.entity.UserRole) List(java.util.List) ArrayList(java.util.ArrayList)

Example 7 with PermissionDeniedRequestException

use of com.webank.wedatasphere.qualitis.exception.PermissionDeniedRequestException in project Qualitis by WeBankFinTech.

the class RuleMetricServiceImpl method getRuleMetricDetail.

@Override
public GeneralResponse<RuleMetricResponse> getRuleMetricDetail(long id) throws UnExpectedRequestException, PermissionDeniedRequestException {
    if (id <= 0) {
        throw new UnExpectedRequestException("{&REQUEST_CAN_NOT_BE_NULL}");
    }
    // Check rule metric existence.
    RuleMetric ruleMetricInDb = ruleMetricDao.findById(id);
    if (ruleMetricInDb == null) {
        throw new UnExpectedRequestException("Rule Metric ID [" + id + "] {&DOES_NOT_EXIST}");
    }
    String userName = HttpUtils.getUserName(httpServletRequest);
    LOGGER.info("Start to get rule metric, rule metric ID: [{}], user: [{}]", id, userName);
    User loginUser = userDao.findByUsername(userName);
    List<UserRole> userRoles = userRoleDao.findByUser(loginUser);
    Integer roleType = roleService.getRoleType(userRoles);
    RuleMetricDepartmentUser ruleMetricDepartmentUser = ruleMetricDepartmentUserDao.findByRuleMetric(ruleMetricInDb);
    if (roleType.equals(RoleDefaultTypeEnum.ADMIN.getCode())) {
        LOGGER.info("SYS_ADMIN will get rule metric.");
    } else if (roleType.equals(RoleDefaultTypeEnum.DEPARTMENT_ADMIN.getCode())) {
        LOGGER.info("DEPARTMENT_ADMIN will get rule metric.");
        List<Department> managedDepartment = new ArrayList<>();
        for (UserRole userRole : userRoles) {
            Department department = userRole.getRole().getDepartment();
            if (department != null) {
                managedDepartment.add(department);
            }
        }
        if (ruleMetricDepartmentUser.getDepartment() != null) {
            List<Department> res = managedDepartment.stream().filter(department -> department.getId() == ruleMetricDepartmentUser.getDepartment().getId()).collect(Collectors.toList());
            if (res.size() > 0) {
                LOGGER.info("Rule metric[{}] comes from department: {}", ruleMetricInDb.toString(), ruleMetricDepartmentUser.getDepartment().getName());
            } else {
                throw new PermissionDeniedRequestException("User {&HAS_NO_PERMISSION_TO_ACCESS}", 403);
            }
        } else if (ruleMetricInDb.getLevel().equals(RuleMetricLevelEnum.DEFAULT_METRIC.getCode())) {
            LOGGER.info("DEPARTMENT_ADMIN will get first level rule metric.");
        } else {
            throw new PermissionDeniedRequestException("User {&HAS_NO_PERMISSION_TO_ACCESS}", 403);
        }
    } else {
        LOGGER.info("PROJECTOR will get rule metric.");
        Department department = loginUser.getDepartment();
        if (ruleMetricInDb.getLevel().equals(RuleMetricLevelEnum.DEPARTMENT_METRIC) && !department.equals(ruleMetricDepartmentUser.getDepartment())) {
            throw new PermissionDeniedRequestException("User {&HAS_NO_PERMISSION_TO_ACCESS}", 403);
        }
        if (ruleMetricInDb.getLevel().equals(RuleMetricLevelEnum.PERSONAL_METRIC) && !loginUser.equals(ruleMetricDepartmentUser.getUser())) {
            throw new PermissionDeniedRequestException("User {&HAS_NO_PERMISSION_TO_ACCESS}", 403);
        }
    }
    RuleMetricResponse ruleMetricResponse = new RuleMetricResponse(ruleMetricInDb);
    return new GeneralResponse<>("200", "{&GET_RULE_METRIC_SUCCESSFULLY}", ruleMetricResponse);
}
Also used : ExcelRuleMetric(com.webank.wedatasphere.qualitis.project.excel.ExcelRuleMetric) RuleMetric(com.webank.wedatasphere.qualitis.entity.RuleMetric) RuleMetricDepartmentUser(com.webank.wedatasphere.qualitis.entity.RuleMetricDepartmentUser) UnExpectedRequestException(com.webank.wedatasphere.qualitis.exception.UnExpectedRequestException) PermissionDeniedRequestException(com.webank.wedatasphere.qualitis.exception.PermissionDeniedRequestException) RuleMetricDepartmentUser(com.webank.wedatasphere.qualitis.entity.RuleMetricDepartmentUser) User(com.webank.wedatasphere.qualitis.entity.User) GeneralResponse(com.webank.wedatasphere.qualitis.response.GeneralResponse) RuleMetricResponse(com.webank.wedatasphere.qualitis.response.RuleMetricResponse) Department(com.webank.wedatasphere.qualitis.entity.Department) UserRole(com.webank.wedatasphere.qualitis.entity.UserRole) List(java.util.List) ArrayList(java.util.ArrayList)

Example 8 with PermissionDeniedRequestException

use of com.webank.wedatasphere.qualitis.exception.PermissionDeniedRequestException in project Qualitis by WeBankFinTech.

the class ProjectServiceImpl method modifyProjectDetail.

@Override
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = { RuntimeException.class, UnExpectedRequestException.class })
public GeneralResponse<?> modifyProjectDetail(ModifyProjectDetailRequest request, boolean workflow) throws UnExpectedRequestException, PermissionDeniedRequestException, RoleNotFoundException {
    // Check Arguments
    ModifyProjectDetailRequest.checkRequest(request);
    // Check existence of project
    Project projectInDb = projectDao.findById(request.getProjectId());
    if (projectInDb == null) {
        throw new UnExpectedRequestException("project id {&DOES_NOT_EXIST}");
    }
    LOGGER.info("Succeed to get project. project: {}", projectInDb);
    // Get userId
    Long userId = HttpUtils.getUserId(httpServletRequest);
    User user;
    if (userId == null) {
        user = userDao.findByUsername(request.getUsername());
        if (user == null) {
            throw new UnExpectedRequestException(String.format("{&FAILED_TO_FIND_USER} %s", request.getUsername()));
        }
    } else {
        user = userDao.findById(userId);
        if (user == null) {
            throw new UnExpectedRequestException(String.format("{&FAILED_TO_FIND_USER} %s", userId));
        }
    }
    // Check if user has permission modifying project
    List<Integer> permissions = new ArrayList<>();
    permissions.add(ProjectUserPermissionEnum.BUSSMAN.getCode());
    permissions.add(ProjectUserPermissionEnum.DEVELOPER.getCode());
    checkProjectPermission(projectInDb, user.getUserName(), permissions);
    // Check project name
    Project otherProject = projectDao.findByNameAndCreateUser(request.getProjectName(), user.getUserName());
    if (otherProject != null && !otherProject.getId().equals(projectInDb.getId())) {
        throw new UnExpectedRequestException(String.format("Project name: %s already exist", request.getProjectName()));
    }
    // Save project.
    String oldLabels = "";
    String newLabels = "";
    if (CollectionUtils.isNotEmpty(projectInDb.getProjectLabels())) {
        oldLabels = projectInDb.getProjectLabels().stream().map(ProjectLabel::getLabelName).collect(Collectors.joining());
    }
    if (CollectionUtils.isNotEmpty(request.getProjectLabelStrs())) {
        newLabels = request.getProjectLabelStrs().stream().collect(Collectors.joining());
    }
    if (!oldLabels.equals(newLabels)) {
        projectEventService.recordModifyProject(projectInDb, user.getUserName(), "Project labels", oldLabels, newLabels, EventTypeEnum.MODIFY_PROJECT.getCode());
    }
    if (StringUtils.isNotEmpty(projectInDb.getCnName()) && !projectInDb.getCnName().equals(request.getCnName())) {
        projectEventService.recordModifyProject(projectInDb, user.getUserName(), "Chinese Name", projectInDb.getCnName(), request.getCnName(), EventTypeEnum.MODIFY_PROJECT.getCode());
    }
    if (!projectInDb.getName().equals(request.getProjectName())) {
        projectEventService.recordModifyProject(projectInDb, user.getUserName(), "English Name", projectInDb.getName(), request.getProjectName(), EventTypeEnum.MODIFY_PROJECT.getCode());
    }
    if (!projectInDb.getDescription().equals(request.getDescription())) {
        projectEventService.recordModifyProject(projectInDb, user.getUserName(), "Describe", projectInDb.getDescription(), request.getDescription(), EventTypeEnum.MODIFY_PROJECT.getCode());
    }
    projectInDb.setCnName(request.getCnName());
    projectInDb.setName(request.getProjectName());
    projectInDb.setDescription(request.getDescription());
    // Delete old projectLabel.
    projectLabelDao.deleteByProject(projectInDb);
    LOGGER.info("Succeed to delete all project_label, project_id: {}", request.getProjectId());
    // Create new project labels.
    addProjectLabels(request.getProjectLabelStrs(), projectInDb);
    // Record modify user
    projectInDb.setModifyUser(user.getUserName());
    projectInDb.setModifyTime(ExecutionManagerImpl.PRINT_TIME_FORMAT.format(new Date()));
    Project savedProject = projectDao.saveProject(projectInDb);
    LOGGER.info("Succeed to modify project. project: {}", savedProject);
    if (workflow) {
        // Clear old project user.
        List<ProjectUser> projectUsers = projectUserDao.findByProject(projectInDb);
        Role role = roleDao.findByRoleName(ADMIN);
        List<String> admins = userRoleDao.findByRole(role).stream().map(UserRole::getUser).map(User::getUserName).collect(Collectors.toList());
        projectUsers = projectUsers.stream().filter(projectUser -> !admins.contains(projectUser.getUserName())).filter(projectUser -> !projectUser.getUserName().equals(request.getUsername())).collect(Collectors.toList());
        for (ProjectUser projectUser : projectUsers) {
            projectUserDao.deleteByProjectAndUserName(projectInDb, projectUser.getUserName());
        }
    }
    authorizeUsers(projectInDb, user, request.getAuthorizeProjectUserRequests(), true);
    return new GeneralResponse<>("200", "{&MODIFY_PROJECT_DETAIL_SUCCESSFULLY}", new ProjectDetailResponse(savedProject, null));
}
Also used : Role(com.webank.wedatasphere.qualitis.entity.Role) ProjectEventDao(com.webank.wedatasphere.qualitis.project.dao.ProjectEventDao) ProjectEvent(com.webank.wedatasphere.qualitis.project.entity.ProjectEvent) LoggerFactory(org.slf4j.LoggerFactory) ProjectLabel(com.webank.wedatasphere.qualitis.project.entity.ProjectLabel) Autowired(org.springframework.beans.factory.annotation.Autowired) ProjectUserDao(com.webank.wedatasphere.qualitis.project.dao.ProjectUserDao) StringUtils(org.apache.commons.lang3.StringUtils) PermissionDeniedRequestException(com.webank.wedatasphere.qualitis.exception.PermissionDeniedRequestException) DeleteFileRuleRequest(com.webank.wedatasphere.qualitis.rule.request.DeleteFileRuleRequest) EventTypeEnum(com.webank.wedatasphere.qualitis.project.constant.EventTypeEnum) GeneralResponse(com.webank.wedatasphere.qualitis.response.GeneralResponse) DeleteRuleRequest(com.webank.wedatasphere.qualitis.rule.request.DeleteRuleRequest) HttpUtils(com.webank.wedatasphere.qualitis.util.HttpUtils) AddProjectRequest(com.webank.wedatasphere.qualitis.project.request.AddProjectRequest) GetAllResponse(com.webank.wedatasphere.qualitis.response.GetAllResponse) ProjectService(com.webank.wedatasphere.qualitis.project.service.ProjectService) ProjectEventService(com.webank.wedatasphere.qualitis.project.service.ProjectEventService) ProjectDetailResponse(com.webank.wedatasphere.qualitis.project.response.ProjectDetailResponse) Context(javax.ws.rs.core.Context) ProjectUserPermissionEnum(com.webank.wedatasphere.qualitis.project.constant.ProjectUserPermissionEnum) PageRequest(com.webank.wedatasphere.qualitis.request.PageRequest) CustomRuleService(com.webank.wedatasphere.qualitis.rule.service.CustomRuleService) Collectors(java.util.stream.Collectors) ExecutionManagerImpl(com.webank.wedatasphere.qualitis.submitter.impl.ExecutionManagerImpl) RuleService(com.webank.wedatasphere.qualitis.rule.service.RuleService) RoleNotFoundException(javax.management.relation.RoleNotFoundException) RoleDao(com.webank.wedatasphere.qualitis.dao.RoleDao) UnExpectedRequestException(com.webank.wedatasphere.qualitis.exception.UnExpectedRequestException) ProjectEventResponse(com.webank.wedatasphere.qualitis.project.response.ProjectEventResponse) java.util(java.util) Project(com.webank.wedatasphere.qualitis.project.entity.Project) UserRole(com.webank.wedatasphere.qualitis.entity.UserRole) UserRoleDao(com.webank.wedatasphere.qualitis.dao.UserRoleDao) Rule(com.webank.wedatasphere.qualitis.rule.entity.Rule) ProjectDao(com.webank.wedatasphere.qualitis.project.dao.ProjectDao) HttpServletRequest(javax.servlet.http.HttpServletRequest) User(com.webank.wedatasphere.qualitis.entity.User) CollectionUtils(org.apache.commons.collections.CollectionUtils) Propagation(org.springframework.transaction.annotation.Propagation) Service(org.springframework.stereotype.Service) ProjectLabelDao(com.webank.wedatasphere.qualitis.project.dao.ProjectLabelDao) AuthorizeProjectUserRequest(com.webank.wedatasphere.qualitis.project.request.AuthorizeProjectUserRequest) ModifyProjectDetailRequest(com.webank.wedatasphere.qualitis.project.request.ModifyProjectDetailRequest) DeleteProjectRequest(com.webank.wedatasphere.qualitis.project.request.DeleteProjectRequest) Logger(org.slf4j.Logger) ProjectTypeEnum(com.webank.wedatasphere.qualitis.project.constant.ProjectTypeEnum) ProjectUser(com.webank.wedatasphere.qualitis.project.entity.ProjectUser) RuleTypeEnum(com.webank.wedatasphere.qualitis.rule.constant.RuleTypeEnum) FileRuleService(com.webank.wedatasphere.qualitis.rule.service.FileRuleService) ProjectResponse(com.webank.wedatasphere.qualitis.project.response.ProjectResponse) DeleteMultiSourceRequest(com.webank.wedatasphere.qualitis.rule.request.multi.DeleteMultiSourceRequest) MultiSourceRuleService(com.webank.wedatasphere.qualitis.rule.service.MultiSourceRuleService) DeleteCustomRuleRequest(com.webank.wedatasphere.qualitis.rule.request.DeleteCustomRuleRequest) RuleDao(com.webank.wedatasphere.qualitis.rule.dao.RuleDao) ProjectUserService(com.webank.wedatasphere.qualitis.project.service.ProjectUserService) UserDao(com.webank.wedatasphere.qualitis.dao.UserDao) Transactional(org.springframework.transaction.annotation.Transactional) UnExpectedRequestException(com.webank.wedatasphere.qualitis.exception.UnExpectedRequestException) ProjectUser(com.webank.wedatasphere.qualitis.project.entity.ProjectUser) User(com.webank.wedatasphere.qualitis.entity.User) ProjectUser(com.webank.wedatasphere.qualitis.project.entity.ProjectUser) ProjectLabel(com.webank.wedatasphere.qualitis.project.entity.ProjectLabel) Role(com.webank.wedatasphere.qualitis.entity.Role) UserRole(com.webank.wedatasphere.qualitis.entity.UserRole) GeneralResponse(com.webank.wedatasphere.qualitis.response.GeneralResponse) Project(com.webank.wedatasphere.qualitis.project.entity.Project) UserRole(com.webank.wedatasphere.qualitis.entity.UserRole) ProjectDetailResponse(com.webank.wedatasphere.qualitis.project.response.ProjectDetailResponse) Transactional(org.springframework.transaction.annotation.Transactional)

Example 9 with PermissionDeniedRequestException

use of com.webank.wedatasphere.qualitis.exception.PermissionDeniedRequestException in project Qualitis by WeBankFinTech.

the class ProjectUserServiceImpl method authorizePermission.

@Override
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = { RuntimeException.class, UnExpectedRequestException.class })
public GeneralResponse<ProjectUserResponse> authorizePermission(AuthorizeProjectUserRequest authorizeProjectUserRequest, Long loginUserId, boolean modify) throws UnExpectedRequestException, PermissionDeniedRequestException, RoleNotFoundException {
    List<ProjectUser> projectUsers = new ArrayList<>();
    AuthorizeProjectUserRequest.checkRequest(authorizeProjectUserRequest);
    Project projectInDb = projectDao.findById(authorizeProjectUserRequest.getProjectId());
    String projectUser = authorizeProjectUserRequest.getProjectUser();
    LOGGER.info("User[id={}] start to authorize user[name={}]", loginUserId, projectUser);
    if (projectInDb == null) {
        throw new UnExpectedRequestException("{&PROJECT}: [ID=" + authorizeProjectUserRequest.getProjectId() + "] {&DOES_NOT_EXIST}");
    }
    User projectUserInDb = userDao.findByUsername(projectUser);
    if (projectUserInDb == null) {
        LOGGER.warn("Project user is from outside, qualitis will auto add user. Name: " + projectUser);
        userService.autoAddUser(projectUser);
    }
    User loginUser = userDao.findById(loginUserId);
    if (!checkPermission(projectInDb, loginUser.getUserName(), ProjectUserPermissionEnum.CREATOR.getCode())) {
        throw new PermissionDeniedRequestException("{&NO_PERMISSION_MODIFYING_PROJECT}", 403);
    }
    if (loginUser.getUserName().equals(projectUser)) {
        return null;
    }
    List<Integer> permissions = new ArrayList<>();
    if (modify) {
        projectUserDao.deleteByProjectAndUserName(projectInDb, projectUser);
        LOGGER.info("Success to delete original project user permissions.");
    }
    for (Integer permission : authorizeProjectUserRequest.getProjectPermissions()) {
        ProjectUser tmp = new ProjectUser(permission, projectInDb, projectUser);
        LOGGER.info("User[name={}] get permission[ID={}].", projectUser, permission);
        projectUsers.add(tmp);
        permissions.add(permission);
    }
    projectUserDao.saveAll(projectUsers);
    // projectEventService.record(projectInDb.getId(), loginUser.getUserName(), "authorized", projectUser, EventTypeEnum.MODIFY_PROJECT.getCode());
    ProjectUserResponse projectUserResponse = new ProjectUserResponse(projectInDb.getName(), loginUser.getUserName(), projectUser);
    projectUserResponse.setPermissions(permissions);
    return new GeneralResponse<>("200", "{&SUCCESS_TO_ADD_PROJECT_USER}", projectUserResponse);
}
Also used : GeneralResponse(com.webank.wedatasphere.qualitis.response.GeneralResponse) ProjectUser(com.webank.wedatasphere.qualitis.project.entity.ProjectUser) Project(com.webank.wedatasphere.qualitis.project.entity.Project) UnExpectedRequestException(com.webank.wedatasphere.qualitis.exception.UnExpectedRequestException) PermissionDeniedRequestException(com.webank.wedatasphere.qualitis.exception.PermissionDeniedRequestException) User(com.webank.wedatasphere.qualitis.entity.User) ProjectUser(com.webank.wedatasphere.qualitis.project.entity.ProjectUser) ProjectUserResponse(com.webank.wedatasphere.qualitis.project.response.ProjectUserResponse) ArrayList(java.util.ArrayList) Transactional(org.springframework.transaction.annotation.Transactional)

Example 10 with PermissionDeniedRequestException

use of com.webank.wedatasphere.qualitis.exception.PermissionDeniedRequestException in project Qualitis by WeBankFinTech.

the class ProjectUserServiceImpl method deletePermission.

@Override
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = { RuntimeException.class, UnExpectedRequestException.class })
public GeneralResponse deletePermission(AuthorizeProjectUserRequest request, Long loginUserId) throws UnExpectedRequestException, PermissionDeniedRequestException {
    Long projectId = request.getProjectId();
    Project projectInDb = projectDao.findById(projectId);
    if (projectInDb == null) {
        throw new UnExpectedRequestException("{&PROJECT}: [ID=" + projectId + "] {&DOES_NOT_EXIST}");
    }
    User loginUser = userDao.findById(loginUserId);
    if (!checkPermission(projectInDb, loginUser.getUserName(), ProjectUserPermissionEnum.CREATOR.getCode())) {
        throw new PermissionDeniedRequestException("{&NO_PERMISSION_MODIFYING_PROJECT}", 403);
    }
    projectUserDao.deleteByProjectAndUserName(projectInDb, request.getProjectUser());
    // projectEventService.record(projectInDb.getId(), loginUser.getUserName(), "authorized", request.getProjectUser(), EventTypeEnum.MODIFY_PROJECT.getCode());
    return new GeneralResponse<>("200", "{&DELETE_USER_SUCCESSFULLY}", null);
}
Also used : GeneralResponse(com.webank.wedatasphere.qualitis.response.GeneralResponse) Project(com.webank.wedatasphere.qualitis.project.entity.Project) UnExpectedRequestException(com.webank.wedatasphere.qualitis.exception.UnExpectedRequestException) PermissionDeniedRequestException(com.webank.wedatasphere.qualitis.exception.PermissionDeniedRequestException) User(com.webank.wedatasphere.qualitis.entity.User) ProjectUser(com.webank.wedatasphere.qualitis.project.entity.ProjectUser) Transactional(org.springframework.transaction.annotation.Transactional)

Aggregations

PermissionDeniedRequestException (com.webank.wedatasphere.qualitis.exception.PermissionDeniedRequestException)17 UnExpectedRequestException (com.webank.wedatasphere.qualitis.exception.UnExpectedRequestException)15 User (com.webank.wedatasphere.qualitis.entity.User)14 GeneralResponse (com.webank.wedatasphere.qualitis.response.GeneralResponse)14 ArrayList (java.util.ArrayList)13 Transactional (org.springframework.transaction.annotation.Transactional)11 Project (com.webank.wedatasphere.qualitis.project.entity.Project)10 RuleMetric (com.webank.wedatasphere.qualitis.entity.RuleMetric)9 List (java.util.List)9 UserRole (com.webank.wedatasphere.qualitis.entity.UserRole)8 IOException (java.io.IOException)7 Date (java.util.Date)7 Rule (com.webank.wedatasphere.qualitis.rule.entity.Rule)6 UserDao (com.webank.wedatasphere.qualitis.dao.UserDao)5 ClusterInfoNotConfigException (com.webank.wedatasphere.qualitis.exception.ClusterInfoNotConfigException)5 TaskNotExistException (com.webank.wedatasphere.qualitis.exception.TaskNotExistException)5 MetaDataAcquireFailedException (com.webank.wedatasphere.qualitis.metadata.exception.MetaDataAcquireFailedException)5 Department (com.webank.wedatasphere.qualitis.entity.Department)4 RuleMetricDepartmentUser (com.webank.wedatasphere.qualitis.entity.RuleMetricDepartmentUser)4 ArgumentException (com.webank.wedatasphere.qualitis.exception.ArgumentException)4