package com.mossle.user.support;
import java.util.List;
import javax.annotation.Resource;
import com.mossle.api.user.AccountStatus;
import com.mossle.api.user.AccountStatusHelper;
import com.mossle.api.user.AuthenticationClient;
import com.mossle.api.user.AuthenticationHandler;
import com.mossle.core.auth.CustomPasswordEncoder;
import com.mossle.user.persistence.manager.AccountCredentialManager;
import com.mossle.user.persistence.manager.AccountInfoManager;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class DefaultAuthenticationClient implements AuthenticationClient {
private static Logger logger = LoggerFactory
.getLogger(DefaultAuthenticationClient.class);
private AccountInfoManager accountInfoManager;
private AccountCredentialManager accountCredentialManager;
private CustomPasswordEncoder customPasswordEncoder;
private AccountStatusHelper accountStatusHelper;
private List<AuthenticationHandler> authenticationHandlers;
public String doAuthenticate(String username, String password, String type,
String application) {
boolean locked = accountStatusHelper.isLocked(username, application);
if (locked) {
return AccountStatus.LOCKED;
}
String result = AccountStatus.FAILURE;
for (AuthenticationHandler authenticationHandler : authenticationHandlers) {
if (authenticationHandler.support(type)) {
result = authenticationHandler.doAuthenticate(username,
password, application);
break;
}
}
if (!AccountStatus.SUCCESS.equals(result)) {
return result;
}
String status = accountStatusHelper.getAccountStatus(username,
application);
return status;
}
@Resource
public void setAccountInfoManager(AccountInfoManager accountInfoManager) {
this.accountInfoManager = accountInfoManager;
}
@Resource
public void setAccountCredentialManager(
AccountCredentialManager accountCredentialManager) {
this.accountCredentialManager = accountCredentialManager;
}
@Resource
public void setCustomPasswordEncoder(
CustomPasswordEncoder customPasswordEncoder) {
this.customPasswordEncoder = customPasswordEncoder;
}
@Resource
public void setAccountStatusHelper(AccountStatusHelper accountStatusHelper) {
this.accountStatusHelper = accountStatusHelper;
}
public void setAuthenticationHandlers(
List<AuthenticationHandler> authenticationHandlers) {
this.authenticationHandlers = authenticationHandlers;
}
}