@Override public PasswordValidationResult validate( CredentialsInfo credentialsInfo ) { if ( !UPPERCASE_PATTERN.matcher( credentialsInfo.getPassword() ).matches() ) { return new PasswordValidationResult( "Password must have at least one upper case", "password_uppercase_validation",false ); } return new PasswordValidationResult( true ); }
@Override public PasswordValidationResult validate( CredentialsInfo credentialsInfo ) { PasswordValidationResult result; for ( PasswordValidationRule rule : rules ) { if ( rule.isRuleApplicable( credentialsInfo ) ) { result = rule.validate( credentialsInfo ); if ( !result.isValid() ) { return result; } } } return new PasswordValidationResult( true ); } }
@Override public PasswordValidationResult validate( CredentialsInfo credentialsInfo ) { if ( !DIGIT_PATTERN.matcher( credentialsInfo.getPassword() ).matches() ) { return new PasswordValidationResult( "Password must have at least one digit", "password_digit_validation", false ); } return new PasswordValidationResult( true ); }
@Override public PasswordValidationResult validate( CredentialsInfo credentialsInfo ) { if ( !SPECIAL_CHARACTER.matcher( credentialsInfo.getPassword() ).matches() ) { return new PasswordValidationResult( "Password must have at least one special character", "password_specialcharacter_validation",false ); } return new PasswordValidationResult( true ); }
@Override public PasswordValidationResult validate( CredentialsInfo credentialsInfo ) { for ( String reserved : dictionary ) { if ( StringUtils.containsIgnoreCase( credentialsInfo.getPassword(), reserved ) ) { return new PasswordValidationResult( "Password must not have any generic word", "password_dictionary_validation", false ); } } return new PasswordValidationResult( true ); } }
@Override public PasswordValidationResult validate( CredentialsInfo credentialsInfo ) { int minCharLimit = (Integer) systemSettingManager.getSystemSetting( SettingKey.MIN_PASSWORD_LENGTH ); int maxCharLimit = (Integer) systemSettingManager.getSystemSetting( SettingKey.MAX_PASSWORD_LENGTH ); String password = credentialsInfo.getPassword(); if ( password.trim().length() < minCharLimit || password.trim().length() > maxCharLimit ) { return new PasswordValidationResult( String.format( "Password must have at least %d, and at most %d characters", minCharLimit, maxCharLimit ), "password_length_validation", false ); } return new PasswordValidationResult( true ); }
@Override public PasswordValidationResult validate( CredentialsInfo credentialsInfo ) { boolean match; UserCredentials userCredentials = userService.getUserCredentialsByUsername( credentialsInfo.getUsername() ); List<String> previousPasswords = userCredentials.getPreviousPasswords(); for ( String encodedPassword : previousPasswords ) { match = passwordEncoder.matches( credentialsInfo.getPassword(), encodedPassword ); if ( match ) { return new PasswordValidationResult( String.format( "Password must not be one of the previous %d passwords", HISTORY_LIMIT ), "password_history_validation", false ); } } if ( previousPasswords.size() == HISTORY_LIMIT ) { userCredentials.getPreviousPasswords().remove( 0 ); userService.updateUserCredentials( userCredentials ); } return new PasswordValidationResult( true ); }
@Override public PasswordValidationResult validate( CredentialsInfo credentialsInfo ) { String email = credentialsInfo.getEmail(); String password = credentialsInfo.getPassword(); String username = credentialsInfo.getUsername(); if ( StringUtils.containsIgnoreCase( password, StringUtils.defaultIfEmpty( username, null ) ) || StringUtils.containsIgnoreCase( password, StringUtils.defaultIfEmpty( email, null ) ) ) { return new PasswordValidationResult( "Username/Email must not be a part of password", "password_username_validation", false ); } return new PasswordValidationResult( true ); } }