X-Git-Url: https://code.wpia.club/?a=blobdiff_plain;f=src%2Forg%2Fcacert%2Fgigi%2Fpages%2Fadmin%2Fsupport%2FSupportUserDetailsForm.java;h=60251e7e4f789161336796b129a6059aff33cddf;hb=e1d51eb65683b9847b1dc7261495369130ab61ef;hp=685adf3d7ce2398141f00b35438c2dad06f1587f;hpb=c793f81c916f0f24b2180649b3d88348434b9480;p=gigi.git diff --git a/src/org/cacert/gigi/pages/admin/support/SupportUserDetailsForm.java b/src/org/cacert/gigi/pages/admin/support/SupportUserDetailsForm.java index 685adf3d..60251e7e 100644 --- a/src/org/cacert/gigi/pages/admin/support/SupportUserDetailsForm.java +++ b/src/org/cacert/gigi/pages/admin/support/SupportUserDetailsForm.java @@ -1,9 +1,9 @@ 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; import javax.servlet.http.HttpServletRequest; @@ -12,15 +12,13 @@ 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.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.Template; -import org.cacert.gigi.pages.Page; import org.cacert.gigi.pages.PasswordResetPage; -import org.cacert.gigi.util.RandomToken; -import org.cacert.gigi.util.ServerConstants; public class SupportUserDetailsForm extends Form { @@ -30,6 +28,8 @@ public class SupportUserDetailsForm extends Form { private DateSelector dobSelector; + private GroupSelector value = new GroupSelector("groupToModify"); + static { t = new Template(FindDomainForm.class.getResource("SupportUserDetailsForm.templ")); } @@ -45,33 +45,28 @@ public class SupportUserDetailsForm extends Form { if (user.getTicket() == null) { return false; } + 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) { + throw new GigiApiException("More than one action requested!"); + } + if (req.getParameter("grant") != null || req.getParameter("deny") != null) { + value.update(req); + Group toMod = value.getGroup(); + if (req.getParameter("grant") != null) { + user.grant(toMod); + } else { + user.revoke(toMod); + } + return true; + } 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."); } - 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: \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("CAcert.org Support!")); - Sendmail.getInstance().sendmail(user.getTargetUser().getEmail(), "[CAcert.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); return true; } dobSelector.update(req); @@ -86,8 +81,10 @@ public class SupportUserDetailsForm extends Form { throw new GigiApiException("Invalid date of birth!"); } Name newName = new Name(fname, lname, mname, suffix); - if (user.setDob(dobSelector.getDate()) | user.setName(newName)) { - user.submitSupportAction(); + synchronized (user.getTargetUser()) { + if (user.setDob(dobSelector.getDate()) | user.setName(newName)) { + user.submitSupportAction(); + } } return true; } @@ -103,16 +100,25 @@ public class SupportUserDetailsForm extends Form { vars.put("suffix", name.getSuffix()); vars.put("assurer", user.canAssure()); vars.put("dob", dobSelector); - vars.put("blockedassurer", user.isInGroup(Group.BLOCKEDASSURER)); - vars.put("codesign", user.isInGroup(Group.CODESIGNING)); - vars.put("orgassurer", user.isInGroup(Group.ORGASSURER)); vars.put("assurancepoints", user.getAssurancePoints()); - vars.put("blockedassuree", user.isInGroup(Group.BLOCKEDASSUREE)); - vars.put("ttpassurer", user.isInGroup(Group.TTP_ASSURER)); - vars.put("ttpapplicant", user.isInGroup(Group.TTP_APPLICANT)); - vars.put("blockedlogin", user.isInGroup(Group.BLOCKEDLOGIN)); - vars.put("supporter", user.isInGroup(Group.SUPPORTER)); + 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("groupSelector", value); t.output(out, l, vars); }