package com.mossle.user.authenticate; import javax.annotation.Resource; import com.mossle.api.user.AccountStatus; import com.mossle.api.user.AuthenticationHandler; import com.mossle.api.user.AuthenticationType; import com.mossle.user.persistence.manager.AccountCredentialManager; import com.mossle.user.persistence.manager.AccountInfoManager; public class SpecialOrNormalAuthenticationHandler implements AuthenticationHandler { private AccountInfoManager accountInfoManager; private AccountCredentialManager accountCredentialManager; private AuthenticationHandler specialAuthenticationHandler; private AuthenticationHandler normalAuthenticationHandler; public boolean support(String type) { return AuthenticationType.SPECIAL_OR_NORMAL.equals(type); } public String doAuthenticate(String username, String password, String application) { String result = specialAuthenticationHandler.doAuthenticate(username, password, application); if (AccountStatus.PASSWORD_NOT_EXISTS.equals(result)) { return normalAuthenticationHandler.doAuthenticate(username, password, application); } return result; } @Resource public void setSpecialAuthenticationHandler( AuthenticationHandler specialAuthenticationHandler) { this.specialAuthenticationHandler = specialAuthenticationHandler; } @Resource public void setNormalAuthenticationHandler( AuthenticationHandler normalAuthenticationHandler) { this.normalAuthenticationHandler = normalAuthenticationHandler; } }