]> WPIA git - gigi.git/blobdiff - src/org/cacert/gigi/util/PasswordStrengthChecker.java
UPD: Implicit mail validity check
[gigi.git] / src / org / cacert / gigi / util / PasswordStrengthChecker.java
index 373079922cb90f0414920bd153d9a63419073ab6..3e4760bbf2b86c47fd53766fbbe5be89b26e0327 100644 (file)
@@ -2,6 +2,7 @@ package org.cacert.gigi.util;
 
 import java.util.regex.Pattern;
 
+import org.cacert.gigi.GigiApiException;
 import org.cacert.gigi.User;
 
 public class PasswordStrengthChecker {
@@ -9,10 +10,12 @@ public class PasswordStrengthChecker {
        static Pattern lower = Pattern.compile("[a-z]");
        static Pattern upper = Pattern.compile("[A-Z]");
        static Pattern whitespace = Pattern.compile("\\s");
-       static Pattern special = Pattern.compile("\\W");
+       static Pattern special = Pattern.compile("(?!\\s)\\W");
+
        private PasswordStrengthChecker() {
        }
-       public static int checkpwlight(String pw) {
+
+       private static int checkpwlight(String pw) {
                int points = 0;
                if (pw.length() > 15) {
                        points++;
@@ -43,7 +46,11 @@ public class PasswordStrengthChecker {
                }
                return points;
        }
+
        public static int checkpw(String pw, User u) {
+               if (pw == null) {
+                       return 0;
+               }
                int light = checkpwlight(pw);
                if (contained(pw, u.getEmail())) {
                        light -= 2;
@@ -63,8 +70,16 @@ public class PasswordStrengthChecker {
                // TODO dictionary check
                return light;
        }
+
+       public static void assertStrongPassword(String pw, User u) throws GigiApiException {
+               if (checkpw(pw, u) < 3) {
+                       throw new GigiApiException("The Pass Phrase you submitted failed to contain enough"
+                               + " differing characters and/or contained words from" + " your name and/or email address.");
+               }
+       }
+
        private static boolean contained(String pw, String check) {
-               if (check == null) {
+               if (check == null || check.equals("")) {
                        return false;
                }
                if (pw.contains(check)) {