]> WPIA git - gigi.git/blobdiff - src/org/cacert/gigi/Gigi.java
Clean: use "authorizationContexts"
[gigi.git] / src / org / cacert / gigi / Gigi.java
index d153758ee31037dfaaf3d5b5794f01b13d27e50c..c5ee8cd3e6f9b46a2acf9f14e10f9528af156d85 100644 (file)
@@ -21,7 +21,11 @@ import javax.servlet.http.HttpServletResponse;
 import javax.servlet.http.HttpSession;
 
 import org.cacert.gigi.database.DatabaseConnection;
+import org.cacert.gigi.dbObjects.CACertificate;
+import org.cacert.gigi.dbObjects.CertificateOwner;
+import org.cacert.gigi.dbObjects.CertificateProfile;
 import org.cacert.gigi.dbObjects.DomainPingConfiguration;
+import org.cacert.gigi.dbObjects.Organisation;
 import org.cacert.gigi.dbObjects.User;
 import org.cacert.gigi.localisation.Language;
 import org.cacert.gigi.output.Menu;
@@ -59,6 +63,7 @@ import org.cacert.gigi.pages.wot.AssurePage;
 import org.cacert.gigi.pages.wot.MyPoints;
 import org.cacert.gigi.pages.wot.RequestTTPPage;
 import org.cacert.gigi.ping.PingerDaemon;
+import org.cacert.gigi.util.AuthorizationContext;
 import org.cacert.gigi.util.ServerConstants;
 
 public class Gigi extends HttpServlet {
@@ -105,8 +110,8 @@ public class Gigi extends HttpServlet {
             getMenu("CAcert.org").addItem(new SimpleMenuItem("https://" + ServerConstants.getSecureHostNamePort() + "/login", "Certificate Login") {
 
                 @Override
-                public boolean isPermitted(User u) {
-                    return u == null;
+                public boolean isPermitted(AuthorizationContext ac) {
+                    return ac == null;
                 }
             });
             putPage("/", new MainPage("CAcert - Home"), null);
@@ -127,8 +132,8 @@ public class Gigi extends HttpServlet {
             putPage(TTPAdminPage.PATH + "/*", new TTPAdminPage(), "Admin");
             putPage(CreateOrgPage.DEFAULT_PATH, new CreateOrgPage(), "Organisation Admin");
             putPage(ViewOrgPage.DEFAULT_PATH + "/*", new ViewOrgPage(), "Organisation Admin");
-            putPage(FindDomainPage.PATH, new FindDomainPage("Find Domain"), "System Admin");
             putPage(FindUserPage.PATH, new FindUserPage("Find User"), "System Admin");
+            putPage(FindDomainPage.PATH, new FindDomainPage("Find Domain"), "System Admin");
             putPage(SupportUserDetailsPage.PATH + "*", new SupportUserDetailsPage("Support: User Details"), null);
             if (testing) {
                 try {
@@ -185,7 +190,7 @@ public class Gigi extends HttpServlet {
 
     public static final String CERT_ISSUER = "org.cacert.gigi.issuer";
 
-    public static final String USER = "user";
+    public static final String AUTH_CONTEXT = "auth";
 
     public static final String LOGIN_METHOD = "org.cacert.gigi.loginMethod";
 
@@ -227,6 +232,10 @@ public class Gigi extends HttpServlet {
             super.init();
             return;
         }
+        // ensure those static initializers are finished
+        CACertificate.getById(1);
+        CertificateProfile.getById(1);
+
         MenuBuilder mb = new MenuBuilder();
         rootMenu = mb.generateMenu();
         pages = mb.getPages();
@@ -316,8 +325,8 @@ public class Gigi extends HttpServlet {
                 resp.sendRedirect("https://" + ServerConstants.getWwwHostNamePortSecure() + req.getPathInfo());
                 return;
             }
-            User currentPageUser = LoginPage.getUser(req);
-            if ( !p.isPermitted(currentPageUser)) {
+            AuthorizationContext currentAuthContext = LoginPage.getAuthorizationContext(req);
+            if ( !p.isPermitted(currentAuthContext)) {
                 if (hs.getAttribute("loggedin") == null) {
                     String request = req.getPathInfo();
                     request = request.split("\\?")[0];
@@ -359,14 +368,20 @@ public class Gigi extends HttpServlet {
             };
             Language lang = Page.getLanguage(req);
 
-            vars.put(Menu.USER_VALUE, currentPageUser);
+            vars.put(Menu.AUTH_VALUE, currentAuthContext);
             vars.put("menu", rootMenu);
             vars.put("title", lang.getTranslation(p.getTitle()));
             vars.put("static", getStaticTemplateVar(isSecure));
             vars.put("year", Calendar.getInstance().get(Calendar.YEAR));
             vars.put("content", content);
-            if (currentPageUser != null) {
-                vars.put("loggedInAs", currentPageUser.getName().toString());
+            if (currentAuthContext != null) {
+                CertificateOwner target = currentAuthContext.getTarget();
+                User currentPageUser = LoginPage.getUser(req);
+                if (target != currentPageUser) {
+                    vars.put("loggedInAs", ((Organisation) target).getName() + " (" + currentPageUser.getName().toString() + ")");
+                } else {
+                    vars.put("loggedInAs", currentPageUser.getName().toString());
+                }
                 vars.put("loginMethod", lang.getTranslation((String) req.getSession().getAttribute(LOGIN_METHOD)));
             }
             resp.setContentType("text/html; charset=utf-8");