X-Git-Url: https://code.wpia.club/?a=blobdiff_plain;f=src%2Forg%2Fcacert%2Fgigi%2Fpages%2Fadmin%2Fsupport%2FSupportUserDetailsPage.java;h=b0ddb8fee7cdce3cd9ef81590988e1a0ccae555c;hb=db3ef5c43aa600a5bba60e57efd92932d2323d8c;hp=9b135e749583bdd28fabe9350b6e8963a10b8d01;hpb=c90d9f8e3d962c3bd25c720c4eb04631af8665ed;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 9b135e74..b0ddb8fe 100644 --- a/src/org/cacert/gigi/pages/admin/support/SupportUserDetailsPage.java +++ b/src/org/cacert/gigi/pages/admin/support/SupportUserDetailsPage.java @@ -1,11 +1,22 @@ package org.cacert.gigi.pages.admin.support; import java.io.IOException; +import java.util.HashMap; +import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import org.cacert.gigi.GigiApiException; +import org.cacert.gigi.dbObjects.EmailAddress; +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.pages.LoginPage; import org.cacert.gigi.pages.Page; +import org.cacert.gigi.util.AuthorizationContext; public class SupportUserDetailsPage extends Page { @@ -16,6 +27,62 @@ public class SupportUserDetailsPage extends Page { } @Override - public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {} + public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException { + int id = -1; + String[] idP = req.getPathInfo().split("/"); + try { + id = Integer.parseInt(idP[idP.length - 1]); + } catch (NumberFormatException e) { + resp.sendError(404); + } + final User user = User.getById(id); + 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(); + vars.put("emails", new IterableDataset() { + int i = 0; + + @Override + public boolean next(Language l, Map vars) { + if (i == addrs.length) { + return false; + } + String address = addrs[i].getAddress(); + i++; + if ( !address.equals(user.getEmail())) { + vars.put("secmail", address); + } + return true; + } + }); + vars.put("certifrevoke", new SupportRevokeCertificatesForm(req, targetUser)); + getDefaultTemplate().output(resp.getWriter(), getLanguage(req), vars); + } + + @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."); + } + } else if (req.getParameter("detailupdate") != null) { + if ( !Form.getForm(req, SupportUserDetailsForm.class).submit(resp.getWriter(), req)) { + throw new GigiApiException("No ticket number set."); + } + } + } catch (GigiApiException e) { + e.printStackTrace(); + e.format(resp.getWriter(), getLanguage(req)); + } + super.doPost(req, resp); + } + + @Override + public boolean isPermitted(AuthorizationContext ac) { + return ac != null && ac.canSupport(); + } }