X-Git-Url: https://code.wpia.club/?p=gigi.git;a=blobdiff_plain;f=src%2Forg%2Fcacert%2Fgigi%2Fpages%2Fwot%2FAssuranceForm.java;h=b46dfdd530637785a4fcb10b974f8b0459a34061;hp=9e69bd2f4affed6eb79a427d78e379cee153719c;hb=abff88a2bf173198fe55c35ead97c9c7cdb5924c;hpb=adaf867aa0aebdf1278b46eba300acc1a0760a9e diff --git a/src/org/cacert/gigi/pages/wot/AssuranceForm.java b/src/org/cacert/gigi/pages/wot/AssuranceForm.java index 9e69bd2f..b46dfdd5 100644 --- a/src/org/cacert/gigi/pages/wot/AssuranceForm.java +++ b/src/org/cacert/gigi/pages/wot/AssuranceForm.java @@ -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 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 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!")); @@ -152,14 +180,14 @@ public class AssuranceForm extends Form { try { type = AssuranceType.valueOf(val); } catch (IllegalArgumentException e) { - gae.mergeInto(new GigiApiException("Assurance Type wrong.")); + gae.mergeInto(new GigiApiException("Verification Type wrong.")); } } int pointsI = 0; String points = req.getParameter("points"); if (points == null || "".equals(points)) { - gae.mergeInto(new GigiApiException("For an assurance, you need to enter points.")); + gae.mergeInto(new GigiApiException("For a verification, you need to enter points.")); } else { try { pointsI = Integer.parseInt(points); @@ -167,7 +195,8 @@ public class AssuranceForm extends Form { gae.mergeInto(new GigiApiException("The points entered were not a number.")); } } - HashSet data = new HashSet<>(Arrays.asList(req.getParameterValues("assuredName"))); + String[] parameterValues = req.getParameterValues("assuredName"); + HashSet 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())); } @@ -182,16 +211,24 @@ public class AssuranceForm extends Form { 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("")) { + 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 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); + 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(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() {