]> WPIA git - gigi.git/blobdiff - src/org/cacert/gigi/Gigi.java
upd: split certificate issuance as organisation into seperate
[gigi.git] / src / org / cacert / gigi / Gigi.java
index ff7f39b52fa9840b11c916a84e69288c7fdcc1b8..63ce7fe8d21a99de14fbdd300e24ef1491da8e2c 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;
@@ -30,6 +34,7 @@ import org.cacert.gigi.output.SimpleMenuItem;
 import org.cacert.gigi.output.template.Form.CSRFException;
 import org.cacert.gigi.output.template.Outputable;
 import org.cacert.gigi.output.template.Template;
+import org.cacert.gigi.pages.HandlesMixedRequest;
 import org.cacert.gigi.pages.LoginPage;
 import org.cacert.gigi.pages.LogoutPage;
 import org.cacert.gigi.pages.MainPage;
@@ -58,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 {
@@ -126,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 {
@@ -184,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";
 
@@ -226,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();
@@ -315,6 +325,7 @@ public class Gigi extends HttpServlet {
                 resp.sendRedirect("https://" + ServerConstants.getWwwHostNamePortSecure() + req.getPathInfo());
                 return;
             }
+            AuthorizationContext currentAuthContext = LoginPage.getAuthorizationContext(req);
             User currentPageUser = LoginPage.getUser(req);
             if ( !p.isPermitted(currentPageUser)) {
                 if (hs.getAttribute("loggedin") == null) {
@@ -337,7 +348,7 @@ public class Gigi extends HttpServlet {
                 public void output(PrintWriter out, Language l, Map<String, Object> vars) {
                     try {
                         if (req.getMethod().equals("POST")) {
-                            if (req.getQueryString() != null) {
+                            if (req.getQueryString() != null && !(p instanceof HandlesMixedRequest)) {
                                 return;
                             }
                             p.doPost(req, resp);
@@ -365,7 +376,12 @@ public class Gigi extends HttpServlet {
             vars.put("year", Calendar.getInstance().get(Calendar.YEAR));
             vars.put("content", content);
             if (currentPageUser != null) {
-                vars.put("loggedInAs", currentPageUser.getName().toString());
+                CertificateOwner target = currentAuthContext.getTarget();
+                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");