]> WPIA git - gigi.git/blob - src/club/wpia/gigi/pages/account/domain/DomainManagementForm.java
add: make sure org admin cannot delete domain from org account
[gigi.git] / src / club / wpia / gigi / pages / account / domain / DomainManagementForm.java
1 package club.wpia.gigi.pages.account.domain;
2
3 import java.io.PrintWriter;
4 import java.util.Map;
5
6 import javax.servlet.http.HttpServletRequest;
7
8 import club.wpia.gigi.GigiApiException;
9 import club.wpia.gigi.dbObjects.CertificateOwner;
10 import club.wpia.gigi.dbObjects.Domain;
11 import club.wpia.gigi.dbObjects.Organisation;
12 import club.wpia.gigi.localisation.Language;
13 import club.wpia.gigi.output.template.Form;
14 import club.wpia.gigi.output.template.IterableDataset;
15 import club.wpia.gigi.output.template.Template;
16 import club.wpia.gigi.pages.orga.ViewOrgPage;
17
18 public class DomainManagementForm extends Form {
19
20     private static final Template t = new Template(DomainManagementForm.class.getResource("DomainManagementForm.templ"));
21
22     private CertificateOwner target;
23
24     private boolean foreign;
25
26     private boolean readOnly;
27
28     public DomainManagementForm(HttpServletRequest hsr, CertificateOwner target, boolean foreign) {
29         super(hsr);
30         this.target = target;
31         this.foreign = foreign;
32         readOnly = (target instanceof Organisation && !foreign);
33     }
34
35     @Override
36     public SubmissionResult submit(HttpServletRequest req) throws GigiApiException {
37         String dels = req.getParameter("delete");
38
39         int delId = Integer.parseInt(dels);
40         Domain d = Domain.getById(delId);
41         if (d != null && d.getOwner() == target) {
42             if (readOnly) {
43                 throw new GigiApiException("You are not allowed to delete a domain.");
44             }
45             d.delete();
46         } else {
47             throw new GigiApiException("Domain was not found.");
48         }
49         if (foreign) {
50             return new RedirectResult(ViewOrgPage.DEFAULT_PATH + "/" + target.getId());
51         } else {
52             return new RedirectResult(DomainOverview.PATH);
53         }
54     }
55
56     @Override
57     protected void outputContent(PrintWriter out, Language l, Map<String, Object> vars) {
58         final Domain[] doms = target.getDomains();
59         IterableDataset dts = new IterableDataset() {
60
61             private int point = 0;
62
63             @Override
64             public boolean next(Language l, Map<String, Object> vars) {
65                 if (point >= doms.length) {
66                     return false;
67                 }
68                 Domain domain = doms[point];
69                 vars.put("id", domain.getId());
70                 if ( !foreign) {
71                     vars.put("domainhref", DomainOverview.PATH + "/" + domain.getId());
72                 }
73                 vars.put("domain", domain.getSuffix());
74                 vars.put("status", l.getTranslation(domain.isVerified() ? "verified" : "not verified"));
75                 point++;
76                 return true;
77             }
78         };
79         vars.put("domains", dts);
80         if (readOnly) {
81             vars.put("buttonvisible", null);
82         } else {
83             vars.put("buttonvisible", "buttonvisible");
84         }
85
86         t.output(out, l, vars);
87     }
88 }