]> WPIA git - gigi.git/blobdiff - src/org/cacert/gigi/pages/wot/AssuranceForm.java
upd: enforce a more strict Form call pattern.
[gigi.git] / src / org / cacert / gigi / pages / wot / AssuranceForm.java
index e5521dab20b3ca251798811995d5c048502bad74..b46dfdd530637785a4fcb10b974f8b0459a34061 100644 (file)
@@ -17,10 +17,13 @@ import org.cacert.gigi.dbObjects.Name;
 import org.cacert.gigi.dbObjects.User;
 import org.cacert.gigi.localisation.Language;
 import org.cacert.gigi.output.ArrayIterable;
+import org.cacert.gigi.output.CountrySelector;
 import org.cacert.gigi.output.template.Form;
 import org.cacert.gigi.output.template.IterableDataset;
+import org.cacert.gigi.output.template.Outputable;
 import org.cacert.gigi.output.template.SprintfCommand;
 import org.cacert.gigi.output.template.Template;
+import org.cacert.gigi.output.template.TranslateCommand;
 import org.cacert.gigi.pages.Page;
 import org.cacert.gigi.pages.PasswordResetPage;
 import org.cacert.gigi.util.DayDate;
@@ -28,6 +31,25 @@ import org.cacert.gigi.util.Notary;
 
 public class AssuranceForm extends Form {
 
+    public static class ConcatOutputable implements Outputable {
+
+        private Outputable[] outputables;
+
+        public ConcatOutputable(Outputable... outputables) {
+            this.outputables = outputables;
+        }
+
+        @Override
+        public void output(PrintWriter out, Language l, Map<String, Object> vars) {
+            for (int i = 0; i < outputables.length; i++) {
+                if (i != 0) {
+                    out.println();
+                }
+                outputables[i].output(out, l, vars);
+            }
+        }
+    }
+
     private User assuree;
 
     private Name[] assureeNames;
@@ -48,6 +70,8 @@ public class AssuranceForm extends Form {
 
     private static final Template templ = new Template(AssuranceForm.class.getResource("AssuranceForm.templ"));
 
+    private CountrySelector cs;
+
     public AssuranceForm(HttpServletRequest hsr, User assuree) throws GigiApiException {
         super(hsr);
         assurer = Page.getUser(hsr);
@@ -73,6 +97,7 @@ public class AssuranceForm extends Form {
         assureeNames = names.toArray(new Name[names.size()]);
         dob = this.assuree.getDoB();
         selected = new boolean[assureeNames.length];
+        cs = new CountrySelector("countryCode", false);
     }
 
     SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
@@ -100,6 +125,8 @@ public class AssuranceForm extends Form {
         res.put("location", location);
         res.put("date", date);
         res.put("aword", aword);
+        res.put("countryCode", cs);
+
         final LinkedList<AssuranceType> ats = new LinkedList<>();
         for (AssuranceType at : AssuranceType.values()) {
             try {
@@ -128,9 +155,10 @@ public class AssuranceForm extends Form {
     }
 
     @Override
-    public boolean submit(PrintWriter out, HttpServletRequest req) throws GigiApiException {
+    public SubmissionResult submit(HttpServletRequest req) throws GigiApiException {
         location = req.getParameter("location");
         date = req.getParameter("date");
+        cs.update(req);
         GigiApiException gae = new GigiApiException();
         if (date == null || location == null) {
             gae.mergeInto(new GigiApiException("You need to enter location and date!"));
@@ -187,15 +215,20 @@ public class AssuranceForm extends Form {
             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("")) {
+        Notary.assureAll(assurer, assuree, dob, pointsI, location, req.getParameter("date"), type, toAssure.toArray(new Name[toAssure.size()]), cs.getCountry());
+        Outputable result = new TranslateCommand("Verification complete.");
+        if (isWithPasswordReset()) {
             Language langApplicant = Language.getInstance(assuree.getPreferredLocale());
             String method = langApplicant.getTranslation("A password reset was triggered. If you did a password reset by verification, please enter your secret password using this form:");
             String subject = langApplicant.getTranslation("Password reset by verification");
-            PasswordResetPage.initPasswordResetProcess(out, assuree, req, aword, langApplicant, method, subject);
+            PasswordResetPage.initPasswordResetProcess(assuree, req, aword, langApplicant, method, subject);
+            result = new ConcatOutputable(result, new TranslateCommand("Password reset successful."));
         }
-        return true;
+        return new SuccessMessageResult(result);
+    }
+
+    public boolean isWithPasswordReset() {
+        return aword != null && !aword.equals("");
     }
 
     public User getAssuree() {