]> WPIA git - gigi.git/blob - src/org/cacert/gigi/pages/account/mail/MailManagementForm.java
Merge "Update notes about password security"
[gigi.git] / src / org / cacert / gigi / pages / account / mail / MailManagementForm.java
1 package org.cacert.gigi.pages.account.mail;
2
3 import java.io.IOException;
4 import java.io.PrintWriter;
5 import java.util.Map;
6
7 import javax.servlet.http.HttpServletRequest;
8
9 import org.cacert.gigi.GigiApiException;
10 import org.cacert.gigi.dbObjects.EmailAddress;
11 import org.cacert.gigi.dbObjects.User;
12 import org.cacert.gigi.localisation.Language;
13 import org.cacert.gigi.output.template.Form;
14 import org.cacert.gigi.output.template.IterableDataset;
15 import org.cacert.gigi.output.template.Template;
16 import org.cacert.gigi.pages.Page;
17
18 public class MailManagementForm extends Form {
19
20     private static Template t;
21
22     private User target;
23     static {
24         t = new Template(MailAddForm.class.getResource("MailManagementForm.templ"));
25     }
26
27     public MailManagementForm(HttpServletRequest hsr, User target) {
28         super(hsr);
29         this.target = target;
30     }
31
32     @Override
33     public boolean submit(PrintWriter out, HttpServletRequest req) {
34         try {
35             String d;
36             if ((d = req.getParameter("default")) != null) {
37                 target.updateDefaultEmail(EmailAddress.getById(Integer.parseInt(d)));
38             } else if ((d = req.getParameter("delete")) != null) {
39                 target.deleteEmail(EmailAddress.getById(Integer.parseInt(d)));
40             } else if ((d = req.getParameter("reping")) != null) {
41                 EmailAddress.getById(Integer.parseInt(d)).requestReping(Page.getLanguage(req));
42             }
43         } catch (GigiApiException e) {
44             e.format(out, Page.getLanguage(req));
45             return false;
46         } catch (IOException e1) {
47             new GigiApiException("Error while doing reping.").format(out, Page.getLanguage(req));
48             return false;
49         }
50         return true;
51     }
52
53     @Override
54     protected void outputContent(PrintWriter out, Language l, Map<String, Object> vars) {
55         final EmailAddress[] emails = target.getEmails();
56         IterableDataset ds = new IterableDataset() {
57
58             private int point = 0;
59
60             @Override
61             public boolean next(Language l, Map<String, Object> vars) {
62                 if (point >= emails.length) {
63                     return false;
64                 }
65                 EmailAddress emailAddress = emails[point];
66                 int mailID = emailAddress.getId();
67                 vars.put("id", mailID);
68                 if (emailAddress.getAddress().equals(target.getEmail())) {
69                     vars.put("default", " disabled");
70                     vars.put("deletable", " disabled");
71                 } else {
72                     vars.put("deletable", "");
73                     vars.put("default", "");
74                 }
75                 if (emailAddress.isVerified()) {
76                     vars.put("verification", l.getTranslation("Verified"));
77                 } else {
78                     // only verified emails may become the default email
79                     // address.
80                     vars.put("default", " disabled");
81                     vars.put("verification", l.getTranslation("Unverified"));
82                 }
83                 vars.put("last_verification", emailAddress.getLastPing(true));
84                 if (target.getEmail().equals(emailAddress.getAddress())) {
85                     vars.put("delete", "N/A");
86                 } else {
87                     vars.put("delete", "<input type=\"checkbox\" name=\"delid[]\" value=\"" + mailID + "\"/>");
88                 }
89                 vars.put("address", emailAddress.getAddress());
90                 point++;
91                 return true;
92             }
93
94         };
95         vars.put("emails", ds);
96         t.output(out, l, vars);
97     }
98 }