package com.mossle.user.support; import java.util.Date; import javax.annotation.Resource; import com.mossle.api.user.AccountStatus; import com.mossle.api.user.AccountStatusHelper; import com.mossle.user.persistence.domain.AccountCredential; import com.mossle.user.persistence.domain.AccountInfo; import com.mossle.user.persistence.domain.AccountLockInfo; import com.mossle.user.persistence.manager.AccountCredentialManager; import com.mossle.user.persistence.manager.AccountInfoManager; import com.mossle.user.persistence.manager.AccountLockInfoManager; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class LocalAccountStatusHelper implements AccountStatusHelper { private static Logger logger = LoggerFactory .getLogger(LocalAccountStatusHelper.class); private AccountInfoManager accountInfoManager; private AccountCredentialManager accountCredentialManager; private AccountLockInfoManager accountLockInfoManager; public boolean isLocked(String username, String application) { AccountLockInfo accountLockInfo = accountLockInfoManager.findUnique( "from AccountLockInfo where username=? and type=?", username, application); return accountLockInfo != null; } public String getAccountStatus(String username, String application) { AccountInfo accountInfo = accountInfoManager.findUnique( "from AccountInfo where username=?", username); if (!"1".equals(accountInfo.getStatus())) { return AccountStatus.ACCOUNT_DISABLED; } Date now = new Date(); try { // account expire Date accountExpireDate = accountInfo.getCloseTime(); if ((accountExpireDate != null) && accountExpireDate.before(now)) { return AccountStatus.ACCOUNT_EXPIRED; } } catch (Exception ex) { logger.debug(ex.getMessage(), ex); } // TODO: password must change try { AccountCredential accountCredential = accountCredentialManager .findUnique("from AccountCredential from accountInfo=? and catalog='normal'"); // password expire Date passwordExpireDate = accountCredential.getExpireTime(); if ((passwordExpireDate != null) && passwordExpireDate.before(now)) { return AccountStatus.PASSWORD_EXPIRED; } } catch (Exception ex) { logger.debug(ex.getMessage(), ex); } return AccountStatus.ENABLED; } @Resource public void setAccountInfoManager(AccountInfoManager accountInfoManager) { this.accountInfoManager = accountInfoManager; } @Resource public void setAccountCredentialManager( AccountCredentialManager accountCredentialManager) { this.accountCredentialManager = accountCredentialManager; } @Resource public void setAccountLockInfoManager( AccountLockInfoManager accountLockInfoManager) { this.accountLockInfoManager = accountLockInfoManager; } }