package org.cacert.gigi.pages.main;
import java.io.IOException;
-import java.io.InputStreamReader;
-import java.io.PrintWriter;
-import java.io.UnsupportedEncodingException;
import java.util.HashMap;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
-import javax.servlet.http.HttpSession;
-import org.cacert.gigi.output.Template;
+import org.cacert.gigi.output.template.Form;
import org.cacert.gigi.pages.Page;
+import org.cacert.gigi.util.AuthorizationContext;
+import org.cacert.gigi.util.RateLimit;
public class RegisterPage extends Page {
- public static final String PATH = "/register";
- Template t;
-
- public RegisterPage() {
- super("Register");
- try {
- t = new Template(new InputStreamReader(
- Signup.class.getResourceAsStream("RegisterPage.templ"),
- "UTF-8"));
- } catch (UnsupportedEncodingException e) {
- e.printStackTrace();
- }
- }
-
- @Override
- public void doGet(HttpServletRequest req, HttpServletResponse resp)
- throws IOException {
- PrintWriter out = resp.getWriter();
- t.output(out, getLanguage(req), new HashMap<String, Object>());
- Signup s = getForm(req);
- s.writeForm(out, getLanguage(req));
- }
- public Signup getForm(HttpServletRequest req) {
- HttpSession hs = req.getSession();
- Signup s = (Signup) hs.getAttribute("signupProcess");
- if (s == null) {
- s = new Signup();
- hs.setAttribute("signupProcess", s);
- }
- return s;
-
- }
- @Override
- public void doPost(HttpServletRequest req, HttpServletResponse resp)
- throws IOException {
- Signup s = getForm(req);
- s.submit(resp.getWriter(), req);
-
- super.doPost(req, resp);
- }
- @Override
- public boolean needsLogin() {
- return false;
- }
+ public static final String PATH = "/register";
+
+ // 50 per 5 min
+ public static final RateLimit RATE_LIMIT = new RateLimit(50, 5 * 60 * 1000);
+
+ public RegisterPage() {
+ super("Register");
+ }
+
+ @Override
+ public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
+ Signup s = new Signup(req);
+ outputGet(req, resp, s);
+ }
+
+ private void outputGet(HttpServletRequest req, HttpServletResponse resp, Signup s) throws IOException {
+ getDefaultTemplate().output(resp.getWriter(), getLanguage(req), new HashMap<String, Object>());
+ s.output(resp.getWriter(), getLanguage(req), new HashMap<String, Object>());
+ }
+
+ @Override
+ public boolean beforePost(HttpServletRequest req, HttpServletResponse resp) throws IOException {
+ return Form.getForm(req, Signup.class).submitExceptionProtected(req, resp);
+ }
+
+ @Override
+ public void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException {
+ if (Form.printFormErrors(req, resp.getWriter())) {
+ Signup s = Form.getForm(req, Signup.class);
+ outputGet(req, resp, s);
+ }
+ }
+
+ @Override
+ public boolean needsLogin() {
+ return false;
+ }
+
+ @Override
+ public boolean isPermitted(AuthorizationContext ac) {
+ return ac == null;
+ }
}