X-Git-Url: https://code.wpia.club/?a=blobdiff_plain;f=src%2Forg%2Fcacert%2Fgigi%2Fpages%2Fadmin%2Fsupport%2FSupportUserDetailsPage.java;h=726bdd391566bd740b29faf426048d06047e9a5d;hb=ea1cb8576551bc4404b5d0cdce1a436d9df7894f;hp=b9368e42edbb44872729afdb2b002ffe465a4a1b;hpb=5455212f844579b906488b025ea4142ee09aa31d;p=gigi.git diff --git a/src/org/cacert/gigi/pages/admin/support/SupportUserDetailsPage.java b/src/org/cacert/gigi/pages/admin/support/SupportUserDetailsPage.java index b9368e42..726bdd39 100644 --- a/src/org/cacert/gigi/pages/admin/support/SupportUserDetailsPage.java +++ b/src/org/cacert/gigi/pages/admin/support/SupportUserDetailsPage.java @@ -1,39 +1,43 @@ package org.cacert.gigi.pages.admin.support; import java.io.IOException; -import java.security.GeneralSecurityException; -import java.util.Date; import java.util.HashMap; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import org.cacert.gigi.dbObjects.Certificate; -import org.cacert.gigi.dbObjects.CertificateProfile; +import org.cacert.gigi.GigiApiException; import org.cacert.gigi.dbObjects.EmailAddress; -import org.cacert.gigi.dbObjects.Group; +import org.cacert.gigi.dbObjects.SupportedUser; import org.cacert.gigi.dbObjects.User; import org.cacert.gigi.localisation.Language; -import org.cacert.gigi.output.DateSelector; +import org.cacert.gigi.output.template.Form; import org.cacert.gigi.output.template.IterableDataset; +import org.cacert.gigi.pages.LoginPage; import org.cacert.gigi.pages.Page; +import org.cacert.gigi.util.AuthorizationContext; public class SupportUserDetailsPage extends Page { public static final String PATH = "/support/user/"; - public SupportUserDetailsPage(String title) { - super(title); + public SupportUserDetailsPage() { + super("Support: User Details"); } @Override public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException { - int id; + int id = -1; String[] idP = req.getPathInfo().split("/"); - id = Integer.parseInt(idP[idP.length - 1]); + try { + id = Integer.parseInt(idP[idP.length - 1]); + } catch (NumberFormatException e) { + resp.sendError(404); + } final User user = User.getById(id); - SupportUserDetailsForm f = new SupportUserDetailsForm(req, user); + SupportedUser targetUser = new SupportedUser(user, getUser(req), LoginPage.getAuthorizationContext(req).getSupporterTicketId()); + SupportUserDetailsForm f = new SupportUserDetailsForm(req, targetUser); HashMap vars = new HashMap(); vars.put("details", f); final EmailAddress[] addrs = user.getEmails(); @@ -43,63 +47,41 @@ public class SupportUserDetailsPage extends Page { @Override public boolean next(Language l, Map vars) { - String address = addrs[i].getAddress(); - if ( !address.equals(user.getEmail())) { - vars.put("secmail", address); + for (; i < addrs.length;) { + String address = addrs[i++].getAddress(); + if ( !address.equals(user.getEmail())) { + vars.put("secmail", address); + return true; + } } - i++; - return i != addrs.length - 1; + return false; } }); - final Certificate[] certs = user.getCertificates(true); - final CertificateProfile[] profiles = CertificateProfile.getAll(); - vars.put("types", new IterableDataset() { - - int typeIndex = 0; + vars.put("certifrevoke", new SupportRevokeCertificatesForm(req, targetUser)); + getDefaultTemplate().output(resp.getWriter(), getLanguage(req), vars); + } - @Override - public boolean next(Language l, Map vars) { - if (typeIndex > profiles.length - 1) { - return false; - } - int valid = 0; - int total = 0; - long lastExpire = Long.MIN_VALUE; - for (int i = 0; i < certs.length; i++) { - try { - if (certs[i].getProfile().getId() != profiles[typeIndex].getId()) { - continue; - } - total++; - certs[i].cert().checkValidity(); - lastExpire = Math.max(lastExpire, certs[i].cert().getNotAfter().getTime()); - valid++; - } catch (GeneralSecurityException | IOException e) { - continue; - } + @Override + public void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException { + try { + if (req.getParameter("revokeall") != null) { + if ( !Form.getForm(req, SupportRevokeCertificatesForm.class).submit(resp.getWriter(), req)) { + throw new GigiApiException("No ticket number set."); } - vars.put("total", total); - vars.put("profile", profiles[typeIndex].getVisibleName()); - vars.put("valid", valid); - vars.put("exp", total - valid); - vars.put("rev", "TODO"); - if (lastExpire == Long.MIN_VALUE) { - vars.put("lastdate", "-"); - } else { - vars.put("lastdate", DateSelector.getDateFormat().format(new Date(lastExpire))); + } else if (req.getParameter("detailupdate") != null || req.getParameter("resetPass") != null || req.getParameter("deny") != null || req.getParameter("grant") != null) { + if ( !Form.getForm(req, SupportUserDetailsForm.class).submit(resp.getWriter(), req)) { + throw new GigiApiException("No ticket number set."); } - typeIndex++; - return true; } - }); - getDefaultTemplate().output(resp.getWriter(), getLanguage(req), vars); + } catch (GigiApiException e) { + e.printStackTrace(); + e.format(resp.getWriter(), getLanguage(req)); + } + super.doPost(req, resp); } @Override - public boolean isPermitted(User u) { - if (u == null) { - return false; - } - return u.isInGroup(Group.getByString("supporter")); + public boolean isPermitted(AuthorizationContext ac) { + return ac != null && ac.canSupport(); } }