X-Git-Url: https://code.wpia.club/?p=gigi.git;a=blobdiff_plain;f=src%2Forg%2Fcacert%2Fgigi%2Fpages%2Fadmin%2Fsupport%2FSupportUserDetailsForm.java;h=88b9b03b583a8081ef360f087f3a4ce646dbad05;hp=15ed2818ba6b76cc2b113718e725af4d532f5525;hb=abff88a2bf173198fe55c35ead97c9c7cdb5924c;hpb=25f59f370978c0e9789821a15d89a83d5d702622 diff --git a/src/org/cacert/gigi/pages/admin/support/SupportUserDetailsForm.java b/src/org/cacert/gigi/pages/admin/support/SupportUserDetailsForm.java index 15ed2818..88b9b03b 100644 --- a/src/org/cacert/gigi/pages/admin/support/SupportUserDetailsForm.java +++ b/src/org/cacert/gigi/pages/admin/support/SupportUserDetailsForm.java @@ -1,7 +1,6 @@ package org.cacert.gigi.pages.admin.support; import java.io.PrintWriter; -import java.util.Iterator; import java.util.Map; import java.util.Set; @@ -13,22 +12,24 @@ import org.cacert.gigi.dbObjects.Name; import org.cacert.gigi.dbObjects.SupportedUser; import org.cacert.gigi.dbObjects.User; import org.cacert.gigi.localisation.Language; +import org.cacert.gigi.output.ArrayIterable; import org.cacert.gigi.output.DateSelector; +import org.cacert.gigi.output.GroupIterator; 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.Template; -import org.cacert.gigi.pages.PasswordResetPage; +import org.cacert.gigi.output.template.TranslateCommand; +import org.cacert.gigi.pages.LoginPage; public class SupportUserDetailsForm extends Form { - private static final Template t = new Template(FindDomainForm.class.getResource("SupportUserDetailsForm.templ")); + private static final Template t = new Template(FindUserByDomainForm.class.getResource("SupportUserDetailsForm.templ")); private SupportedUser user; private DateSelector dobSelector; - private GroupSelector value = new GroupSelector("groupToModify"); + private GroupSelector value = new GroupSelector("groupToModify", true); public SupportUserDetailsForm(HttpServletRequest hsr, SupportedUser user) { super(hsr); @@ -37,83 +38,63 @@ public class SupportUserDetailsForm extends Form { } @Override - public boolean submit(PrintWriter out, HttpServletRequest req) throws GigiApiException { + public SubmissionResult submit(HttpServletRequest req) throws GigiApiException { if (user.getTicket() == null) { - return false; + throw new GigiApiException("No ticket number set."); } - 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) { + if (user.getTargetUser() == LoginPage.getUser(req)) { + throw new GigiApiException("Supporter may not modify himself."); + } + if ((req.getParameter("detailupdate") != null ? 1 : 0) + (req.getParameter("addGroup") != null ? 1 : 0) + (req.getParameter("removeGroup") != null ? 1 : 0) + (req.getParameter("resetPass") != null ? 1 : 0) != 1) { throw new GigiApiException("More than one action requested!"); } - if (req.getParameter("grant") != null || req.getParameter("deny") != null) { + if (req.getParameter("addGroup") != null || req.getParameter("removeGroup") != null) { value.update(req); Group toMod = value.getGroup(); - if (req.getParameter("grant") != null) { + if (req.getParameter("addGroup") != null) { user.grant(toMod); } else { user.revoke(toMod); } - return true; + return new RedirectResult(req.getPathInfo()); } if (req.getParameter("resetPass") != null) { String aword = req.getParameter("aword"); if (aword == null || aword.equals("")) { throw new GigiApiException("An A-Word is required to perform a password reset."); } - 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); - return true; + user.triggerPasswordReset(aword, req); + return new SuccessMessageResult(new TranslateCommand("Password reset successful.")); } 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(); - } - } - return true; + user.setDob(dobSelector.getDate()); + return new RedirectResult(req.getPathInfo()); } @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() { - - Iterator i = gr.iterator(); - - @Override - public boolean next(Language l, Map vars) { - if ( !i.hasNext()) { - return false; - } - Group g = i.next(); - vars.put("group_name", g.getName()); - return true; - } - }); + vars.put("support-groups", new GroupIterator(gr.iterator(), true)); + vars.put("groups", new GroupIterator(gr.iterator(), false)); vars.put("groupSelector", value); t.output(out, l, vars); }