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;
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");
vars.put("helpOnNames", String.format(l.getTranslation("Help on Names %sin the wiki%s"), "<a href=\"//wiki.cacert.org/FAQ/HowToEnterNamesInJoinForm\" target=\"_blank\">", "</a>"));
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");
}
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
throw new RateLimitException();
}
- update(req);
GigiApiException ga = new GigiApiException();
+ try {
+ update(req);
+ } catch (GigiApiException e) {
+ ga.mergeInto(e);
+ }
try {
ni.getNameParts();
} catch (GigiApiException e) {
}
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());
ps.execute();
}
Notary.writeUserAgreement(u, "ToS", "account creation", "", true, 0);
-
}
+
}