package org.apereo.cas.authentication;
import org.springframework.core.Ordered;
/**
* An extension point to the Authentication process that allows CAS to provide
* additional attributes related to the overall Authentication (such as
* authentication type) that are specific to the Authentication request versus
* the Principal itself.
*
* @author Scott Battaglia
* @author Marvin S. Addison
* @since 3.0.0
*/
public interface AuthenticationMetaDataPopulator extends Ordered {
/**
* Adds authentication metadata attributes on successful authentication of the given credential.
*
* @param builder Builder object that temporarily holds authentication metadata.
* @param transaction The authentication transaction.
*/
void populateAttributes(AuthenticationBuilder builder, AuthenticationTransaction transaction);
/**
* Determines whether the populator has the capability to perform tasks on the given credential.
* In practice, the {@link #populateAttributes(AuthenticationBuilder, AuthenticationTransaction)} needs to be able
* to operate on said credentials only if the return result here is {@code true}.
*
* @param credential The credential to check.
* @return True if populator supports the Credential, false otherwise.
* @since 4.1.0
*/
boolean supports(Credential credential);
@Override
default int getOrder() {
return Ordered.HIGHEST_PRECEDENCE;
}
}