package org.apereo.cas.authentication.support;
import java.util.List;
import javax.security.auth.login.LoginException;
import org.apereo.cas.authentication.MessageDescriptor;
import org.ldaptive.auth.AuthenticationResponse;
/**
* Strategy pattern for handling directory-specific account state data.
*
* @author Marvin S. Addison
* @since 4.0.0
*/
public interface AccountStateHandler {
/**
* Handles the account state producing an error or warning messages as appropriate to the state.
*
* @param response LDAP authentication response containing attributes, response controls, and account state that
* can be used to determine user account state.
* @param configuration Password policy configuration.
*
* @return List of warning messages.
*
* @throws LoginException When account state causes authentication failure.
*/
List<MessageDescriptor> handle(AuthenticationResponse response, LdapPasswordPolicyConfiguration configuration)
throws LoginException;
}