X-Git-Url: https://code.wpia.club/?a=blobdiff_plain;f=src%2Forg%2Fcacert%2Fgigi%2Futil%2FAuthorizationContext.java;h=6e4bd8bf4c1ec885f51ccf7f7caa661f568e6231;hb=035c67402c9c861257f0b74e18c00648425d4f31;hp=9d190f72d89f785e2bcd4e40044f9c65089b7eb5;hpb=4d9b0e8bdf122324cec9f3dd387c02d14c30877e;p=gigi.git diff --git a/src/org/cacert/gigi/util/AuthorizationContext.java b/src/org/cacert/gigi/util/AuthorizationContext.java index 9d190f72..6e4bd8bf 100644 --- a/src/org/cacert/gigi/util/AuthorizationContext.java +++ b/src/org/cacert/gigi/util/AuthorizationContext.java @@ -1,20 +1,38 @@ package org.cacert.gigi.util; +import java.io.PrintWriter; +import java.util.Map; + +import org.cacert.gigi.GigiApiException; import org.cacert.gigi.dbObjects.CertificateOwner; import org.cacert.gigi.dbObjects.Group; +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; -public class AuthorizationContext { +public class AuthorizationContext implements Outputable { CertificateOwner target; User actor; + String supporterTicketId; + public AuthorizationContext(CertificateOwner target, User actor) { this.target = target; 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; } @@ -33,4 +51,40 @@ public class AuthorizationContext { } return ac.getActor(); } + + public String getSupporterTicketId() { + return supporterTicketId; + } + + public boolean canSupport() { + return getSupporterTicketId() != null && isInGroup(Group.SUPPORTER); + } + + @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")); + ((Outputable) vars.get("loginMethod")).output(out, l, vars); + out.println(); + out.println("
"); + if (supporterTicketId != null) { + out.println("
"); + out.println(l.getTranslation("SupportTicket: ")); + out.println(HTMLEncoder.encodeHTML(supporterTicketId)); + out.println("
"); + } + } + + public boolean canAssure() { + return target instanceof User && ((User) target).canAssure(); + } }