package net.unicon.cas.addons.authentication.principal;
import net.unicon.cas.addons.authentication.principal.util.PrincipalUtils;
import org.apache.commons.lang.StringUtils;
import org.jasig.cas.authentication.principal.AbstractPersonDirectoryCredentialsToPrincipalResolver;
import org.jasig.cas.authentication.principal.Credentials;
import org.jasig.cas.authentication.principal.UsernamePasswordCredentials;
/**
* An implementation of the {@link AbstractPersonDirectoryCredentialsToPrincipalResolver} that accepts an email address
* as the {@link UsernamePasswordCredentials}'s username and resolves it back to the user id.
* <p>Note: this API is only intended to be called by CAS server code e.g. any custom CAS server overlay extension, etc.</p>
*
* @author <a href="mailto:mmoayyed@unicon.net">Misagh Moayyed</a>
* @author Unicon, inc.
* @since 0.6
*/
public class EmailAddressPasswordCredentialsToPrincipalResolver extends AbstractPersonDirectoryCredentialsToPrincipalResolver {
@Override
public boolean supports(final Credentials credentials) {
return credentials != null && UsernamePasswordCredentials.class.isAssignableFrom(credentials.getClass());
}
@Override
protected String extractPrincipalId(final Credentials credentials) {
if (credentials == null) {
return null;
}
final UsernamePasswordCredentials usernamePasswordCredentials = (UsernamePasswordCredentials) credentials;
if (StringUtils.isBlank(usernamePasswordCredentials.getUsername())) {
return null;
}
return PrincipalUtils.parseNamePartFromEmailAddressIfNecessary(usernamePasswordCredentials.getUsername());
}
}