X-Git-Url: https://code.wpia.club/?p=gigi.git;a=blobdiff_plain;f=src%2Forg%2Fcacert%2Fgigi%2Fpages%2Fwot%2FAssuranceForm.java;h=558375326a2dd419bd36aa5d1f7642b5488ee586;hp=7d15e8dac5386d25b7179df81805c97ad8a5e1c2;hb=17a15662212d973d12ed4cea3f5eaa9c0d1169ed;hpb=9def69bd08ea69eb27786d5b34f00e154e09e9f3 diff --git a/src/org/cacert/gigi/pages/wot/AssuranceForm.java b/src/org/cacert/gigi/pages/wot/AssuranceForm.java index 7d15e8da..55837532 100644 --- a/src/org/cacert/gigi/pages/wot/AssuranceForm.java +++ b/src/org/cacert/gigi/pages/wot/AssuranceForm.java @@ -17,6 +17,7 @@ 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.SprintfCommand; @@ -48,6 +49,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 +76,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 +104,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 +134,10 @@ public class AssuranceForm extends Form { } @Override - public boolean submit(PrintWriter out, HttpServletRequest req) throws GigiApiException { + public boolean 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 +159,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 +174,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())); } @@ -175,20 +183,32 @@ public class AssuranceForm extends Form { if ( !gae.isEmpty()) { throw gae; } + + LinkedList toAssure = new LinkedList(); 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 (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); + 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()]), cs.getCountry()); + + 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(assuree, req, aword, langApplicant, method, subject); } return true; } + public boolean isWithPasswordReset() { + return aword != null && !aword.equals(""); + } + public User getAssuree() { return assuree; }