use of eu.bcvsolutions.idm.core.api.dto.IdmAutomaticRoleAttributeRuleDto in project CzechIdMng by bcvsolutions.
the class DefaultIdmAutomaticRoleAttributeServiceIntegrationTest method testCreateIncompatibleRuleGreaterThen.
@Test(expected = ResultCodeException.class)
public void testCreateIncompatibleRuleGreaterThen() {
IdmRoleDto role = getHelper().createRole();
IdmAutomaticRoleAttributeDto automaticRole = new IdmAutomaticRoleAttributeDto();
automaticRole.setRole(role.getId());
automaticRole.setName(getHelper().createName());
automaticRole = automaticRoleAttributeService.save(automaticRole);
IdmAutomaticRoleAttributeRuleDto rule = new IdmAutomaticRoleAttributeRuleDto();
rule.setComparison(AutomaticRoleAttributeRuleComparison.GREATER_THAN_OR_EQUAL);
rule.setType(AutomaticRoleAttributeRuleType.IDENTITY);
rule.setValue("10");
rule.setAttributeName(IdmIdentity_.username.getName());
rule.setAutomaticRoleAttribute(automaticRole.getId());
automaticRoleAttributeRuleService.save(rule);
}
use of eu.bcvsolutions.idm.core.api.dto.IdmAutomaticRoleAttributeRuleDto in project CzechIdMng by bcvsolutions.
the class DefaultIdmAutomaticRoleAttributeServiceIntegrationTest method testRemoveLastRuleWithCheck.
@Test
public void testRemoveLastRuleWithCheck() {
String eavCode = "testingEav";
Long testEavContractValue = System.currentTimeMillis();
UUID testEavIdentityValue = UUID.randomUUID();
IdmIdentityDto identity = getHelper().createIdentity();
IdmRoleDto role = getHelper().createRole();
IdmIdentityContractDto primeContract = getHelper().getPrimeContract(identity.getId());
// create two eav attributes (for identity and contract)
IdmFormAttributeDto eavAttributeIdentity = getHelper().createEavAttribute(eavCode + System.currentTimeMillis(), IdmIdentity.class, PersistentType.UUID);
getHelper().setEavValue(identity, eavAttributeIdentity, IdmIdentity.class, testEavIdentityValue, PersistentType.UUID);
IdmFormAttributeDto eavAttributeContract = getHelper().createEavAttribute(eavCode + System.currentTimeMillis(), IdmIdentityContract.class, PersistentType.LONG);
getHelper().setEavValue(primeContract, eavAttributeContract, IdmIdentityContract.class, testEavContractValue, PersistentType.LONG);
IdmAutomaticRoleAttributeDto automaticRole = getHelper().createAutomaticRole(role.getId());
IdmAutomaticRoleAttributeRuleDto rule1 = getHelper().createAutomaticRoleRule(automaticRole.getId(), AutomaticRoleAttributeRuleComparison.EQUALS, AutomaticRoleAttributeRuleType.IDENTITY_EAV, null, eavAttributeIdentity.getId(), testEavIdentityValue.toString());
IdmAutomaticRoleAttributeRuleDto rule2 = getHelper().createAutomaticRoleRule(automaticRole.getId(), AutomaticRoleAttributeRuleComparison.EQUALS, AutomaticRoleAttributeRuleType.CONTRACT_EAV, null, eavAttributeContract.getId(), testEavContractValue.toString());
List<IdmIdentityRoleDto> identityRoles = identityRoleService.findAllByIdentity(identity.getId());
assertEquals(0, identityRoles.size());
this.recalculateSync(automaticRole.getId());
identityRoles = identityRoleService.findAllByIdentity(identity.getId());
assertEquals(1, identityRoles.size());
automaticRoleAttributeRuleService.delete(rule1);
this.recalculateSync(automaticRole.getId());
identityRoles = identityRoleService.findAllByIdentity(identity.getId());
assertEquals(1, identityRoles.size());
// in process will be start LRT with async remove all identity roles
automaticRoleAttributeRuleService.delete(rule2);
identityRoles = identityRoleService.findAllByIdentity(identity.getId());
assertEquals(0, identityRoles.size());
}
use of eu.bcvsolutions.idm.core.api.dto.IdmAutomaticRoleAttributeRuleDto 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);
}
});
}
use of eu.bcvsolutions.idm.core.api.dto.IdmAutomaticRoleAttributeRuleDto in project CzechIdMng by bcvsolutions.
the class AutomaticRoleAttributeRuleDeleteProcessor method process.
@Override
public EventResult<IdmAutomaticRoleAttributeRuleDto> process(EntityEvent<IdmAutomaticRoleAttributeRuleDto> event) {
IdmAutomaticRoleAttributeRuleDto dto = event.getContent();
//
List<IdmAutomaticRoleAttributeRuleDto> allRules = automactiRoleAttributeRuleService.findAllRulesForAutomaticRole(dto.getAutomaticRoleAttribute());
// by default is skip value null => false
if (!this.getBooleanProperty(SKIP_CHECK_LAST_RULE, event.getProperties())) {
// it's last rule, remove all identity roles
if (allRules.size() == 1 && dto.getId().equals(allRules.get(0).getId())) {
// before we start delete identity role, we check how many identities has the auto role
// if doesn't exist identities that has the role, skip remove
IdmIdentityFilter identityFilter = new IdmIdentityFilter();
long totalElements = identityService.count(identityFilter);
if (totalElements > 0) {
UUID automaticRoleAttributeId = dto.getAutomaticRoleAttribute();
removeAllRoles(automaticRoleAttributeId);
//
// we also set concept to false
IdmAutomaticRoleAttributeDto roleAttributeDto = automaticRoleAttributeRuleService.get(automaticRoleAttributeId);
roleAttributeDto.setConcept(false);
roleAttributeDto = automaticRoleAttributeRuleService.save(roleAttributeDto);
}
}
}
UUID automaticRuleId = dto.getId();
// Find all automatic role requests and remove relation on rule
if (automaticRuleId != null) {
IdmAutomaticRoleAttributeRuleRequestFilter automaticRoleRequestFilter = new IdmAutomaticRoleAttributeRuleRequestFilter();
automaticRoleRequestFilter.setRuleId(automaticRuleId);
ruleRequestService.find(automaticRoleRequestFilter, null).getContent().forEach(request -> {
request.setRule(null);
ruleRequestService.save(request);
});
}
//
automactiRoleAttributeRuleService.deleteInternal(dto);
//
return new DefaultEventResult<>(event, this);
}
use of eu.bcvsolutions.idm.core.api.dto.IdmAutomaticRoleAttributeRuleDto in project CzechIdMng by bcvsolutions.
the class AutomaticRoleAttributeRuleSaveProcessor method process.
@Override
public EventResult<IdmAutomaticRoleAttributeRuleDto> process(EntityEvent<IdmAutomaticRoleAttributeRuleDto> event) {
IdmAutomaticRoleAttributeRuleDto dto = event.getContent();
//
dto = automactiRoleAttributeRuleService.saveInternal(dto);
event.setContent(dto);
//
return new DefaultEventResult<>(event, this);
}
Aggregations