Search in sources :

Example 1 with IdmPasswordPolicy

use of eu.bcvsolutions.idm.core.model.entity.IdmPasswordPolicy in project CzechIdMng by bcvsolutions.

the class IdentityPasswordValidateProcessor method validateDefinition.

/**
 * Method returns password policy list for accounts
 *
 * @param identity
 * @param passwordChangeDto
 * @return
 */
public List<IdmPasswordPolicyDto> validateDefinition(IdmIdentityDto identity, PasswordChangeDto passwordChangeDto) {
    List<IdmPasswordPolicyDto> passwordPolicyList = new ArrayList<>();
    // Find user accounts
    AccIdentityAccountFilter filter = new AccIdentityAccountFilter();
    filter.setIdentityId(identity.getId());
    List<AccIdentityAccountDto> identityAccounts = identityAccountService.find(filter, null).getContent();
    // 
    // get default password policy
    IdmPasswordPolicyDto defaultPasswordPolicy = this.passwordPolicyService.getDefaultPasswordPolicy(IdmPasswordPolicyType.VALIDATE);
    // 
    if (passwordChangeDto.isIdm() && defaultPasswordPolicy != null) {
        passwordPolicyList.add(defaultPasswordPolicy);
    }
    // 
    // get systems, only ownership
    identityAccounts.stream().filter(identityAccount -> {
        return identityAccount.isOwnership() && (passwordChangeDto.isAll() || passwordChangeDto.getAccounts().contains(identityAccount.getAccount().toString()));
    }).forEach(identityAccount -> {
        // get validate password policy from system
        // TODO: change to DTO after refactoring
        IdmPasswordPolicy passwordPolicyEntity = identityAccountRepository.findOne(identityAccount.getId()).getAccount().getSystem().getPasswordPolicyValidate();
        IdmPasswordPolicyDto passwordPolicy = null;
        if (passwordPolicyEntity != null) {
            passwordPolicy = passwordPolicyService.get(passwordPolicyEntity.getId());
        }
        // validate
        if (passwordPolicy == null) {
            passwordPolicy = defaultPasswordPolicy;
        }
        if (!passwordPolicyList.contains(passwordPolicy) && passwordPolicy != null) {
            passwordPolicyList.add(passwordPolicy);
        }
    });
    return passwordPolicyList;
}
Also used : IdmPasswordPolicyDto(eu.bcvsolutions.idm.core.api.dto.IdmPasswordPolicyDto) ProvisioningEvent(eu.bcvsolutions.idm.acc.event.ProvisioningEvent) Autowired(org.springframework.beans.factory.annotation.Autowired) Enabled(eu.bcvsolutions.idm.core.security.api.domain.Enabled) CoreEventProcessor(eu.bcvsolutions.idm.core.api.event.CoreEventProcessor) IdmPasswordDto(eu.bcvsolutions.idm.core.api.dto.IdmPasswordDto) IdmPasswordService(eu.bcvsolutions.idm.core.api.service.IdmPasswordService) SecurityService(eu.bcvsolutions.idm.core.security.api.service.SecurityService) ArrayList(java.util.ArrayList) IdmPasswordValidationDto(eu.bcvsolutions.idm.core.api.dto.IdmPasswordValidationDto) ResultCodeException(eu.bcvsolutions.idm.core.api.exception.ResultCodeException) DefaultEventResult(eu.bcvsolutions.idm.core.api.event.DefaultEventResult) IdentityEventType(eu.bcvsolutions.idm.core.model.event.IdentityEvent.IdentityEventType) EventResult(eu.bcvsolutions.idm.core.api.event.EventResult) IdentityProcessor(eu.bcvsolutions.idm.core.api.event.processor.IdentityProcessor) EntityEvent(eu.bcvsolutions.idm.core.api.event.EntityEvent) AccIdentityAccountDto(eu.bcvsolutions.idm.acc.dto.AccIdentityAccountDto) Description(org.springframework.context.annotation.Description) AccModuleDescriptor(eu.bcvsolutions.idm.acc.AccModuleDescriptor) PasswordChangeType(eu.bcvsolutions.idm.core.api.domain.PasswordChangeType) AccIdentityAccountRepository(eu.bcvsolutions.idm.acc.repository.AccIdentityAccountRepository) IdmPasswordPolicyType(eu.bcvsolutions.idm.core.api.domain.IdmPasswordPolicyType) IdentityPasswordProcessor(eu.bcvsolutions.idm.core.model.event.processor.identity.IdentityPasswordProcessor) AccIdentityAccountFilter(eu.bcvsolutions.idm.acc.dto.filter.AccIdentityAccountFilter) IdmIdentityDto(eu.bcvsolutions.idm.core.api.dto.IdmIdentityDto) UUID(java.util.UUID) Collectors(java.util.stream.Collectors) List(java.util.List) Component(org.springframework.stereotype.Component) IdmPasswordPolicy(eu.bcvsolutions.idm.core.model.entity.IdmPasswordPolicy) CoreResultCode(eu.bcvsolutions.idm.core.api.domain.CoreResultCode) AccIdentityAccountService(eu.bcvsolutions.idm.acc.service.api.AccIdentityAccountService) IdentityConfiguration(eu.bcvsolutions.idm.core.api.config.domain.IdentityConfiguration) PasswordChangeDto(eu.bcvsolutions.idm.core.api.dto.PasswordChangeDto) Assert(org.springframework.util.Assert) IdmPasswordPolicyService(eu.bcvsolutions.idm.core.api.service.IdmPasswordPolicyService) IdmPasswordPolicyDto(eu.bcvsolutions.idm.core.api.dto.IdmPasswordPolicyDto) IdmPasswordPolicy(eu.bcvsolutions.idm.core.model.entity.IdmPasswordPolicy) ArrayList(java.util.ArrayList) AccIdentityAccountFilter(eu.bcvsolutions.idm.acc.dto.filter.AccIdentityAccountFilter) AccIdentityAccountDto(eu.bcvsolutions.idm.acc.dto.AccIdentityAccountDto)

Example 2 with IdmPasswordPolicy

use of eu.bcvsolutions.idm.core.model.entity.IdmPasswordPolicy in project CzechIdMng by bcvsolutions.

the class DefaultIdmPasswordPolicyService method save.

@Override
@Transactional
public IdmPasswordPolicyDto save(IdmPasswordPolicyDto dto, BasePermission... permission) {
    Assert.notNull(dto);
    // 
    if (!ObjectUtils.isEmpty(permission)) {
        IdmPasswordPolicy persistEntity = null;
        if (dto.getId() != null) {
            persistEntity = this.getEntity(dto.getId());
            if (persistEntity != null) {
                // check access on previous entity - update is needed
                checkAccess(persistEntity, IdmBasePermission.UPDATE);
            }
        }
        // TODO: remove one checkAccess?
        checkAccess(toEntity(dto, persistEntity), permission);
    }
    // 
    LOG.debug("Saving entity [{}]", dto.getName());
    if (isNew(dto)) {
        // throw event with create
        return entityEventProcessorService.process(new PasswordPolicyEvent(PasswordPolicyEvenType.CREATE, dto)).getContent();
    }
    // else throw event with update
    return entityEventProcessorService.process(new PasswordPolicyEvent(PasswordPolicyEvenType.UPDATE, dto)).getContent();
}
Also used : IdmPasswordPolicy(eu.bcvsolutions.idm.core.model.entity.IdmPasswordPolicy) PasswordPolicyEvent(eu.bcvsolutions.idm.core.model.event.PasswordPolicyEvent) Transactional(org.springframework.transaction.annotation.Transactional)

Aggregations

IdmPasswordPolicy (eu.bcvsolutions.idm.core.model.entity.IdmPasswordPolicy)2 AccModuleDescriptor (eu.bcvsolutions.idm.acc.AccModuleDescriptor)1 AccIdentityAccountDto (eu.bcvsolutions.idm.acc.dto.AccIdentityAccountDto)1 AccIdentityAccountFilter (eu.bcvsolutions.idm.acc.dto.filter.AccIdentityAccountFilter)1 ProvisioningEvent (eu.bcvsolutions.idm.acc.event.ProvisioningEvent)1 AccIdentityAccountRepository (eu.bcvsolutions.idm.acc.repository.AccIdentityAccountRepository)1 AccIdentityAccountService (eu.bcvsolutions.idm.acc.service.api.AccIdentityAccountService)1 IdentityConfiguration (eu.bcvsolutions.idm.core.api.config.domain.IdentityConfiguration)1 CoreResultCode (eu.bcvsolutions.idm.core.api.domain.CoreResultCode)1 IdmPasswordPolicyType (eu.bcvsolutions.idm.core.api.domain.IdmPasswordPolicyType)1 PasswordChangeType (eu.bcvsolutions.idm.core.api.domain.PasswordChangeType)1 IdmIdentityDto (eu.bcvsolutions.idm.core.api.dto.IdmIdentityDto)1 IdmPasswordDto (eu.bcvsolutions.idm.core.api.dto.IdmPasswordDto)1 IdmPasswordPolicyDto (eu.bcvsolutions.idm.core.api.dto.IdmPasswordPolicyDto)1 IdmPasswordValidationDto (eu.bcvsolutions.idm.core.api.dto.IdmPasswordValidationDto)1 PasswordChangeDto (eu.bcvsolutions.idm.core.api.dto.PasswordChangeDto)1 CoreEventProcessor (eu.bcvsolutions.idm.core.api.event.CoreEventProcessor)1 DefaultEventResult (eu.bcvsolutions.idm.core.api.event.DefaultEventResult)1 EntityEvent (eu.bcvsolutions.idm.core.api.event.EntityEvent)1 EventResult (eu.bcvsolutions.idm.core.api.event.EventResult)1