package com.mossle.security.status;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class UserStatusValidater {
public static final int STATUS_ENABLE = 0;
public static final int STATUS_ACCOUNT_EXPIRED = 1;
public static final int STATUS_ACCOUNT_LOCKED = 1 << 1;
public static final int STATUS_CREDENTAIL_EXPIRED = 1 << 2;
private Logger logger = LoggerFactory.getLogger(UserStatusValidater.class);
public void validate(String username, int status) {
if (status == STATUS_ENABLE) {
return;
} else if (this.isMatch(status, STATUS_ACCOUNT_EXPIRED)) {
throw new AccountExpiredException(username + " is expired.");
} else if (this.isMatch(status, STATUS_ACCOUNT_LOCKED)) {
throw new AccountLockedException(username + " is locked.");
} else if (this.isMatch(status, STATUS_CREDENTAIL_EXPIRED)) {
throw new CredentialExpiredException(username
+ "'s credential is expired.");
} else {
logger.warn("unkown status : {}", status);
throw new UserStatusException(username + "'s status is invalid.");
}
}
private boolean isMatch(int status, int mask) {
return (status & mask) != 0;
}
}