From c6ddac41eea60b524e52f192e4d53b327a476f75 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Felix=20D=C3=B6rre?= Date: Mon, 20 Jun 2016 10:10:16 +0200 Subject: [PATCH] fix: List domains linked to an Organisation fixes #47 Change-Id: Id9930c11e4df703302430d7039921b498b364cb6 --- .../account/domain/DomainManagementForm.java | 33 +++++++++++-------- .../account/domain/DomainManagementForm.templ | 9 ++--- .../pages/account/domain/DomainOverview.java | 3 +- src/org/cacert/gigi/pages/orga/EditOrg.templ | 2 +- .../gigi/pages/orga/OrgDomainAddForm.java | 7 ++-- .../gigi/pages/orga/OrgDomainAddForm.templ | 4 +-- .../cacert/gigi/pages/orga/ViewOrgPage.java | 22 +++++++++---- 7 files changed, 48 insertions(+), 32 deletions(-) diff --git a/src/org/cacert/gigi/pages/account/domain/DomainManagementForm.java b/src/org/cacert/gigi/pages/account/domain/DomainManagementForm.java index d14b8ad8..4e80123a 100644 --- a/src/org/cacert/gigi/pages/account/domain/DomainManagementForm.java +++ b/src/org/cacert/gigi/pages/account/domain/DomainManagementForm.java @@ -20,24 +20,25 @@ public class DomainManagementForm extends Form { private CertificateOwner target; - public DomainManagementForm(HttpServletRequest hsr, CertificateOwner target) { + private boolean foreign; + + public DomainManagementForm(HttpServletRequest hsr, CertificateOwner target, boolean foreign) { super(hsr); this.target = target; + this.foreign = foreign; } @Override public boolean submit(PrintWriter out, HttpServletRequest req) { try { - String[] dels = req.getParameterValues("delid[]"); - Domain[] usDomains = target.getDomains(); - for (int i = 0; i < dels.length; i++) { - int delId = Integer.parseInt(dels[i]); - for (int j = 0; j < usDomains.length; j++) { - if (usDomains[j].getId() == delId) { - usDomains[j].delete(); - break; - } - } + 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)); @@ -46,9 +47,13 @@ public class DomainManagementForm extends Form { return true; } + public CertificateOwner getTarget() { + return target; + } + @Override protected void outputContent(PrintWriter out, Language l, Map vars) { - final Domain[] doms = (Domain[]) vars.get("doms"); + final Domain[] doms = target.getDomains(); IterableDataset dts = new IterableDataset() { private int point = 0; @@ -60,7 +65,9 @@ public class DomainManagementForm extends Form { } Domain domain = doms[point]; vars.put("id", domain.getId()); - vars.put("domainhref", DomainOverview.PATH + domain.getId()); + if ( !foreign) { + vars.put("domainhref", DomainOverview.PATH + domain.getId()); + } vars.put("domain", domain.getSuffix()); vars.put("status", l.getTranslation(domain.isVerified() ? "verified" : "not verified")); point++; diff --git a/src/org/cacert/gigi/pages/account/domain/DomainManagementForm.templ b/src/org/cacert/gigi/pages/account/domain/DomainManagementForm.templ index 32d77fe3..6dbbdb40 100644 --- a/src/org/cacert/gigi/pages/account/domain/DomainManagementForm.templ +++ b/src/org/cacert/gigi/pages/account/domain/DomainManagementForm.templ @@ -3,19 +3,16 @@ Domains - + - + - + - - - \ No newline at end of file diff --git a/src/org/cacert/gigi/pages/account/domain/DomainOverview.java b/src/org/cacert/gigi/pages/account/domain/DomainOverview.java index 41fa5c4d..9c379218 100644 --- a/src/org/cacert/gigi/pages/account/domain/DomainOverview.java +++ b/src/org/cacert/gigi/pages/account/domain/DomainOverview.java @@ -49,9 +49,8 @@ public class DomainOverview extends Page { } try { - DomainManagementForm domMan = new DomainManagementForm(req, u); + DomainManagementForm domMan = new DomainManagementForm(req, u, false); HashMap vars = new HashMap<>(); - vars.put("doms", u.getDomains()); vars.put("domainman", domMan); if (u instanceof User) { DomainAddForm domAdd = new DomainAddForm(req, (User) u); diff --git a/src/org/cacert/gigi/pages/orga/EditOrg.templ b/src/org/cacert/gigi/pages/orga/EditOrg.templ index eaaa93f2..36e683fc 100644 --- a/src/org/cacert/gigi/pages/orga/EditOrg.templ +++ b/src/org/cacert/gigi/pages/orga/EditOrg.templ @@ -2,4 +2,4 @@


- + diff --git a/src/org/cacert/gigi/pages/orga/OrgDomainAddForm.java b/src/org/cacert/gigi/pages/orga/OrgDomainAddForm.java index 1b0c00f1..b3df26eb 100644 --- a/src/org/cacert/gigi/pages/orga/OrgDomainAddForm.java +++ b/src/org/cacert/gigi/pages/orga/OrgDomainAddForm.java @@ -6,7 +6,6 @@ import java.util.Map; import javax.servlet.http.HttpServletRequest; import org.cacert.gigi.GigiApiException; -import org.cacert.gigi.dbObjects.CertificateOwner; import org.cacert.gigi.dbObjects.Domain; import org.cacert.gigi.dbObjects.Organisation; import org.cacert.gigi.localisation.Language; @@ -18,13 +17,17 @@ public class OrgDomainAddForm extends Form { public static Template t = new Template(OrgDomainAddForm.class.getResource("OrgDomainAddForm.templ")); - CertificateOwner target; + Organisation target; public OrgDomainAddForm(HttpServletRequest hsr, Organisation target) { super(hsr); this.target = target; } + public Organisation getOrganisation() { + return target; + } + @Override public boolean submit(PrintWriter out, HttpServletRequest req) throws GigiApiException { String domain = req.getParameter("domain"); diff --git a/src/org/cacert/gigi/pages/orga/OrgDomainAddForm.templ b/src/org/cacert/gigi/pages/orga/OrgDomainAddForm.templ index c20d27ca..dc38aeca 100644 --- a/src/org/cacert/gigi/pages/orga/OrgDomainAddForm.templ +++ b/src/org/cacert/gigi/pages/orga/OrgDomainAddForm.templ @@ -1,10 +1,10 @@ - - +
+
diff --git a/src/org/cacert/gigi/pages/orga/ViewOrgPage.java b/src/org/cacert/gigi/pages/orga/ViewOrgPage.java index 815a2ceb..c8259412 100644 --- a/src/org/cacert/gigi/pages/orga/ViewOrgPage.java +++ b/src/org/cacert/gigi/pages/orga/ViewOrgPage.java @@ -18,6 +18,7 @@ import org.cacert.gigi.output.template.IterableDataset; import org.cacert.gigi.output.template.Template; import org.cacert.gigi.pages.LoginPage; import org.cacert.gigi.pages.Page; +import org.cacert.gigi.pages.account.domain.DomainManagementForm; import org.cacert.gigi.util.AuthorizationContext; public class ViewOrgPage extends Page { @@ -47,17 +48,25 @@ public class ViewOrgPage extends Page { resp.sendRedirect(DEFAULT_PATH + "/" + form.getOrganisation().getId()); } return; - } else if (req.getParameter("addDomain") != null) { - if (Form.getForm(req, OrgDomainAddForm.class).submit(resp.getWriter(), req)) { - // resp.sendRedirect(DEFAULT_PATH + "/" + - // form.getOrganisation().getId()); - } } else { if ( !u.isInGroup(CreateOrgPage.ORG_ASSURER)) { resp.sendError(403, "Access denied"); return; } - Form.getForm(req, CreateOrgForm.class).submit(resp.getWriter(), req); + + 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 { + Form.getForm(req, CreateOrgForm.class).submit(resp.getWriter(), req); + } } } catch (GigiApiException e) { @@ -103,6 +112,7 @@ public class ViewOrgPage extends Page { if (orgAss) { vars.put("editForm", new CreateOrgForm(req, o)); vars.put("affForm", new AffiliationForm(req, o)); + vars.put("mgmDom", new DomainManagementForm(req, o, true)); vars.put("addDom", new OrgDomainAddForm(req, o)); } else { vars.put("affForm", new AffiliationForm(req, o)); -- 2.39.2