package com.mossle.user.support;
import java.util.Date;
import javax.annotation.Resource;
import com.mossle.api.user.AccountStatus;
import com.mossle.api.user.TemporaryPasswordAuthenticator;
import com.mossle.core.util.RandomCode;
import com.mossle.user.persistence.domain.AccountCredential;
import com.mossle.user.persistence.domain.AccountInfo;
import com.mossle.user.persistence.manager.AccountCredentialManager;
import com.mossle.user.persistence.manager.AccountInfoManager;
public class TemporaryPasswordAuthenticatorImpl implements
TemporaryPasswordAuthenticator {
private AccountInfoManager accountInfoManager;
private AccountCredentialManager accountCredentialManager;
public String authenticate(String userId, String password) {
AccountInfo accountInfo = accountInfoManager
.get(Long.parseLong(userId));
String hql = "from AccountCredential where accountInfo=? and type='temporary'";
AccountCredential accountCredential = accountCredentialManager
.findUnique(hql, accountInfo);
if (accountCredential == null) {
return AccountStatus.PASSWORD_NOT_EXISTS;
}
if (!accountCredential.getPassword().equals(password)) {
return AccountStatus.BAD_CREDENTIALS;
}
if (accountCredential.getExpireTime().before(new Date())) {
return AccountStatus.PASSWORD_EXPIRED;
}
return AccountStatus.SUCCESS;
}
@Resource
public void setAccountInfoManager(AccountInfoManager accountInfoManager) {
this.accountInfoManager = accountInfoManager;
}
@Resource
public void setAccountCredentialManager(
AccountCredentialManager accountCredentialManager) {
this.accountCredentialManager = accountCredentialManager;
}
}