1 package org.cacert.gigi.dbObjects;
5 import org.cacert.gigi.GigiApiException;
6 import org.cacert.gigi.database.GigiPreparedStatement;
7 import org.cacert.gigi.dbObjects.Certificate.CertificateStatus;
9 public class SupportedUser {
13 private User supporter;
15 private String ticket;
17 public SupportedUser(User target, User supporter, String ticket) {
18 this.supporter = supporter;
23 public boolean setName(Name newName) throws GigiApiException {
24 if (newName.equals(target.getName())) {
27 writeSELog("SE Name change");
28 target.setName(newName);
32 public boolean setDob(Date dob) throws GigiApiException {
33 if (dob.toString().equals(target.getDoB().toString())) {
36 writeSELog("SE dob change");
41 public void revokeAllCertificates() throws GigiApiException {
42 writeSELog("SE Revoke certificates");
43 Certificate[] certs = target.getCertificates(false);
44 // TODO Check for open jobs!
45 for (int i = 0; i < certs.length; i++) {
46 if (certs[i].getStatus() == CertificateStatus.ISSUED) {
52 private void writeSELog(String type) throws GigiApiException {
54 throw new GigiApiException("No ticket set!");
56 try (GigiPreparedStatement prep = new GigiPreparedStatement("INSERT INTO `adminLog` SET uid=?, admin=?, type=?, information=?")) {
57 prep.setInt(1, target.getId());
58 prep.setInt(2, supporter.getId());
59 prep.setString(3, type);
60 prep.setString(4, ticket);
66 return target.getId();
69 public Certificate[] getCertificates(boolean includeRevoked) {
70 return target.getCertificates(includeRevoked);
73 public String getTicket() {
77 public User getTargetUser() {
81 public void submitSupportAction() throws GigiApiException {
82 target.rawUpdateUserData();
85 public void grant(Group toMod) {
86 target.grantGroup(supporter, toMod);
89 public void revoke(Group toMod) {
90 target.revokeGroup(supporter, toMod);