package org.apereo.cas.pm;
import org.apereo.cas.configuration.CasConfigurationProperties;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.binding.message.MessageBuilder;
import org.springframework.binding.message.MessageContext;
import org.springframework.binding.validation.ValidationContext;
/**
* This is {@link PasswordValidator}.
*
* @author Misagh Moayyed
* @since 5.0.0
*/
public class PasswordValidator {
@Autowired
private CasConfigurationProperties casProperties;
/**
* Validate cas must change pass view.
*
* @param bean the bean
* @param context the context
*/
public void validateCasMustChangePassView(final PasswordChangeBean bean, final ValidationContext context) {
final MessageContext messages = context.getMessageContext();
if (!bean.getPassword().equals(bean.getConfirmedPassword())) {
messages.addMessage(new MessageBuilder().error().source("pm.passwordsMustMatch").
defaultText("Provided passwords do not match.").build());
return;
}
if (!bean.getPassword().matches(casProperties.getAuthn().getPm().getPolicyPattern())) {
messages.addMessage(new MessageBuilder().error().source("pm.passwordFailedCriteria").
defaultText("Password policy rejected the provided insecure password.").build());
}
}
}