use of eu.bcvsolutions.idm.core.api.dto.IdmAutomaticRoleRequestDto in project CzechIdMng by bcvsolutions.
the class DefaultIdmAutomaticRoleRequestService method toDto.
@Override
public IdmAutomaticRoleRequestDto toDto(IdmAutomaticRoleRequest entity, IdmAutomaticRoleRequestDto dto) {
IdmAutomaticRoleRequestDto requestDto = super.toDto(entity, dto);
if (requestDto != null && requestDto.getWfProcessId() != null) {
WorkflowProcessInstanceDto processDto = workflowProcessInstanceService.get(requestDto.getWfProcessId(), false);
// TODO: create trimmed variant in workflow process instance service
if (processDto != null) {
processDto.setProcessVariables(null);
}
requestDto.getEmbedded().put(IdmRoleRequestDto.WF_PROCESS_FIELD, processDto);
}
return requestDto;
}
use of eu.bcvsolutions.idm.core.api.dto.IdmAutomaticRoleRequestDto in project CzechIdMng by bcvsolutions.
the class DefaultIdmAutomaticRoleRequestService method startRequestInternal.
@Override
@Transactional
public IdmAutomaticRoleRequestDto startRequestInternal(UUID requestId, boolean checkRight) {
LOG.debug("Start role request [{}]", requestId);
Assert.notNull(requestId, "Role request ID is required!");
// Load request ... check right for read
IdmAutomaticRoleRequestDto request = get(requestId);
Assert.notNull(request, "Role request DTO is required!");
Assert.isTrue(RequestState.CONCEPT == request.getState() || RequestState.DUPLICATED == request.getState() || RequestState.EXCEPTION == request.getState(), "Only role request with CONCEPT or EXCEPTION or DUPLICATED state can be started!");
// Request will be set on in progress state
request.setState(RequestState.IN_PROGRESS);
request.setResult(new OperationResultDto.Builder(OperationState.RUNNING).build());
IdmAutomaticRoleRequestDto savedRequest = this.save(request);
// Throw event
Map<String, Serializable> variables = new HashMap<>();
variables.put(RoleRequestApprovalProcessor.CHECK_RIGHT_PROPERTY, checkRight);
return entityEventManager.process(new AutomaticRoleRequestEvent(AutomaticRoleRequestEventType.EXECUTE, savedRequest, variables)).getContent();
}
use of eu.bcvsolutions.idm.core.api.dto.IdmAutomaticRoleRequestDto in project CzechIdMng by bcvsolutions.
the class DefaultIdmAutomaticRoleRequestService method executeRequestInternal.
private IdmAutomaticRoleRequestDto executeRequestInternal(UUID requestId) {
Assert.notNull(requestId, "Role request ID is required!");
IdmAutomaticRoleRequestDto request = this.get(requestId);
Assert.notNull(request, "Role request is required!");
IdmAutomaticRoleAttributeRuleRequestFilter ruleFilter = new IdmAutomaticRoleAttributeRuleRequestFilter();
ruleFilter.setRoleRequestId(requestId);
List<IdmAutomaticRoleAttributeRuleRequestDto> ruleConcepts = automaticRoleRuleRequestService.find(ruleFilter, null).getContent();
UUID automaticRoleId = request.getAutomaticRole();
if (AutomaticRoleRequestType.ATTRIBUTE == request.getRequestType()) {
// Automatic role by attributes
if (RequestOperationType.REMOVE == request.getOperation()) {
// Remove automatic role by attributes
Assert.notNull(automaticRoleId, "Id of automatic role in the request (for delete) is required!");
automaticRoleAttributeService.delete(automaticRoleAttributeService.get(automaticRoleId));
request.setAutomaticRole(null);
} else {
// Add new or update (rules) for automatic role by attributes
IdmAutomaticRoleAttributeDto automaticRole = null;
if (automaticRoleId != null) {
automaticRole = automaticRoleAttributeService.get(automaticRoleId);
} else {
automaticRole = new IdmAutomaticRoleAttributeDto();
automaticRole = initAttributeAutomaticRole(request, automaticRole);
automaticRole = automaticRoleAttributeService.save(automaticRole);
request.setAutomaticRole(automaticRole.getId());
}
UUID roleId = automaticRole.getRole() != null ? automaticRole.getRole() : request.getRole();
Assert.notNull(roleId, "Id of role is required in the automatic role request!");
IdmRoleDto role = roleService.get(request.getRole());
Assert.notNull(role, "Role is required in the automatic role request!");
// Before we do any change, we have to sets the automatic role to concept state
automaticRole.setConcept(true);
automaticRoleAttributeService.save(automaticRole);
// Realize changes for rules
realizeAttributeRules(request, automaticRole, ruleConcepts);
// Sets automatic role as no concept -> execute recalculation this role
automaticRole.setConcept(false);
automaticRoleAttributeService.recalculate(automaticRoleAttributeService.save(automaticRole).getId());
}
} else if (AutomaticRoleRequestType.TREE == request.getRequestType()) {
// Automatic role by node in a tree
if (RequestOperationType.REMOVE == request.getOperation()) {
// Remove tree automatic role
Assert.notNull(automaticRoleId, "Id of automatic role in the request (for delete) is required!");
// Recount (remove) assigned roles ensures LRT during delete
automaticRoleTreeService.delete(automaticRoleTreeService.get(automaticRoleId));
request.setAutomaticRole(null);
} else if (RequestOperationType.ADD == request.getOperation()) {
// Create new tree automatic role
IdmRoleTreeNodeDto treeAutomaticRole = new IdmRoleTreeNodeDto();
treeAutomaticRole = initTreeAutomaticRole(request, treeAutomaticRole);
// Recount of assigned roles ensures LRT after save
treeAutomaticRole = automaticRoleTreeService.save(treeAutomaticRole);
request.setAutomaticRole(treeAutomaticRole.getId());
} else {
// Update is not supported
throw new ResultCodeException(CoreResultCode.METHOD_NOT_ALLOWED, "Tree automatic role update is not supported");
}
}
request.setState(RequestState.EXECUTED);
request.setResult(new OperationResultDto.Builder(OperationState.EXECUTED).build());
return this.save(request);
}
use of eu.bcvsolutions.idm.core.api.dto.IdmAutomaticRoleRequestDto in project CzechIdMng by bcvsolutions.
the class DefaultIdmAutomaticRoleRequestService method createTreeAutomaticRole.
@Override
public IdmRoleTreeNodeDto createTreeAutomaticRole(IdmRoleTreeNodeDto automaticRole) {
Assert.notNull(automaticRole);
IdmAutomaticRoleRequestDto request = new IdmAutomaticRoleRequestDto();
request.setName(automaticRole.getName());
request.setTreeNode(automaticRole.getTreeNode());
request.setRecursionType(automaticRole.getRecursionType());
request.setRole(automaticRole.getRole());
request.setRequestType(AutomaticRoleRequestType.TREE);
request.setOperation(RequestOperationType.ADD);
request.setResult(new OperationResultDto.Builder(OperationState.CREATED).build());
request = this.save(request);
IdmAutomaticRoleRequestDto result = this.getIdmAutomaticRoleRequestService().startRequest(request.getId(), true);
if (RequestState.EXECUTED == result.getState()) {
UUID createdAutomaticRoleId = result.getAutomaticRole();
Assert.notNull(createdAutomaticRoleId);
return automaticRoleTreeService.get(createdAutomaticRoleId);
}
if (RequestState.IN_PROGRESS == result.getState()) {
throw new AcceptedException();
}
if (RequestState.EXCEPTION == result.getState()) {
throw new AcceptedException();
}
return null;
}
use of eu.bcvsolutions.idm.core.api.dto.IdmAutomaticRoleRequestDto in project CzechIdMng by bcvsolutions.
the class DefaultIdmAutomaticRoleRequestService method realizeAttributeRules.
/**
* Execute change of the request for attribute automatic role
*
* @param request
* @param automaticRoleId
* @param ruleConcepts
*/
private void realizeAttributeRules(IdmAutomaticRoleRequestDto request, IdmAutomaticRoleAttributeDto automaticRole, List<IdmAutomaticRoleAttributeRuleRequestDto> ruleConcepts) {
// Create new rule
ruleConcepts.stream().filter(concept -> {
return RequestOperationType.ADD == concept.getOperation();
}).forEach(concept -> {
IdmAutomaticRoleAttributeRuleDto rule = new IdmAutomaticRoleAttributeRuleDto();
rule.setAutomaticRoleAttribute(automaticRole.getId());
rule = automaticRoleRuleService.save(convertConceptRuleToRule(concept, rule));
// Save created identity role id
concept.setRule(rule.getId());
automaticRoleRuleRequestService.save(concept);
});
// Update rule
ruleConcepts.stream().filter(concept -> {
return RequestOperationType.UPDATE == concept.getOperation();
}).filter(concept -> {
return concept.getRule() != null;
}).forEach(concept -> {
IdmAutomaticRoleAttributeRuleDto rule = automaticRoleRuleService.get(concept.getRule());
rule = automaticRoleRuleService.save(convertConceptRuleToRule(concept, rule));
// Save created identity role id
concept.setRule(rule.getId());
automaticRoleRuleRequestService.save(concept);
});
// Delete rule
ruleConcepts.stream().filter(concept -> {
return RequestOperationType.REMOVE == concept.getOperation();
}).filter(concept -> {
return concept.getRule() != null;
}).forEach(concept -> {
IdmAutomaticRoleAttributeRuleDto rule = automaticRoleRuleService.get(concept.getRule());
if (rule != null) {
concept.setRule(rule.getId());
automaticRoleRuleRequestService.save(concept);
// Finally delete of the rule
automaticRoleRuleService.delete(rule);
}
});
}
Aggregations