]> WPIA git - gigi.git/blob - src/org/cacert/gigi/pages/admin/support/SupportUserDetailsForm.java
add: show assigned groups to an account in My Detail
[gigi.git] / src / org / cacert / gigi / pages / admin / support / SupportUserDetailsForm.java
1 package org.cacert.gigi.pages.admin.support;
2
3 import java.io.PrintWriter;
4 import java.util.Map;
5 import java.util.Set;
6
7 import javax.servlet.http.HttpServletRequest;
8
9 import org.cacert.gigi.GigiApiException;
10 import org.cacert.gigi.dbObjects.Group;
11 import org.cacert.gigi.dbObjects.Name;
12 import org.cacert.gigi.dbObjects.SupportedUser;
13 import org.cacert.gigi.dbObjects.User;
14 import org.cacert.gigi.localisation.Language;
15 import org.cacert.gigi.output.ArrayIterable;
16 import org.cacert.gigi.output.DateSelector;
17 import org.cacert.gigi.output.GroupIterator;
18 import org.cacert.gigi.output.GroupSelector;
19 import org.cacert.gigi.output.template.Form;
20 import org.cacert.gigi.output.template.Outputable;
21 import org.cacert.gigi.output.template.SprintfCommand;
22 import org.cacert.gigi.output.template.Template;
23 import org.cacert.gigi.output.template.TranslateCommand;
24 import org.cacert.gigi.pages.PasswordResetPage;
25
26 public class SupportUserDetailsForm extends Form {
27
28     private static final Template t = new Template(FindUserByDomainForm.class.getResource("SupportUserDetailsForm.templ"));
29
30     private SupportedUser user;
31
32     private DateSelector dobSelector;
33
34     private GroupSelector value = new GroupSelector("groupToModify", true);
35
36     public SupportUserDetailsForm(HttpServletRequest hsr, SupportedUser user) {
37         super(hsr);
38         this.user = user;
39         dobSelector = new DateSelector("dobd", "dobm", "doby", user.getTargetUser().getDoB());
40     }
41
42     @Override
43     public boolean submit(PrintWriter out, HttpServletRequest req) throws GigiApiException {
44         if (user.getTicket() == null) {
45             return false;
46         }
47         if ((req.getParameter("detailupdate") != null ? 1 : 0) + (req.getParameter("grant") != null ? 1 : 0) + (req.getParameter("deny") != null ? 1 : 0) + (req.getParameter("resetPass") != null ? 1 : 0) != 1) {
48             throw new GigiApiException("More than one action requested!");
49         }
50         if (req.getParameter("grant") != null || req.getParameter("deny") != null) {
51             String actionType = "granted";
52             value.update(req);
53             Group toMod = value.getGroup();
54             if (req.getParameter("grant") != null) {
55                 user.grant(toMod);
56             } else {
57                 actionType = "revoked";
58                 user.revoke(toMod);
59             }
60             String subject = "Change Group Permissions";
61             Outputable message = SprintfCommand.createSimple("The group permission {0} was {1}.", toMod.getDatabaseName(), actionType);
62             user.sendSupportNotification(subject, message);
63             return true;
64         }
65         if (req.getParameter("resetPass") != null) {
66             String aword = req.getParameter("aword");
67             if (aword == null || aword.equals("")) {
68                 throw new GigiApiException("An A-Word is required to perform a password reset.");
69             }
70             Language l = Language.getInstance(user.getTargetUser().getPreferredLocale());
71             String method = l.getTranslation("A password reset was triggered. Please enter the required text sent to you by support on this page:");
72             String subject = l.getTranslation("Password reset by support.");
73             PasswordResetPage.initPasswordResetProcess(out, user.getTargetUser(), req, aword, l, method, subject);
74             Outputable message = new TranslateCommand("A password reset was triggered and an email was sent to user.");
75             user.sendSupportNotification(subject, message);
76             return true;
77         }
78         dobSelector.update(req);
79         if ( !dobSelector.isValid()) {
80             throw new GigiApiException("Invalid date of birth!");
81         }
82         user.setDob(dobSelector.getDate());
83
84         String subject = "Change Account Data";
85         Outputable message = new TranslateCommand("The account data was changed.");
86         user.sendSupportNotification(subject, message);
87         return true;
88     }
89
90     @Override
91     protected void outputContent(PrintWriter out, Language l, Map<String, Object> vars) {
92         User user = this.user.getTargetUser();
93         vars.put("mail", user.getEmail());
94         vars.put("status", l.getTranslation(user.isValidEmail(user.getEmail()) ? "verified" : "not verified"));
95         vars.put("exNames", new ArrayIterable<Name>(user.getNames()) {
96
97             @Override
98             public void apply(Name t, Language l, Map<String, Object> vars) {
99                 vars.put("name", t);
100                 vars.put("points", Integer.toString(t.getAssurancePoints()));
101             }
102
103         });
104         vars.put("assurer", user.canAssure());
105         vars.put("dob", dobSelector);
106         vars.put("assurancepoints", user.getAssurancePoints());
107         vars.put("exppoints", user.getExperiencePoints());
108         final Set<Group> gr = user.getGroups();
109         vars.put("support-groups", new GroupIterator(gr.iterator(), true));
110         vars.put("groups", new GroupIterator(gr.iterator(), false));
111         vars.put("groupSelector", value);
112         t.output(out, l, vars);
113     }
114
115 }