--- /dev/null
+Subject: [<?=$ticket?>] Support action: <?=$subject?>
+
+<?=_Hi?>,
+
+<?=_support triggered:?>
+
+<?=$action?>
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.util.DayDate;
import org.cacert.gigi.util.ServerConstants;
if (cert.getStatus() == CertificateStatus.ISSUED) {
writeSELog("SE Revoke certificate");
cert.revoke().waitFor(60000);
+ // send notification to support
+ String subject = "Revoke certificate";
+ Outputable message = SprintfCommand.createSimple("Certificate with serial number {0} for {1} <{2}>, has been revoked.", cert.getSerial(), target.getPreferredName().toString(), target.getEmail());
+ sendSupportNotification(subject, message);
+ // send notification to user
+ subject = "Revoke certificate";
+ message = SprintfCommand.createSimple("Certificate with serial number {0} with subject distinguished name {1} has been revoked.", cert.getSerial(), cert.getDistinguishedName());
+ sendSupportUserNotification(subject, message);
}
}
e.printStackTrace();
}
}
+
+ private static final MailTemplate supportUserNotification = new MailTemplate(SupportedUser.class.getResource("SupportUserNotificationMail.templ"));
+
+ public void sendSupportUserNotification(String subject, Outputable message) {
+ try {
+ HashMap<String, Object> vars = new HashMap<>();
+ vars.put("action", message);
+ vars.put("ticket", this.getTicket());
+ vars.put("subject", subject);
+
+ supportUserNotification.sendMail(Language.getInstance(Locale.ENGLISH), vars, target.getEmail());
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
}
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;
-import org.cacert.gigi.output.template.TranslateCommand;
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 = new TranslateCommand("All certificates in the account have been revoked.");
+ 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;
throw new GigiApiException("More than one action requested!");
}
if (req.getParameter("addGroup") != null || req.getParameter("removeGroup") != null) {
- String actionType = "granted";
value.update(req);
Group toMod = value.getGroup();
+ boolean grant;
if (req.getParameter("addGroup") != null) {
+ grant = true;
user.grant(toMod);
} else {
- actionType = "revoked";
+ grant = false;
user.revoke(toMod);
}
String subject = "Change Group Permissions";
- Outputable message = SprintfCommand.createSimple("The group permission {0} was {1}.", toMod.getDatabaseName(), actionType);
+ // 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) {
}
user.setDob(dobSelector.getDate());
- String subject = "Change Account Data";
- Outputable message = new TranslateCommand("The account data was changed.");
+ 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;
}
import static org.junit.Assert.*;
import java.io.IOException;
+import java.io.PrintWriter;
+import java.io.StringWriter;
import java.net.MalformedURLException;
+import java.net.URLEncoder;
+import java.util.HashMap;
+import java.util.Locale;
import org.cacert.gigi.GigiApiException;
import org.cacert.gigi.dbObjects.Group;
+import org.cacert.gigi.dbObjects.User;
+import org.cacert.gigi.localisation.Language;
import org.cacert.gigi.pages.admin.support.SupportEnterTicketPage;
import org.cacert.gigi.pages.admin.support.SupportUserDetailsPage;
import org.cacert.gigi.testUtils.ClientTest;
executeBasicWebInteraction(cookie, SupportUserDetailsPage.PATH + targetID + "/", "dobd=1&dobm=2&doby=2000&detailupdate", 0);
+ // mail to support
String message = getMailReceiver().receive().getMessage();
- assertThat(message, containsString("The account data was changed."));
+ assertThat(message, containsString("The DoB was changed"));
assertThat(message, containsString("supporter " + u.getPreferredName().toString() + " triggered:"));
-
+ // mail to user
+ message = getMailReceiver().receive().getMessage();
+ assertThat(message, containsString("The DoB in your account was changed to 2000-02-01."));
}
@Test
@Test
public void testGrantUserGroup() throws MalformedURLException, IOException {
- executeBasicWebInteraction(cookie, SupportUserDetailsPage.PATH + targetID + "/", "addGroup&groupToModify=supporter", 0);
+ executeBasicWebInteraction(cookie, SupportUserDetailsPage.PATH + targetID + "/", "addGroup&groupToModify=" + URLEncoder.encode(Group.SUPPORTER.getDatabaseName(), "UTF-8"), 0);
+
+ StringWriter sw = new StringWriter();
+ PrintWriter pw = new PrintWriter(sw);
+ Group.SUPPORTER.getName().output(pw, Language.getInstance(Locale.ENGLISH), new HashMap<String, Object>());
+ // mail to support
String message = getMailReceiver().receive().getMessage();
- assertThat(message, containsString("The group permission supporter was granted."));
+ assertThat(message, containsString("The group permission '" + sw.toString() + "' was granted."));
+ // mail to user
+ message = getMailReceiver().receive().getMessage();
+ assertThat(message, containsString("The group permission '" + sw.toString() + "' was granted to your account."));
}
@Test
public void testRemoveUserGroup() throws MalformedURLException, IOException {
- executeBasicWebInteraction(cookie, SupportUserDetailsPage.PATH + targetID + "/", "removeGroup&groupToModify=supporter", 0);
+ executeBasicWebInteraction(cookie, SupportUserDetailsPage.PATH + targetID + "/", "removeGroup&groupToModify=" + URLEncoder.encode(Group.SUPPORTER.getDatabaseName(), "UTF-8"), 0);
+ StringWriter sw = new StringWriter();
+ PrintWriter pw = new PrintWriter(sw);
+ Group.SUPPORTER.getName().output(pw, Language.getInstance(Locale.ENGLISH), new HashMap<String, Object>());
+
+ // mail to support
String message = getMailReceiver().receive().getMessage();
- assertThat(message, containsString("The group permission supporter was revoked."));
+ assertThat(message, containsString("The group permission '" + sw.toString() + "' was revoked."));
+ // mail to user
+ message = getMailReceiver().receive().getMessage();
+ assertThat(message, containsString("The group permission '" + sw.toString() + "' was revoked from your account."));
}
@Test
- public void testRevokeCertificates() throws MalformedURLException, IOException {
+ public void testRevokeAllCertificates() throws MalformedURLException, IOException {
executeBasicWebInteraction(cookie, SupportUserDetailsPage.PATH + targetID + "/", "revokeall", 1);
+ User user = User.getById(targetID);
+ // mail to support
String message = getMailReceiver().receive().getMessage();
- assertThat(message, containsString("All certificates in the account have been revoked."));
-
+ assertThat(message, containsString("All certificates in the account " + user.getPreferredName().toString()));
+ // mail to user
+ message = getMailReceiver().receive().getMessage();
+ assertThat(message, containsString("All certificates in your account have been revoked."));
}
}