]> WPIA git - gigi.git/blobdiff - src/org/cacert/gigi/pages/admin/support/SupportUserDetailsForm.java
add: add boolean to separate groups for user and support
[gigi.git] / src / org / cacert / gigi / pages / admin / support / SupportUserDetailsForm.java
index a85952f658d5afacbf89e8c5687e6fb4ad89985a..df7840587fe94ba6daa228b6a3d99296434ec576 100644 (file)
@@ -1,8 +1,6 @@
 package org.cacert.gigi.pages.admin.support;
 
-import java.io.IOException;
 import java.io.PrintWriter;
-import java.net.URLEncoder;
 import java.util.Iterator;
 import java.util.Map;
 import java.util.Set;
@@ -14,31 +12,27 @@ import org.cacert.gigi.dbObjects.Group;
 import org.cacert.gigi.dbObjects.Name;
 import org.cacert.gigi.dbObjects.SupportedUser;
 import org.cacert.gigi.dbObjects.User;
-import org.cacert.gigi.email.Sendmail;
 import org.cacert.gigi.localisation.Language;
+import org.cacert.gigi.output.ArrayIterable;
 import org.cacert.gigi.output.DateSelector;
 import org.cacert.gigi.output.GroupSelector;
 import org.cacert.gigi.output.template.Form;
 import org.cacert.gigi.output.template.IterableDataset;
+import org.cacert.gigi.output.template.Outputable;
+import org.cacert.gigi.output.template.SprintfCommand;
 import org.cacert.gigi.output.template.Template;
-import org.cacert.gigi.pages.Page;
+import org.cacert.gigi.output.template.TranslateCommand;
 import org.cacert.gigi.pages.PasswordResetPage;
-import org.cacert.gigi.util.RandomToken;
-import org.cacert.gigi.util.ServerConstants;
 
 public class SupportUserDetailsForm extends Form {
 
-    private static Template t;
+    private static final Template t = new Template(FindUserByDomainForm.class.getResource("SupportUserDetailsForm.templ"));
 
     private SupportedUser user;
 
     private DateSelector dobSelector;
 
-    private GroupSelector value = new GroupSelector("groupToModify");
-
-    static {
-        t = new Template(FindDomainForm.class.getResource("SupportUserDetailsForm.templ"));
-    }
+    private GroupSelector value = new GroupSelector("groupToModify", true);
 
     public SupportUserDetailsForm(HttpServletRequest hsr, SupportedUser user) {
         super(hsr);
@@ -55,13 +49,18 @@ public class SupportUserDetailsForm extends Form {
             throw new GigiApiException("More than one action requested!");
         }
         if (req.getParameter("grant") != null || req.getParameter("deny") != null) {
+            String actionType = "granted";
             value.update(req);
             Group toMod = value.getGroup();
             if (req.getParameter("grant") != null) {
                 user.grant(toMod);
             } else {
+                actionType = "revoked";
                 user.revoke(toMod);
             }
+            String subject = "Change Group Permissions";
+            Outputable message = SprintfCommand.createSimple("The group permission {0} was {1}.", toMod.getDatabaseName(), actionType);
+            user.sendSupportNotification(subject, message);
             return true;
         }
         if (req.getParameter("resetPass") != null) {
@@ -69,65 +68,44 @@ public class SupportUserDetailsForm extends Form {
             if (aword == null || aword.equals("")) {
                 throw new GigiApiException("An A-Word is required to perform a password reset.");
             }
-            String ptok = RandomToken.generateToken(32);
-            int id = user.getTargetUser().generatePasswordResetTicket(Page.getUser(req), ptok, aword);
-            try {
-                Language l = Language.getInstance(user.getTargetUser().getPreferredLocale());
-                StringBuffer body = new StringBuffer();
-                body.append(l.getTranslation("Hi,") + "\n\n");
-                body.append(l.getTranslation("A password reset was triggered. Please enter the required text sent to you by support on this page:"));
-                body.append("\n\nhttps://");
-                body.append(ServerConstants.getWwwHostNamePortSecure() + PasswordResetPage.PATH);
-                body.append("?id=");
-                body.append(id);
-                body.append("&token=");
-                body.append(URLEncoder.encode(ptok, "UTF-8"));
-                body.append("\n");
-                body.append("\n");
-                body.append(l.getTranslation("Best regards"));
-                body.append("\n");
-                body.append(l.getTranslation("SomeCA.org Support!"));
-                Sendmail.getInstance().sendmail(user.getTargetUser().getEmail(), "[SomeCA.org] " + l.getTranslation("Password reset by support."), body.toString(), "support@cacert.org", null, null, null, null, false);
-                out.println(Page.getLanguage(req).getTranslation("Password reset successful."));
-            } catch (IOException e) {
-                e.printStackTrace();
-            }
+            Language l = Language.getInstance(user.getTargetUser().getPreferredLocale());
+            String method = l.getTranslation("A password reset was triggered. Please enter the required text sent to you by support on this page:");
+            String subject = l.getTranslation("Password reset by support.");
+            PasswordResetPage.initPasswordResetProcess(out, user.getTargetUser(), req, aword, l, method, subject);
+            Outputable message = new TranslateCommand("A password reset was triggered and an email was sent to user.");
+            user.sendSupportNotification(subject, message);
             return true;
         }
         dobSelector.update(req);
-        String fname = req.getParameter("fname");
-        String mname = req.getParameter("mname");
-        String lname = req.getParameter("lname");
-        String suffix = req.getParameter("suffix");
-        if (fname == null || mname == null || lname == null | suffix == null) {
-            throw new GigiApiException("Incomplete request!");
-        }
         if ( !dobSelector.isValid()) {
             throw new GigiApiException("Invalid date of birth!");
         }
-        Name newName = new Name(fname, lname, mname, suffix);
-        synchronized (user.getTargetUser()) {
-            if (user.setDob(dobSelector.getDate()) | user.setName(newName)) {
-                user.submitSupportAction();
-            }
-        }
+        user.setDob(dobSelector.getDate());
+
+        String subject = "Change Account Data";
+        Outputable message = new TranslateCommand("The account data was changed.");
+        user.sendSupportNotification(subject, message);
         return true;
     }
 
     @Override
     protected void outputContent(PrintWriter out, Language l, Map<String, Object> vars) {
         User user = this.user.getTargetUser();
-        Name name = user.getName();
         vars.put("mail", user.getEmail());
-        vars.put("fname", name.getFname());
-        vars.put("mname", name.getMname());
-        vars.put("lname", name.getLname());
-        vars.put("suffix", name.getSuffix());
+        vars.put("status", l.getTranslation(user.isValidEmail(user.getEmail()) ? "verified" : "not verified"));
+        vars.put("exNames", new ArrayIterable<Name>(user.getNames()) {
+
+            @Override
+            public void apply(Name t, Language l, Map<String, Object> vars) {
+                vars.put("name", t);
+                vars.put("points", Integer.toString(t.getAssurancePoints()));
+            }
+
+        });
         vars.put("assurer", user.canAssure());
         vars.put("dob", dobSelector);
         vars.put("assurancepoints", user.getAssurancePoints());
         vars.put("exppoints", user.getExperiencePoints());
-        vars.put("id", user.getId());
         final Set<Group> gr = user.getGroups();
         vars.put("groups", new IterableDataset() {