Ir al contenido
Otras versiones

Cargando…

Creating your own password validator

Esta página aún no está disponible en tu idioma.

You can create your own password validation. The new password validator class must implement the PasswordValidator interface:

public interface PasswordValidator {
/**
* Validate
*
* @param password
* @throws ValidatorException
*/
public void Validate(String password) throws ValidatorException;
}

CompletePasswordValidator class:

/**
* Complex password validator
*/
public class CompletePasswordValidator implements PasswordValidator {
@SuppressWarnings("unused")
private static Logger log = LoggerFactory.getLogger(CompletePasswordValidator.class);
@Override
public void Validate(String password) throws ValidatorException {
validateLength(password);
checkLowerCase(password);
checkUpperCase(password);
checkDigits(password);
checkSpecial(password);
}
/**
* Validate length
*/
private void validateLength(String password) throws ValidatorException {
if (Config.VALIDATOR_PASSWORD_MIN_LENGTH > 0 &&
password.length() < Config.VALIDATOR_PASSWORD_MIN_LENGTH) {
throw new ValidatorException(Config.VALIDATOR_PASSWORD_ERROR_MIN_LENGTH);
}
if (Config.VALIDATOR_PASSWORD_MAX_LENGTH > 0 &&
password.length() > Config.VALIDATOR_PASSWORD_MAX_LENGTH) {
throw new ValidatorException(Config.VALIDATOR_PASSWORD_ERROR_MAX_LENGTH);
}
}
/**
* Validate lowercase characters
*/
private void checkLowerCase(String password) throws ValidatorException {
int count = 0;
if (Config.VALIDATOR_PASSWORD_MIN_LOWERCASE > 0) {
for (int i=0; i<password.length(); i++) {
if (Character.isLowerCase(password.charAt(i))) {
count ++;
}
}
if (Config.VALIDATOR_PASSWORD_MIN_LOWERCASE > count) {
throw new ValidatorException(Config.VALIDATOR_PASSWORD_ERROR_MIN_LOWERCASE);
}
}
}
/**
* Validate uppercase characters
*/
private void checkUpperCase(String password) throws ValidatorException {
int count = 0;
if (Config.VALIDATOR_PASSWORD_MIN_UPPERCASE > 0) {
for (int i=0; i<password.length(); i++) {
if (Character.isUpperCase(password.charAt(i))) {
count ++;
}
}
if (Config.VALIDATOR_PASSWORD_MIN_UPPERCASE > count) {
throw new ValidatorException(Config.VALIDATOR_PASSWORD_ERROR_MIN_UPPERCASE);
}
}
}
/**
* Validate digits
*/
private void checkDigits(String password) throws ValidatorException {
int count = 0;
if (Config.VALIDATOR_PASSWORD_MIN_DIGITS > 0) {
for (int i=0; i<password.length(); i++) {
if (Character.isDigit(password.charAt(i))) {
count ++;
}
}
if (Config.VALIDATOR_PASSWORD_MIN_DIGITS > count) {
throw new ValidatorException(Config.VALIDATOR_PASSWORD_ERROR_MIN_DIGITS);
}
}
}
/**
* Validate special characters
*/
private void checkSpecial(String password) throws ValidatorException {
int count = 0;
if (Config.VALIDATOR_PASSWORD_MIN_SPECIAL > 0) {
for (int i=0; i<password.length(); i++) {
if (!Character.isLetterOrDigit(password.charAt(i)) &&
!Character.isWhitespace(password.charAt(i))) {
count ++;
}
}
if (Config.VALIDATOR_PASSWORD_MIN_SPECIAL > count) {
throw new ValidatorException(Config.VALIDATOR_PASSWORD_ERROR_MIN_SPECIAL);
}
}
}
}