use of eu.bcvsolutions.idm.core.api.dto.IdmIdentityDto in project CzechIdMng by bcvsolutions.
the class IdentitySyncTest method testEnableAutomaticRoleDuringSynchronization.
@Test
public void testEnableAutomaticRoleDuringSynchronization() {
// default initialization of system and all necessary things
SysSystemDto system = initData();
SysSyncIdentityConfigDto config = doCreateSyncConfig(system);
IdmRoleDto defaultRole = helper.createRole();
// Set default role to sync configuration
config.setDefaultRole(defaultRole.getId());
// we want start recalculation after synchronization
config.setStartAutoRoleRec(true);
config = (SysSyncIdentityConfigDto) syncConfigService.save(config);
this.getBean().deleteAllResourceData();
String testLastName = "test-last-name-same-" + System.currentTimeMillis();
String testFirstName = "test-first-name";
String user1 = "test-1-" + System.currentTimeMillis();
this.getBean().setTestData(user1, testFirstName, testLastName);
String user2 = "test-2-" + System.currentTimeMillis();
this.getBean().setTestData(user2, testFirstName, testLastName);
String user3 = "test-3-" + System.currentTimeMillis();
this.getBean().setTestData(user3, testFirstName, testLastName);
IdmRoleDto role1 = helper.createRole();
IdmAutomaticRoleAttributeDto automaticRole = helper.createAutomaticRole(role1.getId());
helper.createAutomaticRoleRule(automaticRole.getId(), AutomaticRoleAttributeRuleComparison.EQUALS, AutomaticRoleAttributeRuleType.IDENTITY, IdmIdentity_.username.getName(), null, user1);
synchornizationService.setSynchronizationConfigId(config.getId());
synchornizationService.process();
SysSyncLogDto log = checkSyncLog(config, SynchronizationActionType.CREATE_ENTITY, 3, OperationResultType.WARNING);
Assert.assertFalse(log.isRunning());
Assert.assertFalse(log.isContainsError());
IdmIdentityDto identity1 = identityService.getByUsername(user1);
IdmIdentityDto identity2 = identityService.getByUsername(user2);
IdmIdentityDto identity3 = identityService.getByUsername(user3);
// we must change username, after create contract is also save identity (change state)
identity1.setUsername(user1 + System.currentTimeMillis());
identity1 = identityService.save(identity1);
helper.createIdentityContact(identity1);
helper.createIdentityContact(identity2);
helper.createIdentityContact(identity3);
List<IdmIdentityRoleDto> identityRoles1 = identityRoleService.findAllByIdentity(identity1.getId());
List<IdmIdentityRoleDto> identityRoles2 = identityRoleService.findAllByIdentity(identity2.getId());
List<IdmIdentityRoleDto> identityRoles3 = identityRoleService.findAllByIdentity(identity3.getId());
assertEquals(0, identityRoles1.size());
assertEquals(0, identityRoles2.size());
assertEquals(0, identityRoles3.size());
// enable test processor
testIdentityProcessor.enable();
synchornizationService.setSynchronizationConfigId(config.getId());
synchornizationService.process();
identityRoles1 = identityRoleService.findAllByIdentity(identity1.getId());
identityRoles2 = identityRoleService.findAllByIdentity(identity2.getId());
identityRoles3 = identityRoleService.findAllByIdentity(identity3.getId());
assertEquals(1, identityRoles1.size());
assertEquals(0, identityRoles2.size());
assertEquals(0, identityRoles3.size());
IdmIdentityRoleDto foundIdentityRole = identityRoles1.get(0);
assertEquals(automaticRole.getId(), foundIdentityRole.getRoleTreeNode());
// synchronization immediately recalculate is disabled
int size = testIdentityProcessor.getRolesByUsername(user1).size();
assertEquals(0, size);
size = testIdentityProcessor.getRolesByUsername(user2).size();
assertEquals(0, size);
size = testIdentityProcessor.getRolesByUsername(user3).size();
assertEquals(0, size);
}
use of eu.bcvsolutions.idm.core.api.dto.IdmIdentityDto in project CzechIdMng by bcvsolutions.
the class DefaultIdmIdentityService method findAllGuaranteesByRoleId.
@Override
@Transactional(readOnly = true)
public List<IdmIdentityDto> findAllGuaranteesByRoleId(UUID roleId) {
IdmRoleDto role = roleService.get(roleId);
Assert.notNull(role, "Role is required. Role by name [" + roleId + "] not found.");
return role.getGuarantees().stream().map(guarantee -> {
return get(guarantee.getGuarantee());
}).collect(Collectors.toList());
}
use of eu.bcvsolutions.idm.core.api.dto.IdmIdentityDto in project CzechIdMng by bcvsolutions.
the class DefaultIdmIdentityService method evaluateState.
@Override
@Transactional(readOnly = true)
public IdentityState evaluateState(UUID identityId) {
Assert.notNull(identityId);
IdmIdentityDto identity = get(identityId);
if (identity == null) {
throw new ResultCodeException(CoreResultCode.NOT_FOUND, ImmutableMap.of("entity", identityId.toString()));
}
// manually disabled - cannot be enable automatically
if (identity.getState() == IdentityState.DISABLED_MANUALLY) {
return IdentityState.DISABLED_MANUALLY;
}
//
return evaluateState(identity);
}
use of eu.bcvsolutions.idm.core.api.dto.IdmIdentityDto in project CzechIdMng by bcvsolutions.
the class DefaultIdmIdentityService method findAllManagers.
/**
* Method finds all identity's managers by identity contract (guarantee or by assigned tree structure).
*
* @param forIdentity
* @param byTreeType If optional tree type is given, then only managers defined with this type is returned
* @return
*/
@Override
@Transactional(readOnly = true)
public List<IdmIdentityDto> findAllManagers(UUID forIdentity, UUID byTreeType) {
Assert.notNull(forIdentity, "Identity id is required.");
//
IdmIdentityFilter filter = new IdmIdentityFilter();
filter.setManagersFor(forIdentity);
filter.setManagersByTreeType(byTreeType);
//
List<IdmIdentityDto> results = new ArrayList<>();
Page<IdmIdentityDto> managers = find(filter, new PageRequest(0, 50, Sort.Direction.ASC, IdmIdentity_.username.getName()));
results.addAll(managers.getContent());
while (managers.hasNext()) {
managers = find(filter, managers.nextPageable());
results.addAll(managers.getContent());
}
//
if (!results.isEmpty()) {
return results;
}
// return all valid identities with admin role
return this.findValidByRole(roleConfiguration.getAdminRoleId());
}
use of eu.bcvsolutions.idm.core.api.dto.IdmIdentityDto in project CzechIdMng by bcvsolutions.
the class DefaultIdmIdentityService method disable.
@Override
public IdmIdentityDto disable(UUID identityId, BasePermission... permission) {
Assert.notNull(identityId);
IdmIdentityDto identity = get(identityId);
if (identity == null) {
throw new ResultCodeException(CoreResultCode.NOT_FOUND, ImmutableMap.of("entity", identityId.toString()));
}
//
if (identity.getState() == IdentityState.DISABLED_MANUALLY) {
// already disabled
throw new ResultCodeException(CoreResultCode.IDENTITY_ALREADY_DISABLED_MANUALLY, ImmutableMap.of(IdmIdentity_.username.getName(), identity.getUsername()));
}
identity.setState(IdentityState.DISABLED_MANUALLY);
return save(identity, permission);
}
Aggregations