import java.io.IOException;
import java.io.PrintWriter;
+import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.cacert.gigi.GigiApiException;
import org.cacert.gigi.localisation.Language;
+import org.cacert.gigi.pages.LoginPage;
import org.cacert.gigi.util.RandomToken;
/**
*/
public abstract boolean submit(PrintWriter out, HttpServletRequest req) throws GigiApiException;
+ /**
+ * Calls {@link #submit(PrintWriter, HttpServletRequest)} while catching and
+ * displaying errors ({@link GigiApiException}), and re-outputing the form
+ * via {@link #output(PrintWriter, Language, Map)}.
+ *
+ * @param out
+ * the target to write the form and errors to
+ * @param req
+ * the request that this submit originated (for submit and for
+ * language)
+ * @return as {@link #submit(PrintWriter, HttpServletRequest)}: true, iff
+ * the form succeeded and the user should be redirected.
+ */
+ public boolean submitProtected(PrintWriter out, HttpServletRequest req) {
+ try {
+ boolean succeeded = submit(out, req);
+ if (succeeded) {
+ return true;
+ }
+ } catch (GigiApiException e) {
+ e.format(out, LoginPage.getLanguage(req));
+ }
+ output(out, LoginPage.getLanguage(req), new HashMap<String, Object>());
+ return false;
+ }
+
protected String getCsrfFieldName() {
return CSRF_FIELD;
}
import org.cacert.gigi.output.template.Form;
import org.cacert.gigi.output.template.IterableDataset;
import org.cacert.gigi.output.template.Template;
-import org.cacert.gigi.pages.Page;
public class DomainManagementForm extends Form {
}
@Override
- public boolean submit(PrintWriter out, HttpServletRequest req) {
- try {
- String dels = req.getParameter("delete");
+ public boolean submit(PrintWriter out, HttpServletRequest req) throws GigiApiException {
+ String dels = req.getParameter("delete");
- int delId = Integer.parseInt(dels);
- Domain d = Domain.getById(delId);
- if (d != null && d.getOwner() == target) {
- d.delete();
- } else {
- throw new GigiApiException("Domain was not found.");
- }
- } catch (GigiApiException e) {
- e.format(out, Page.getLanguage(req));
- return false;
+ int delId = Integer.parseInt(dels);
+ Domain d = Domain.getById(delId);
+ if (d != null && d.getOwner() == target) {
+ d.delete();
+ } else {
+ throw new GigiApiException("Domain was not found.");
}
return true;
}
}
} else if (req.getParameter("domdel") != null) {
DomainManagementForm f = Form.getForm(req, DomainManagementForm.class);
- if (f.submit(resp.getWriter(), req)) {
+ if (f.submitProtected(resp.getWriter(), req)) {
resp.sendRedirect(PATH);
}
}
@Override
public void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException {
+ CreateOrgForm form = Form.getForm(req, CreateOrgForm.class);
try {
- CreateOrgForm form = Form.getForm(req, CreateOrgForm.class);
if (form.submit(resp.getWriter(), req)) {
resp.sendRedirect(ViewOrgPage.DEFAULT_PATH + "/" + form.getResult().getId());
return;
} catch (GigiApiException e) {
e.format(resp.getWriter(), getLanguage(req));
}
+ form.output(resp.getWriter(), getLanguage(req), new HashMap<String, Object>());
}
@Override
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
-import org.cacert.gigi.GigiApiException;
import org.cacert.gigi.dbObjects.Organisation;
import org.cacert.gigi.dbObjects.User;
import org.cacert.gigi.localisation.Language;
@Override
public void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException {
- try {
- User u = LoginPage.getUser(req);
- if (req.getParameter("do_affiliate") != null || req.getParameter("del") != null) {
- AffiliationForm form = Form.getForm(req, AffiliationForm.class);
- if (form.submit(resp.getWriter(), req)) {
+ User u = LoginPage.getUser(req);
+ if (req.getParameter("do_affiliate") != null || req.getParameter("del") != null) {
+ AffiliationForm form = Form.getForm(req, AffiliationForm.class);
+ if (form.submitProtected(resp.getWriter(), req)) {
+ resp.sendRedirect(DEFAULT_PATH + "/" + form.getOrganisation().getId());
+ }
+ return;
+ } else {
+ if ( !u.isInGroup(CreateOrgPage.ORG_ASSURER)) {
+ resp.sendError(403, "Access denied");
+ return;
+ }
+
+ if (req.getParameter("addDomain") != null) {
+ OrgDomainAddForm form = Form.getForm(req, OrgDomainAddForm.class);
+ if (form.submitProtected(resp.getWriter(), req)) {
resp.sendRedirect(DEFAULT_PATH + "/" + form.getOrganisation().getId());
}
- return;
- } else {
- if ( !u.isInGroup(CreateOrgPage.ORG_ASSURER)) {
- resp.sendError(403, "Access denied");
- return;
+ } else if (req.getParameter("delete") != null) {
+ DomainManagementForm form = Form.getForm(req, DomainManagementForm.class);
+ if (form.submitProtected(resp.getWriter(), req)) {
+ resp.sendRedirect(DEFAULT_PATH + "/" + form.getTarget().getId());
}
-
- if (req.getParameter("addDomain") != null) {
- OrgDomainAddForm form = Form.getForm(req, OrgDomainAddForm.class);
- if (form.submit(resp.getWriter(), req)) {
- resp.sendRedirect(DEFAULT_PATH + "/" + form.getOrganisation().getId());
- }
- } else if (req.getParameter("delete") != null) {
- DomainManagementForm form = Form.getForm(req, DomainManagementForm.class);
- if (form.submit(resp.getWriter(), req)) {
- resp.sendRedirect(DEFAULT_PATH + "/" + form.getTarget().getId());
- }
- } else {
- CreateOrgForm form = Form.getForm(req, CreateOrgForm.class);
- if (form.submit(resp.getWriter(), req)) {
- resp.sendRedirect(DEFAULT_PATH + "/" + form.getResult().getId());
- }
+ } else {
+ CreateOrgForm form = Form.getForm(req, CreateOrgForm.class);
+ if (form.submitProtected(resp.getWriter(), req)) {
+ resp.sendRedirect(DEFAULT_PATH + "/" + form.getResult().getId());
}
}
-
- } catch (GigiApiException e) {
- e.format(resp.getWriter(), getLanguage(req));
}
+
}
@Override