From: INOPIAE Date: Mon, 1 Aug 2016 07:57:09 +0000 (+0200) Subject: add: support should be able to see verifications of user X-Git-Url: https://code.wpia.club/?p=gigi.git;a=commitdiff_plain;h=796edd7987d09c70f0eed74ebd648fefa889e8a8 add: support should be able to see verifications of user fixes issue #44 Change-Id: Ief63aab5a4e952bd71b1e96731d387d66c9bebae --- diff --git a/src/org/cacert/gigi/Gigi.java b/src/org/cacert/gigi/Gigi.java index 9e111ae7..60188499 100644 --- a/src/org/cacert/gigi/Gigi.java +++ b/src/org/cacert/gigi/Gigi.java @@ -145,7 +145,7 @@ public final class Gigi extends HttpServlet { putPage(DomainOverview.PATH + "*", new DomainOverview(), "Certificates"); putPage(AssurePage.PATH + "/*", new AssurePage(), "Web of Trust"); - putPage(MyPoints.PATH, new MyPoints(), "Web of Trust"); + putPage(MyPoints.PATH, new MyPoints(false), "Web of Trust"); putPage(RequestTTPPage.PATH, new RequestTTPPage(), "Web of Trust"); putPage(TTPAdminPage.PATH + "/*", new TTPAdminPage(), "Admin"); @@ -170,6 +170,7 @@ public final class Gigi extends HttpServlet { putPage(UserTrainings.PATH, new UserTrainings(false), "My Account"); putPage(MyDetails.PATH, new MyDetails(), "My Account"); putPage(UserTrainings.SUPPORT_PATH, new UserTrainings(true), null); + putPage(MyPoints.SUPPORT_PATH, new MyPoints(true), null); putPage(PasswordResetPage.PATH, new PasswordResetPage(), null); putPage(LogoutPage.PATH, new LogoutPage(), null); diff --git a/src/org/cacert/gigi/output/AssurancesDisplay.java b/src/org/cacert/gigi/output/AssurancesDisplay.java index 8f0e6cab..f6d5362a 100644 --- a/src/org/cacert/gigi/output/AssurancesDisplay.java +++ b/src/org/cacert/gigi/output/AssurancesDisplay.java @@ -18,9 +18,12 @@ public class AssurancesDisplay implements Outputable { public String assuranceArray; - public AssurancesDisplay(String assuranceArray, boolean assurer) { + private boolean support; + + public AssurancesDisplay(String assuranceArray, boolean assurer, boolean support) { this.assuranceArray = assuranceArray; this.assurer = assurer; + this.support = support; } @Override @@ -43,13 +46,16 @@ public class AssurancesDisplay implements Outputable { return false; } else { Assurance assurance = assurances[i]; + vars.put("support", support); vars.put("id", assurance.getId()); vars.put("method", assurance.getMethod()); Name to = assurance.getTo(); if (assurer) { + vars.put("linkId", assurance.getTo().getOwner().getId()); vars.put("verbVal", to == null ? l.getTranslation("applicant's name removed") : to.getOwner().getId()); vars.put("myName", to == null ? l.getTranslation("applicant's name removed") : to); } else { + vars.put("linkId", assurance.getFrom().getId()); vars.put("verbVal", assurance.getFrom().getPreferredName()); vars.put("myName", to == null ? l.getTranslation("own name removed") : to); } diff --git a/src/org/cacert/gigi/output/AssurancesDisplay.templ b/src/org/cacert/gigi/output/AssurancesDisplay.templ index 1a552f06..a36e3583 100644 --- a/src/org/cacert/gigi/output/AssurancesDisplay.templ +++ b/src/org/cacert/gigi/output/AssurancesDisplay.templ @@ -13,7 +13,11 @@ + + + + diff --git a/src/org/cacert/gigi/pages/admin/support/SupportUserDetailsForm.templ b/src/org/cacert/gigi/pages/admin/support/SupportUserDetailsForm.templ index 08ea7597..b73cc6da 100644 --- a/src/org/cacert/gigi/pages/admin/support/SupportUserDetailsForm.templ +++ b/src/org/cacert/gigi/pages/admin/support/SupportUserDetailsForm.templ @@ -32,9 +32,9 @@ - + : - + () : diff --git a/src/org/cacert/gigi/pages/wot/MyPoints.java b/src/org/cacert/gigi/pages/wot/MyPoints.java index 69f5d7e6..9d8a3e3b 100644 --- a/src/org/cacert/gigi/pages/wot/MyPoints.java +++ b/src/org/cacert/gigi/pages/wot/MyPoints.java @@ -13,22 +13,45 @@ import org.cacert.gigi.util.AuthorizationContext; public class MyPoints extends Page { + public static final String SUPPORT_PATH = "/support/user/*/points"; + public static final String PATH = "/wot/mypoints"; - private AssurancesDisplay myDisplay = new AssurancesDisplay("asArr", false); + private static final int intStart = SUPPORT_PATH.indexOf('*'); + + private boolean support; - private AssurancesDisplay toOtherDisplay = new AssurancesDisplay("otherAsArr", true); + private AssurancesDisplay myDisplay; - public MyPoints() { - super("My Points"); + private AssurancesDisplay toOtherDisplay; + + public MyPoints(boolean support) { + super(support ? "Support User Points" : "My Points"); + this.support = support; + myDisplay = new AssurancesDisplay("asArr", false, support); + toOtherDisplay = new AssurancesDisplay("otherAsArr", true, support); } @Override public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException { + User user; + if (support) { + String info = req.getPathInfo(); + int id = Integer.parseInt(info.substring(intStart, info.length() - SUPPORT_PATH.length() + intStart + 1)); + user = User.getById(id); + if (user == null) { + resp.sendError(404); + return; + } + } else { + user = getUser(req); + } + HashMap vars = new HashMap(); + vars.put("support", support); + vars.put("username", user.getPreferredName().toString()); vars.put("pointlist", myDisplay); vars.put("madelist", toOtherDisplay); - User user = getUser(req); vars.put("asArr", user.getReceivedAssurances()); vars.put("otherAsArr", user.getMadeAssurances()); vars.put("assP", user.getAssurancePoints()); @@ -41,6 +64,14 @@ public class MyPoints extends Page { @Override public boolean isPermitted(AuthorizationContext ac) { - return ac != null && ac.getTarget() instanceof User; + if (ac == null) { + return false; + } + if (support) { + return ac.canSupport(); + } else { + return ac.getTarget() instanceof User; + } } + } diff --git a/src/org/cacert/gigi/pages/wot/MyPoints.templ b/src/org/cacert/gigi/pages/wot/MyPoints.templ index 1671f1ad..aa681cf2 100644 --- a/src/org/cacert/gigi/pages/wot/MyPoints.templ +++ b/src/org/cacert/gigi/pages/wot/MyPoints.templ @@ -17,7 +17,7 @@ -

+

-

+