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;
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 {
public Menu generateMenu() throws ServletException {
putPage("/denied", new AccessDenied(), null);
putPage("/error", new PageNotFound(), null);
- putPage("/login", new LoginPage("Password Login"), "CAcert.org");
+ putPage("/login", new LoginPage("Password Login"), null);
+ getMenu("CAcert.org").addItem(new SimpleMenuItem("https://" + ServerConstants.getWwwHostNamePort() + "/login", "Password Login") {
+
+ @Override
+ public boolean isPermitted(AuthorizationContext ac) {
+ return ac == null;
+ }
+ });
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);
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 {
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";
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();
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];
};
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");