]> WPIA git - gigi.git/blobdiff - src/org/cacert/gigi/pages/wot/AssuranceForm.java
fix: prevent assuring no names when submitting verification form
[gigi.git] / src / org / cacert / gigi / pages / wot / AssuranceForm.java
index 7d15e8dac5386d25b7179df81805c97ad8a5e1c2..aca82b917b68fbf6c2433712af1186b930b6ef72 100644 (file)
@@ -167,7 +167,8 @@ public class AssuranceForm extends Form {
                 gae.mergeInto(new GigiApiException("The points entered were not a number."));
             }
         }
-        HashSet<String> data = new HashSet<>(Arrays.asList(req.getParameterValues("assuredName")));
+        String[] parameterValues = req.getParameterValues("assuredName");
+        HashSet<String> data = new HashSet<>(Arrays.asList(parameterValues == null ? new String[0] : parameterValues));
         for (int i = 0; i < assureeNames.length; i++) {
             selected[i] = data.contains(Integer.toString(assureeNames[i].getId()));
         }
@@ -175,16 +176,24 @@ public class AssuranceForm extends Form {
         if ( !gae.isEmpty()) {
             throw gae;
         }
+
+        LinkedList<Name> toAssure = new LinkedList<Name>();
         for (int i = 0; i < selected.length; i++) {
             if (selected[i]) {
-                Notary.assure(assurer, assuree, assureeNames[i], dob, pointsI, location, req.getParameter("date"), type);
+                toAssure.add(assureeNames[i]);
             }
         }
+        if (toAssure.size() == 0) {
+            throw new GigiApiException("You must confirm at least one name to verify an account.");
+        }
+
+        Notary.assureAll(assurer, assuree, dob, pointsI, location, req.getParameter("date"), type, toAssure.toArray(new Name[toAssure.size()]));
+
         if (aword != null && !aword.equals("")) {
-            Language l = Language.getInstance(assuree.getPreferredLocale());
-            String method = l.getTranslation("A password reset was triggered. If you did a password reset by assurance, please enter your secret password using this form:");
-            String subject = l.getTranslation("Password reset by assurance");
-            PasswordResetPage.initPasswordResetProcess(out, assuree, req, aword, l, method, subject);
+            Language langApplicant = Language.getInstance(assuree.getPreferredLocale());
+            String method = langApplicant.getTranslation("A password reset was triggered. If you did a password reset by assurance, please enter your secret password using this form:");
+            String subject = langApplicant.getTranslation("Password reset by assurance");
+            PasswordResetPage.initPasswordResetProcess(out, assuree, req, aword, langApplicant, method, subject);
         }
         return true;
     }