X-Git-Url: https://code.wpia.club/?p=gigi.git;a=blobdiff_plain;f=src%2Forg%2Fcacert%2Fgigi%2Fpages%2Fadmin%2Fsupport%2FSupportUserDetailsForm.java;h=df7840587fe94ba6daa228b6a3d99296434ec576;hp=a85952f658d5afacbf89e8c5687e6fb4ad89985a;hb=d46bd087fcf633dc2bccecbce63108011da33871;hpb=80a10fc035deef98dc2e839ca11b68ab1a6ff80e diff --git a/src/org/cacert/gigi/pages/admin/support/SupportUserDetailsForm.java b/src/org/cacert/gigi/pages/admin/support/SupportUserDetailsForm.java index a85952f6..df784058 100644 --- a/src/org/cacert/gigi/pages/admin/support/SupportUserDetailsForm.java +++ b/src/org/cacert/gigi/pages/admin/support/SupportUserDetailsForm.java @@ -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 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(user.getNames()) { + + @Override + public void apply(Name t, Language l, Map 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 gr = user.getGroups(); vars.put("groups", new IterableDataset() {