]> WPIA git - gigi.git/blob - src/org/cacert/gigi/util/AuthorizationContext.java
16f458cafd09d934d29686acfab91ce4caac0a80
[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 CertificateOwner getTarget() {
28         return target;
29     }
30
31     public User getActor() {
32         return actor;
33     }
34
35     public boolean isInGroup(Group g) {
36         return actor.isInGroup(g);
37     }
38
39     public User getActor(AuthorizationContext ac) {
40         if (ac == null) {
41             return null;
42         }
43         return ac.getActor();
44     }
45
46     public void setSupporterTicketId(String supporterTicketId) throws GigiApiException {
47         if ( !isInGroup(Group.SUPPORTER)) {
48             throw new GigiApiException("requires a supporter");
49         }
50         this.supporterTicketId = supporterTicketId;
51     }
52
53     public String getSupporterTicketId() {
54         return supporterTicketId;
55     }
56
57     public boolean canSupport() {
58         return getSupporterTicketId() != null && isInGroup(Group.SUPPORTER);
59     }
60
61     @Override
62     public void output(PrintWriter out, Language l, Map<String, Object> vars) {
63         out.println("<div>");
64         out.println(l.getTranslation("Logged in as"));
65         out.println(": ");
66
67         if (target != actor) {
68             out.println(((Organisation) target).getName() + " (" + actor.getName().toString() + ")");
69         } else {
70             out.println(actor.getName().toString());
71         }
72
73         out.println(l.getTranslation("with"));
74         out.println(vars.get("loginMethod"));
75         out.println("</div>");
76         if (supporterTicketId != null) {
77             out.println("<div>");
78             out.println(l.getTranslation("SupportTicket: "));
79             out.println(supporterTicketId);
80             out.println("</div>");
81         }
82     }
83 }