]> WPIA git - gigi.git/blob - src/org/cacert/gigi/util/AuthorizationContext.java
6e4bd8bf4c1ec885f51ccf7f7caa661f568e6231
[gigi.git] / src / org / cacert / gigi / util / AuthorizationContext.java
1 package org.cacert.gigi.util;
2
3 import java.io.PrintWriter;
4 import java.util.Map;
5
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;
13
14 public class AuthorizationContext implements Outputable {
15
16     CertificateOwner target;
17
18     User actor;
19
20     String supporterTicketId;
21
22     public AuthorizationContext(CertificateOwner target, User actor) {
23         this.target = target;
24         this.actor = actor;
25     }
26
27     public AuthorizationContext(User actor, String supporterTicket) throws GigiApiException {
28         this.target = actor;
29         this.actor = actor;
30         if ( !isInGroup(Group.SUPPORTER)) {
31             throw new GigiApiException("requires a supporter");
32         }
33         supporterTicketId = supporterTicket;
34     }
35
36     public CertificateOwner getTarget() {
37         return target;
38     }
39
40     public User getActor() {
41         return actor;
42     }
43
44     public boolean isInGroup(Group g) {
45         return actor.isInGroup(g);
46     }
47
48     public User getActor(AuthorizationContext ac) {
49         if (ac == null) {
50             return null;
51         }
52         return ac.getActor();
53     }
54
55     public String getSupporterTicketId() {
56         return supporterTicketId;
57     }
58
59     public boolean canSupport() {
60         return getSupporterTicketId() != null && isInGroup(Group.SUPPORTER);
61     }
62
63     @Override
64     public void output(PrintWriter out, Language l, Map<String, Object> vars) {
65         out.println("<div>");
66         out.println(l.getTranslation("Logged in as"));
67         out.println(": ");
68
69         if (target != actor) {
70             out.println(((Organisation) target).getName() + " (" + actor.getName().toString() + ")");
71         } else {
72             out.println(actor.getName().toString());
73         }
74
75         out.println(l.getTranslation("with"));
76         ((Outputable) vars.get("loginMethod")).output(out, l, vars);
77         out.println();
78         out.println("</div>");
79         if (supporterTicketId != null) {
80             out.println("<div>");
81             out.println(l.getTranslation("SupportTicket: "));
82             out.println(HTMLEncoder.encodeHTML(supporterTicketId));
83             out.println("</div>");
84         }
85     }
86
87     public boolean canAssure() {
88         return target instanceof User && ((User) target).canAssure();
89     }
90 }