X-Git-Url: https://code.wpia.club/?p=gigi.git;a=blobdiff_plain;f=src%2Forg%2Fcacert%2Fgigi%2FdbObjects%2FSupportedUser.java;fp=src%2Forg%2Fcacert%2Fgigi%2FdbObjects%2FSupportedUser.java;h=0000000000000000000000000000000000000000;hp=e600b85bf2d2fca302375d18e06693e19108c056;hb=bccd4cc0dba0f89aa045b113bac46eb8cc1dab4e;hpb=c9ed09f0007fc2c813815be927a5a24b23dab83c diff --git a/src/org/cacert/gigi/dbObjects/SupportedUser.java b/src/org/cacert/gigi/dbObjects/SupportedUser.java deleted file mode 100644 index e600b85b..00000000 --- a/src/org/cacert/gigi/dbObjects/SupportedUser.java +++ /dev/null @@ -1,200 +0,0 @@ -package org.cacert.gigi.dbObjects; - -import java.io.IOException; -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; -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; - -public class SupportedUser { - - private User target; - - private User supporter; - - private String ticket; - - public SupportedUser(User target, User supporter, String ticket) { - this.supporter = supporter; - this.target = target; - this.ticket = ticket; - } - - public boolean setDob(DayDate dob) throws GigiApiException { - if (dob.equals(target.getDoB())) { - return false; - } - 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; - } - - public void revokeAllCertificates() throws GigiApiException { - writeSELog("SE Revoke certificates"); - Certificate[] certs = target.getCertificates(false); - // TODO Check for open jobs! - for (int i = 0; i < certs.length; i++) { - if (certs[i].getStatus() == CertificateStatus.ISSUED) { - 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 { - - // TODO Check for open jobs! - 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); - } - } - - private void writeSELog(String type) throws GigiApiException { - if (ticket == null) { - throw new GigiApiException("No ticket set!"); - } - try (GigiPreparedStatement prep = new GigiPreparedStatement("INSERT INTO `adminLog` SET uid=?, admin=?, type=?, information=?")) { - prep.setInt(1, target.getId()); - prep.setInt(2, supporter.getId()); - prep.setString(3, type); - prep.setString(4, ticket); - prep.executeUpdate(); - } - } - - public int getId() { - return target.getId(); - } - - public Certificate[] getCertificates(boolean includeRevoked) { - return target.getCertificates(includeRevoked); - } - - public String getTicket() { - return ticket; - } - - public User getTargetUser() { - return target; - } - - 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); - if (toMod == Group.SUPPORTER) { - subject = "Support role granted"; - message = SprintfCommand.createSimple("The group permission '{0}' was granted for '{1}'.", toMod.getName(), target.getPreferredName().toString()); - sendBoardNotification(subject, message); - } - } - - public void revoke(Group toMod) throws GigiApiException { - 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); - if (toMod == Group.SUPPORTER) { - subject = "Support role revoked"; - message = SprintfCommand.createSimple("The group permission '{0}' was revoked for '{1}'.", toMod.getName(), target.getPreferredName().toString()); - sendBoardNotification(subject, message); - } - } - - private static final MailTemplate supportNotification = new MailTemplate(SupportedUser.class.getResource("SupportNotificationMail.templ")); - - private void sendSupportNotification(String subject, Outputable message) { - try { - HashMap vars = new HashMap<>(); - vars.put("supporter", supporter.getPreferredName().toString()); - vars.put("action", message); - vars.put("ticket", this.getTicket()); - vars.put("subject", subject); - - String supportemailaddress = ServerConstants.getSupportMailAddress(); - supportNotification.sendMail(Language.getInstance(Locale.ENGLISH), vars, supportemailaddress); - } catch (IOException e) { - e.printStackTrace(); - } - } - - private static final MailTemplate supportUserNotification = new MailTemplate(SupportedUser.class.getResource("SupportUserNotificationMail.templ")); - - private void sendSupportUserNotification(String subject, Outputable message) { - try { - HashMap 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(); - } - } - - public void triggerPasswordReset(String aword, 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(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); - } - - private void sendBoardNotification(String subject, Outputable message) { - try { - HashMap vars = new HashMap<>(); - vars.put("supporter", supporter.getPreferredName().toString()); - vars.put("action", message); - vars.put("ticket", this.getTicket()); - vars.put("subject", subject); - - String boardemailaddress = ServerConstants.getBoardMailAddress(); - supportNotification.sendMail(Language.getInstance(Locale.ENGLISH), vars, boardemailaddress); - } catch (IOException e) { - e.printStackTrace(); - } - } -}