X-Git-Url: https://code.wpia.club/?a=blobdiff_plain;f=src%2Forg%2Fcacert%2Fgigi%2Fpages%2Fmain%2FSignup.java;h=819bfd5b08286215aa3ce144195f80c03378f7e7;hb=2fa72700a18cdc62e80e1762b90e6e8bf20e8b92;hp=7cc389e72e2ac2b249c0b4c78773cdc5a8f3d04a;hpb=9def69bd08ea69eb27786d5b34f00e154e09e9f3;p=gigi.git diff --git a/src/org/cacert/gigi/pages/main/Signup.java b/src/org/cacert/gigi/pages/main/Signup.java index 7cc389e7..819bfd5b 100644 --- a/src/org/cacert/gigi/pages/main/Signup.java +++ b/src/org/cacert/gigi/pages/main/Signup.java @@ -13,6 +13,7 @@ import org.cacert.gigi.database.GigiResultSet; import org.cacert.gigi.dbObjects.User; import org.cacert.gigi.email.EmailProvider; import org.cacert.gigi.localisation.Language; +import org.cacert.gigi.output.CountrySelector; import org.cacert.gigi.output.DateSelector; import org.cacert.gigi.output.NameInput; import org.cacert.gigi.output.template.Form; @@ -36,9 +37,12 @@ public class Signup extends Form { private boolean general = true, country = true, regional = true, radius = true; + private CountrySelector cs; + public Signup(HttpServletRequest hsr) { super(hsr); ni = new NameInput(); + cs = new CountrySelector("residenceCountry", true); } private DateSelector myDoB = new DateSelector("day", "month", "year"); @@ -56,11 +60,11 @@ public class Signup extends Form { vars.put("helpOnNames", String.format(l.getTranslation("Help on Names %sin the wiki%s"), "", "")); vars.put("csrf", getCSRFToken()); vars.put("dobmin", User.MINIMUM_AGE + ""); + vars.put("countryCode", cs); t.output(out, l, vars); } private void update(HttpServletRequest r) throws GigiApiException { - ni.update(r); if (r.getParameter("email") != null) { email = r.getParameter("email"); } @@ -68,10 +72,24 @@ public class Signup extends Form { country = "1".equals(r.getParameter("country")); regional = "1".equals(r.getParameter("regional")); radius = "1".equals(r.getParameter("radius")); + GigiApiException problems = new GigiApiException(); + try { + ni.update(r); + } catch (GigiApiException e) { + problems.mergeInto(e); + } try { myDoB.update(r); } catch (GigiApiException e) { + problems.mergeInto(e); } + + cs.update(r); + + if ( !problems.isEmpty()) { + throw problems; + } + } @Override @@ -80,8 +98,12 @@ public class Signup extends Form { throw new RateLimitException(); } - update(req); GigiApiException ga = new GigiApiException(); + try { + update(req); + } catch (GigiApiException e) { + ga.mergeInto(e); + } try { ni.getNameParts(); } catch (GigiApiException e) { @@ -93,7 +115,11 @@ public class Signup extends Form { } if ( !CalendarUtil.isOfAge(myDoB.getDate(), User.MINIMUM_AGE)) { - ga.mergeInto(new GigiApiException("Entered dated of birth is below the restricted age requirements.")); + ga.mergeInto(new GigiApiException("Entered date of birth is below the restricted age requirements.")); + } + + if (CalendarUtil.isOfAge(myDoB.getDate(), User.MAXIMUM_PLAUSIBLE_AGE)) { + ga.mergeInto(new GigiApiException("Entered date of birth exceeds the maximum age set in our policies. Please check your DoB is correct and contact support if the issue persists.")); } if ( !"1".equals(req.getParameter("tos_agree"))) { @@ -161,7 +187,7 @@ public class Signup extends Form { } private void run(HttpServletRequest req, String password) throws GigiApiException { - User u = new User(email, password, myDoB.getDate(), Page.getLanguage(req).getLocale(), ni.getNameParts()); + User u = new User(email, password, myDoB.getDate(), Page.getLanguage(req).getLocale(), cs.getCountry(), ni.getNameParts()); try (GigiPreparedStatement ps = new GigiPreparedStatement("INSERT INTO `alerts` SET `memid`=?," + " `general`=?, `country`=?, `regional`=?, `radius`=?")) { ps.setInt(1, u.getId()); @@ -172,6 +198,6 @@ public class Signup extends Form { ps.execute(); } Notary.writeUserAgreement(u, "ToS", "account creation", "", true, 0); - } + }