Ivelin_1936

class

Apr 3rd, 2018
149
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.12 KB | None | 0 0
  1. package users.system.validators;
  2.  
  3. import org.springframework.stereotype.Component;
  4.  
  5. import javax.validation.ConstraintValidator;
  6. import javax.validation.ConstraintValidatorContext;
  7. import java.util.regex.Matcher;
  8. import java.util.regex.Pattern;
  9.  
  10. @Component
  11. public class PasswordValidator implements ConstraintValidator<Password, String> {
  12.  
  13.     private boolean containsDigits;
  14.     private boolean containsUppercase;
  15.     private boolean containsLowercase;
  16.     private boolean containsSpecialSymbols;
  17.     private int minLength;
  18.     private int maxLength;
  19.  
  20.     @Override
  21.     public void initialize(Password password) {
  22.         this.containsDigits = password.containsDigit();
  23.         this.containsUppercase = password.containsUppercase();
  24.         this.containsLowercase = password.containsLowercase();
  25.         this.containsSpecialSymbols = password.containsSpecialSymbols();
  26.         this.minLength = password.minLength();
  27.         this.maxLength = password.maxLength();
  28.     }
  29.  
  30.     @Override
  31.     public boolean isValid(String password, ConstraintValidatorContext constraintValidatorContext) {
  32.  
  33.         if (password.length() < this.minLength || password.length() > this.maxLength) {
  34.             return false;
  35.         }
  36.  
  37.         Pattern lowerLetter = Pattern.compile("[a-z]");
  38.         Matcher matcherLower = lowerLetter.matcher(password);
  39.         if (!matcherLower.find() && this.containsLowercase) {
  40.             return false;
  41.         }
  42.  
  43.         Pattern upperLetter = Pattern.compile("[A-Z]");
  44.         Matcher matcherUpper = upperLetter.matcher(password);
  45.         if (!matcherUpper.find() && this.containsUppercase) {
  46.             return false;
  47.         }
  48.  
  49.         Pattern number = Pattern.compile("[0-9]");
  50.         Matcher matcherNumber = number.matcher(password);
  51.         if (!matcherNumber.find() && this.containsDigits) {
  52.             return false;
  53.         }
  54.  
  55.         Pattern symbol = Pattern.compile("[!@#$%^&*()_+<>?]");
  56.         Matcher matcherSymbol = symbol.matcher(password);
  57.         if (!matcherSymbol.find() && this.containsSpecialSymbols) {
  58.             return false;
  59.         }
  60.  
  61.         return true;
  62.     }
  63. }
Advertisement
Add Comment
Please, Sign In to add comment