/*
* Copyright (c) 2014 EMC Corporation
* All Rights Reserved
*/
package com.emc.storageos.security.password.rules;
import com.emc.storageos.db.client.model.PasswordHistory;
import com.emc.storageos.security.password.Password;
import com.emc.storageos.svcs.errorhandling.resources.BadRequestException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.Calendar;
public class ExpireRule implements Rule {
private static final Logger _log = LoggerFactory.getLogger(ExpireRule.class);
private int expireTime = 5;
/**
* expire time: in days
*
* @param expireTime
*/
public ExpireRule(int expireTime) {
this.expireTime = expireTime;
}
/**
* validate if password expired
*
* @param password
*/
@Override
public void validate(Password password) {
if (expireTime == 0) {
return;
}
String username = password.getUsername();
if (username == null || username.trim().length() == 0) {
return;
}
PasswordHistory ph = password.getPasswordHistory();
if (ph == null) {
return;
}
Calendar expireDate = ph.getExpireDate();
Calendar now = Calendar.getInstance();
if (expireDate == null) {
Long lastChangedTime = password.getLatestChangedTime();
expireDate = Calendar.getInstance();
expireDate.setTimeInMillis(lastChangedTime);
expireDate.add(Calendar.DATE, expireTime);
}
_log.info("now: " + now + ", " + username + " expire date: " + expireDate);
if (expireDate.before(now)) {
_log.info("fail");
throw BadRequestException.badRequests.passwordExpired(expireTime);
} else {
_log.info("pass");
}
}
}