1 package org.cacert.gigi.util;
3 import java.io.PrintWriter;
6 import org.cacert.gigi.GigiApiException;
7 import org.cacert.gigi.dbObjects.CertificateOwner;
8 import org.cacert.gigi.dbObjects.Group;
9 import org.cacert.gigi.dbObjects.Organisation;
10 import org.cacert.gigi.dbObjects.User;
11 import org.cacert.gigi.localisation.Language;
12 import org.cacert.gigi.output.template.Outputable;
14 public class AuthorizationContext implements Outputable {
16 CertificateOwner target;
20 String supporterTicketId;
22 public AuthorizationContext(CertificateOwner target, User actor) {
27 public AuthorizationContext(User actor, String supporterTicket) throws GigiApiException {
30 if ( !isInGroup(Group.SUPPORTER)) {
31 throw new GigiApiException("requires a supporter");
33 supporterTicketId = supporterTicket;
36 public CertificateOwner getTarget() {
40 public User getActor() {
44 public boolean isInGroup(Group g) {
45 return actor.isInGroup(g);
48 public User getActor(AuthorizationContext ac) {
55 public String getSupporterTicketId() {
56 return supporterTicketId;
59 public boolean canSupport() {
60 return getSupporterTicketId() != null && isInGroup(Group.SUPPORTER);
64 public void output(PrintWriter out, Language l, Map<String, Object> vars) {
66 out.println(l.getTranslation("Logged in as"));
69 if (target != actor) {
70 out.println(((Organisation) target).getName() + " (" + actor.getName().toString() + ")");
72 out.println(actor.getName().toString());
75 out.println(l.getTranslation("with"));
76 out.println(vars.get("loginMethod"));
77 out.println("</div>");
78 if (supporterTicketId != null) {
80 out.println(l.getTranslation("SupportTicket: "));
81 out.println(HTMLEncoder.encodeHTML(supporterTicketId));
82 out.println("</div>");
86 public boolean canAssure() {
87 return target instanceof User && ((User) target).canAssure();