Skip to content

Commit

Permalink
Merge branch 'master' of https://github.com/Evolveum/midpoint
Browse files Browse the repository at this point in the history
  • Loading branch information
mederly committed Sep 9, 2014
2 parents 22e58ad + c2398ea commit ebbde05
Showing 1 changed file with 24 additions and 0 deletions.
Expand Up @@ -26,10 +26,13 @@

import com.evolveum.midpoint.common.policy.PasswordPolicyUtils;
import com.evolveum.midpoint.model.api.PolicyViolationException;
import com.evolveum.midpoint.model.api.context.ModelState;
import com.evolveum.midpoint.model.impl.ModelObjectResolver;
import com.evolveum.midpoint.model.impl.lens.LensContext;
import com.evolveum.midpoint.model.impl.lens.LensFocusContext;
import com.evolveum.midpoint.model.impl.lens.LensObjectDeltaOperation;
import com.evolveum.midpoint.model.impl.lens.LensProjectionContext;
import com.evolveum.midpoint.model.impl.lens.LensUtil;
import com.evolveum.midpoint.prism.PrismContainer;
import com.evolveum.midpoint.prism.PrismObject;
import com.evolveum.midpoint.prism.PrismProperty;
Expand Down Expand Up @@ -117,6 +120,12 @@ <F extends FocusType> void processPasswordPolicy(LensFocusContext<F> focusContex
if (user != null) {
password = user.findProperty(SchemaConstants.PATH_PASSWORD_VALUE);
}
if (password == null){
if (wasExecuted(userDelta, focusContext)){
LOGGER.trace("Skipping processing password policies. User addition was already executed.");
return;
}
}
} else if (ChangeType.MODIFY == userDelta.getChangeType()) {
PropertyDelta<PasswordType> passwordValueDelta = null;
if (userDelta != null) {
Expand All @@ -138,6 +147,7 @@ <F extends FocusType> void processPasswordPolicy(LensFocusContext<F> focusContex
}
}
}

ValuePolicyType passwordPolicy = null;
if (focusContext.getOrgPasswordPolicy() == null){
passwordPolicy = determineValuePolicy(userDelta, focusContext.getObjectAny(), context, result);
Expand All @@ -149,6 +159,20 @@ <F extends FocusType> void processPasswordPolicy(LensFocusContext<F> focusContex
processPasswordPolicy(passwordPolicy, password, result);

}

private <F extends FocusType> boolean wasExecuted(ObjectDelta<UserType> userDelta, LensFocusContext<F> focusContext){

for (LensObjectDeltaOperation<F> executedDeltaOperation : focusContext.getExecutedDeltas()){
ObjectDelta<F> executedDelta = executedDeltaOperation.getObjectDelta();
if (!executedDelta.isAdd()){
continue;
} else if (executedDelta.getObjectToAdd() != null && executedDelta.getObjectTypeClass().equals(UserType.class)){
return true;
}
}

return false;
}

//TODO: maybe some caching of orgs?????
private <T extends ObjectType, F extends ObjectType> ValuePolicyType determineValuePolicy(ObjectDelta<UserType> userDelta, PrismObject<T> object, LensContext<F> context, OperationResult result) throws SchemaException{
Expand Down

0 comments on commit ebbde05

Please sign in to comment.