X-Git-Url: https://code.wpia.club/?p=gigi.git;a=blobdiff_plain;f=src%2Forg%2Fcacert%2Fgigi%2Futil%2FAuthorizationContext.java;h=dfd591e41fc0450f463a24b3a3ccd5317f94ca8b;hp=16f458cafd09d934d29686acfab91ce4caac0a80;hb=80a10fc035deef98dc2e839ca11b68ab1a6ff80e;hpb=db3ef5c43aa600a5bba60e57efd92932d2323d8c diff --git a/src/org/cacert/gigi/util/AuthorizationContext.java b/src/org/cacert/gigi/util/AuthorizationContext.java index 16f458ca..dfd591e4 100644 --- a/src/org/cacert/gigi/util/AuthorizationContext.java +++ b/src/org/cacert/gigi/util/AuthorizationContext.java @@ -1,6 +1,7 @@ package org.cacert.gigi.util; import java.io.PrintWriter; +import java.util.Arrays; import java.util.Map; import org.cacert.gigi.GigiApiException; @@ -10,6 +11,7 @@ import org.cacert.gigi.dbObjects.Organisation; import org.cacert.gigi.dbObjects.User; import org.cacert.gigi.localisation.Language; import org.cacert.gigi.output.template.Outputable; +import org.cacert.gigi.output.template.SprintfCommand; public class AuthorizationContext implements Outputable { @@ -24,6 +26,15 @@ public class AuthorizationContext implements Outputable { this.actor = actor; } + public AuthorizationContext(User actor, String supporterTicket) throws GigiApiException { + this.target = actor; + this.actor = actor; + if ( !isInGroup(Group.SUPPORTER)) { + throw new GigiApiException("requires a supporter"); + } + supporterTicketId = supporterTicket; + } + public CertificateOwner getTarget() { return target; } @@ -43,13 +54,6 @@ public class AuthorizationContext implements Outputable { return ac.getActor(); } - public void setSupporterTicketId(String supporterTicketId) throws GigiApiException { - if ( !isInGroup(Group.SUPPORTER)) { - throw new GigiApiException("requires a supporter"); - } - this.supporterTicketId = supporterTicketId; - } - public String getSupporterTicketId() { return supporterTicketId; } @@ -58,26 +62,37 @@ public class AuthorizationContext implements Outputable { return getSupporterTicketId() != null && isInGroup(Group.SUPPORTER); } + private static final SprintfCommand sp = new SprintfCommand("Logged in as {0} via {1}.", Arrays.asList("${username}", "${loginMethod}")); + + private static final SprintfCommand inner = new SprintfCommand("{0} (on behalf of {1})", Arrays.asList("${user}", "${target}")); + @Override public void output(PrintWriter out, Language l, Map vars) { out.println("
"); - out.println(l.getTranslation("Logged in as")); - out.println(": "); - - if (target != actor) { - out.println(((Organisation) target).getName() + " (" + actor.getName().toString() + ")"); - } else { - out.println(actor.getName().toString()); - } - - out.println(l.getTranslation("with")); - out.println(vars.get("loginMethod")); + vars.put("username", new Outputable() { + + @Override + public void output(PrintWriter out, Language l, Map vars) { + if (target != actor) { + vars.put("user", ((Organisation) target).getName().toString()); + vars.put("target", actor.getName().toString()); + inner.output(out, l, vars); + } else { + out.println(actor.getName().toString()); + } + } + }); + sp.output(out, l, vars); out.println("
"); if (supporterTicketId != null) { out.println("
"); out.println(l.getTranslation("SupportTicket: ")); - out.println(supporterTicketId); + out.println(HTMLEncoder.encodeHTML(supporterTicketId)); out.println("
"); } } + + public boolean canAssure() { + return target instanceof User && ((User) target).canAssure(); + } }