import org.cacert.gigi.GigiApiException;
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 {
- private static Template t;
+ private static final Template t = new Template(SupportRevokeCertificatesForm.class.getResource("SupportRevokeCertificatesForm.templ"));
private SupportedUser user;
- static {
- t = new Template(SupportRevokeCertificatesForm.class.getResource("SupportRevokeCertificatesForm.templ"));
- }
public SupportRevokeCertificatesForm(HttpServletRequest hsr, SupportedUser user) {
super(hsr);
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;
}
int valid = 0;
int total = 0;
+ int revoked = 0;
long lastExpire = Long.MIN_VALUE;
for (int i = 0; i < certs.length; i++) {
try {
continue;
}
total++;
+ if (certs[i].getStatus() == CertificateStatus.DRAFT) {
+ continue;
+ }
+ if (certs[i].getStatus() == CertificateStatus.REVOKED) {
+ revoked++;
+ continue;
+ }
certs[i].cert().checkValidity();
lastExpire = Math.max(lastExpire, certs[i].cert().getNotAfter().getTime());
valid++;
vars.put("profile", profiles[typeIndex].getVisibleName());
vars.put("valid", valid);
vars.put("exp", total - valid);
- vars.put("rev", "TODO");
+ vars.put("rev", revoked);
if (lastExpire == Long.MIN_VALUE) {
vars.put("lastdate", "-");
} else {