package com.enonic.cms.core.security.userstore.connector; import com.enonic.cms.api.plugin.ext.auth.Authenticator; import com.enonic.cms.api.plugin.ext.auth.AuthenticationResult; import com.enonic.cms.core.plugin.ext.AuthenticatorExtensions; public final class AuthenticationChain { private final AuthenticatorExtensions interceptors; public AuthenticationChain( final AuthenticatorExtensions interceptors ) { this.interceptors = interceptors; } public AuthenticationResult authenticate( final String userStore, final String userName, final String password ) { if ( this.interceptors.isEmpty() ) { return AuthenticationResult.CONTINUE; } final AuthenticationTokenImpl token = new AuthenticationTokenImpl( userStore, userName, password ); for ( final Authenticator interceptor : this.interceptors ) { final AuthenticationResult result = interceptor.authenticate( token ); if ( result != AuthenticationResult.CONTINUE ) { return result; } } return AuthenticationResult.CONTINUE; } }