From d5800737358923a2a45b94c21a78d00f8dbb9616 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Felix=20D=C3=B6rre?= Date: Fri, 26 Aug 2016 00:00:19 +0200 Subject: [PATCH] upd: constrain API around Supported User. Change-Id: I75c60ce9a3881d4ddf9153a8b7da9eb811045c96 --- .../cacert/gigi/dbObjects/SupportedUser.java | 44 ++++++++++++++++++- .../SupportRevokeCertificatesForm.java | 12 ----- .../admin/support/SupportUserDetailsForm.java | 29 +----------- 3 files changed, 43 insertions(+), 42 deletions(-) diff --git a/src/org/cacert/gigi/dbObjects/SupportedUser.java b/src/org/cacert/gigi/dbObjects/SupportedUser.java index e5daeb31..6f013b1a 100644 --- a/src/org/cacert/gigi/dbObjects/SupportedUser.java +++ b/src/org/cacert/gigi/dbObjects/SupportedUser.java @@ -1,9 +1,12 @@ package org.cacert.gigi.dbObjects; import java.io.IOException; +import java.io.PrintWriter; import java.util.HashMap; import java.util.Locale; +import javax.servlet.http.HttpServletRequest; + import org.cacert.gigi.GigiApiException; import org.cacert.gigi.database.GigiPreparedStatement; import org.cacert.gigi.dbObjects.Certificate.CertificateStatus; @@ -11,6 +14,8 @@ import org.cacert.gigi.localisation.Language; import org.cacert.gigi.output.template.MailTemplate; import org.cacert.gigi.output.template.Outputable; import org.cacert.gigi.output.template.SprintfCommand; +import org.cacert.gigi.output.template.TranslateCommand; +import org.cacert.gigi.pages.PasswordResetPage; import org.cacert.gigi.util.DayDate; import org.cacert.gigi.util.ServerConstants; @@ -34,6 +39,13 @@ public class SupportedUser { } writeSELog("SE dob change"); target.setDoBAsSupport(dob); + String subject = "Change DoB Data"; + // send notification to support + Outputable message = new TranslateCommand("The DoB was changed."); + sendSupportNotification(subject, message); + // send notification to user + message = SprintfCommand.createSimple("The DoB in your account was changed to {0}.", dob); + sendSupportUserNotification(subject, message); return true; } @@ -46,6 +58,11 @@ public class SupportedUser { certs[i].revoke(); } } + // send notification to support + Outputable message = SprintfCommand.createSimple("All certificates in the account {0} <{1}> have been revoked.", target.getPreferredName().toString(), target.getEmail()); + sendSupportNotification("Revoke certificates", message); + // send notification to user + sendSupportUserNotification("Revoke certificate", new TranslateCommand("All certificates in your account have been revoked.")); } public void revokeCertificate(Certificate cert) throws GigiApiException { @@ -96,15 +113,29 @@ public class SupportedUser { public void grant(Group toMod) throws GigiApiException { target.grantGroup(supporter, toMod); + String subject = "Change Group Permissions"; + // send notification to support + Outputable message = SprintfCommand.createSimple("The group permission '{0}' was granted.", toMod.getName()); + sendSupportNotification(subject, message); + // send notification to user + message = SprintfCommand.createSimple("The group permission '{0}' was granted to your account.", toMod.getName()); + sendSupportUserNotification(subject, message); } public void revoke(Group toMod) { target.revokeGroup(supporter, toMod); + String subject = "Change Group Permissions"; + // send notification to support + Outputable message = SprintfCommand.createSimple("The group permission '{0}' was revoked.", toMod.getName()); + sendSupportNotification(subject, message); + // send notification to user + message = SprintfCommand.createSimple("The group permission '{0}' was revoked from your account.", toMod.getName()); + sendSupportUserNotification(subject, message); } private static final MailTemplate supportNotification = new MailTemplate(SupportedUser.class.getResource("SupportNotificationMail.templ")); - public void sendSupportNotification(String subject, Outputable message) { + private void sendSupportNotification(String subject, Outputable message) { try { HashMap vars = new HashMap<>(); vars.put("supporter", supporter.getPreferredName().toString()); @@ -121,7 +152,7 @@ public class SupportedUser { private static final MailTemplate supportUserNotification = new MailTemplate(SupportedUser.class.getResource("SupportUserNotificationMail.templ")); - public void sendSupportUserNotification(String subject, Outputable message) { + private void sendSupportUserNotification(String subject, Outputable message) { try { HashMap vars = new HashMap<>(); vars.put("action", message); @@ -133,4 +164,13 @@ public class SupportedUser { e.printStackTrace(); } } + + public void triggerPasswordReset(String aword, PrintWriter out, HttpServletRequest req) { + Language l = Language.getInstance(target.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, target, req, aword, l, method, subject); + Outputable message = new TranslateCommand("A password reset was triggered and an email was sent to user."); + sendSupportNotification(subject, message); + } } diff --git a/src/org/cacert/gigi/pages/admin/support/SupportRevokeCertificatesForm.java b/src/org/cacert/gigi/pages/admin/support/SupportRevokeCertificatesForm.java index 8c106dcb..9c1f3f5b 100644 --- a/src/org/cacert/gigi/pages/admin/support/SupportRevokeCertificatesForm.java +++ b/src/org/cacert/gigi/pages/admin/support/SupportRevokeCertificatesForm.java @@ -13,12 +13,9 @@ import org.cacert.gigi.dbObjects.Certificate; import org.cacert.gigi.dbObjects.Certificate.CertificateStatus; import org.cacert.gigi.dbObjects.CertificateProfile; import org.cacert.gigi.dbObjects.SupportedUser; -import org.cacert.gigi.dbObjects.User; import org.cacert.gigi.localisation.Language; 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; public class SupportRevokeCertificatesForm extends Form { @@ -36,15 +33,6 @@ public class SupportRevokeCertificatesForm extends Form { public boolean submit(PrintWriter out, HttpServletRequest req) throws GigiApiException { if (user.getTicket() != null) { user.revokeAllCertificates(); - User target = user.getTargetUser(); - // send notification to support - String subject = "Revoke certificates"; - Outputable message = SprintfCommand.createSimple("All certificates in the account {0} <{1}> have been revoked.", target.getPreferredName().toString(), target.getEmail()); - user.sendSupportNotification(subject, message); - // send notification to user - subject = "Revoke certificate"; - message = SprintfCommand.createSimple("All certificates in your account have been revoked."); - user.sendSupportUserNotification(subject, message); return true; } return false; diff --git a/src/org/cacert/gigi/pages/admin/support/SupportUserDetailsForm.java b/src/org/cacert/gigi/pages/admin/support/SupportUserDetailsForm.java index 57382036..ac7ffd00 100644 --- a/src/org/cacert/gigi/pages/admin/support/SupportUserDetailsForm.java +++ b/src/org/cacert/gigi/pages/admin/support/SupportUserDetailsForm.java @@ -17,11 +17,7 @@ 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.Outputable; -import org.cacert.gigi.output.template.SprintfCommand; import org.cacert.gigi.output.template.Template; -import org.cacert.gigi.output.template.TranslateCommand; -import org.cacert.gigi.pages.PasswordResetPage; public class SupportUserDetailsForm extends Form { @@ -50,21 +46,11 @@ public class SupportUserDetailsForm extends Form { if (req.getParameter("addGroup") != null || req.getParameter("removeGroup") != null) { value.update(req); Group toMod = value.getGroup(); - boolean grant; if (req.getParameter("addGroup") != null) { - grant = true; user.grant(toMod); } else { - grant = false; user.revoke(toMod); } - String subject = "Change Group Permissions"; - // send notification to support - Outputable message = SprintfCommand.createSimple(grant ? "The group permission '{0}' was granted." : "The group permission '{0}' was revoked.", toMod.getName()); - user.sendSupportNotification(subject, message); - // send notification to user - message = SprintfCommand.createSimple(grant ? "The group permission '{0}' was granted to your account." : "The group permission '{0}' was revoked from your account.", toMod.getName()); - user.sendSupportUserNotification(subject, message); return true; } if (req.getParameter("resetPass") != null) { @@ -72,12 +58,7 @@ public class SupportUserDetailsForm extends Form { 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); - Outputable message = new TranslateCommand("A password reset was triggered and an email was sent to user."); - user.sendSupportNotification(subject, message); + user.triggerPasswordReset(aword, out, req); return true; } dobSelector.update(req); @@ -85,14 +66,6 @@ public class SupportUserDetailsForm extends Form { throw new GigiApiException("Invalid date of birth!"); } user.setDob(dobSelector.getDate()); - - String subject = "Change DoB Data"; - // send notification to support - Outputable message = new TranslateCommand("The DoB was changed."); - user.sendSupportNotification(subject, message); - // send notification to user - message = SprintfCommand.createSimple("The DoB in your account was changed to {0}.", dobSelector.getDate()); - user.sendSupportUserNotification(subject, message); return true; } -- 2.39.2