]> WPIA git - gigi.git/blobdiff - src/org/cacert/gigi/util/PasswordStrengthChecker.java
Empty: rename fname,mname,lname,dob
[gigi.git] / src / org / cacert / gigi / util / PasswordStrengthChecker.java
index 0f72664e5b823b131b46e2f88f6e28e70f0cf187..6ae79181087b574cb9c12937a6b00fd1d939552b 100644 (file)
@@ -2,77 +2,95 @@ package org.cacert.gigi.util;
 
 import java.util.regex.Pattern;
 
-import org.cacert.gigi.User;
+import org.cacert.gigi.GigiApiException;
+import org.cacert.gigi.dbObjects.User;
 
 public class PasswordStrengthChecker {
-       static Pattern digits = Pattern.compile("\\d");
-       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");
-       private PasswordStrengthChecker() {
-       }
-       public static int checkpwlight(String pw) {
-               int points = 0;
-               if (pw.length() > 15) {
-                       points++;
-               }
-               if (pw.length() > 20) {
-                       points++;
-               }
-               if (pw.length() > 25) {
-                       points++;
-               }
-               if (pw.length() > 30) {
-                       points++;
-               }
-               if (digits.matcher(pw).find()) {
-                       points++;
-               }
-               if (lower.matcher(pw).find()) {
-                       points++;
-               }
-               if (upper.matcher(pw).find()) {
-                       points++;
-               }
-               if (special.matcher(pw).find()) {
-                       points++;
-               }
-               if (whitespace.matcher(pw).find()) {
-                       points++;
-               }
-               return points;
-       }
-       public static int checkpw(String pw, User u) {
-               int light = checkpwlight(pw);
-               if (contained(pw, u.getEmail())) {
-                       light -= 2;
-               }
-               if (contained(pw, u.getFname())) {
-                       light -= 2;
-               }
-               if (contained(pw, u.getLname())) {
-                       light -= 2;
-               }
-               if (contained(pw, u.getMname())) {
-                       light -= 2;
-               }
-               if (contained(pw, u.getSuffix())) {
-                       light -= 2;
-               }
-               // TODO dictionary check
-               return light;
-       }
-       private static boolean contained(String pw, String check) {
-               if (check == null || check.equals("")) {
-                       return false;
-               }
-               if (pw.contains(check)) {
-                       return true;
-               }
-               if (check.contains(pw)) {
-                       return true;
-               }
-               return false;
-       }
+
+    private static Pattern digits = Pattern.compile("\\d");
+
+    private static Pattern lower = Pattern.compile("[a-z]");
+
+    private static Pattern upper = Pattern.compile("[A-Z]");
+
+    private static Pattern whitespace = Pattern.compile("\\s");
+
+    private static Pattern special = Pattern.compile("(?!\\s)\\W");
+
+    private PasswordStrengthChecker() {}
+
+    private static int checkpwlight(String pw) {
+        int points = 0;
+        if (pw.length() > 15) {
+            points++;
+        }
+        if (pw.length() > 20) {
+            points++;
+        }
+        if (pw.length() > 25) {
+            points++;
+        }
+        if (pw.length() > 30) {
+            points++;
+        }
+        if (digits.matcher(pw).find()) {
+            points++;
+        }
+        if (lower.matcher(pw).find()) {
+            points++;
+        }
+        if (upper.matcher(pw).find()) {
+            points++;
+        }
+        if (special.matcher(pw).find()) {
+            points++;
+        }
+        if (whitespace.matcher(pw).find()) {
+            points++;
+        }
+        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;
+        }
+        if (contained(pw, u.getFName())) {
+            light -= 2;
+        }
+        if (contained(pw, u.getLName())) {
+            light -= 2;
+        }
+        if (contained(pw, u.getMName())) {
+            light -= 2;
+        }
+        if (contained(pw, u.getSuffix())) {
+            light -= 2;
+        }
+        // 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 || check.equals("")) {
+            return false;
+        }
+        if (pw.contains(check)) {
+            return true;
+        }
+        if (check.contains(pw)) {
+            return true;
+        }
+        return false;
+    }
 }