import org.cacert.gigi.pages.account.domain.DomainOverview;
import org.cacert.gigi.pages.account.mail.MailOverview;
import org.cacert.gigi.pages.admin.TTPAdminPage;
+import org.cacert.gigi.pages.error.AccessDenied;
import org.cacert.gigi.pages.error.PageNotFound;
import org.cacert.gigi.pages.main.RegisterPage;
import org.cacert.gigi.pages.orga.CreateOrgPage;
@Override
public void init() throws ServletException {
if ( !firstInstanceInited) {
+ putPage("/denied", new AccessDenied(), null);
putPage("/error", new PageNotFound(), null);
putPage("/login", new LoginPage("Password Login"), "CAcert.org");
getMenu("CAcert.org").addItem(new SimpleMenuItem("https://" + ServerConstants.getSecureHostNamePort() + "/login", "Certificate Login") {
servlet.addServlet(webAppServlet, "/*");
ErrorPageErrorHandler epeh = new ErrorPageErrorHandler();
epeh.addErrorPage(404, "/error");
+ epeh.addErrorPage(403, "/denied");
servlet.setErrorHandler(epeh);
HandlerList hl = new HandlerList();
import org.cacert.gigi.output.Form;
import org.cacert.gigi.output.template.IterableDataset;
import org.cacert.gigi.pages.Page;
+import org.cacert.gigi.pages.error.PageNotFound;
public class TTPAdminPage extends Page {
@Override
public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
String path = req.getPathInfo();
- if (path != null && path.length() > PATH.length()) {
+ if (path != null && path.length() > PATH.length() + 1) {
int id = Integer.parseInt(path.substring(1 + PATH.length()));
User u = User.getById(id);
- if ( !u.isInGroup(TTP_APPLICANT)) {
+ if (u == null || !u.isInGroup(TTP_APPLICANT)) {
+ req.setAttribute(PageNotFound.MESSAGE_ATTRIBUTE, "The TTP-request is not available anymore.");
resp.sendError(404);
return;
}
--- /dev/null
+package org.cacert.gigi.pages.error;
+
+import java.io.IOException;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.cacert.gigi.pages.Page;
+
+public class AccessDenied extends Page {
+
+ public AccessDenied() {
+ super("Access denied");
+ }
+
+ @Override
+ public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
+ getDefaultTemplate().output(resp.getWriter(), Page.getLanguage(req), null);
+ }
+
+ @Override
+ public boolean needsLogin() {
+ return false;
+ }
+
+}
--- /dev/null
+<p><?=_The access to this page has been denied to you.?></p>
package org.cacert.gigi.pages.error;
import java.io.IOException;
+import java.util.HashMap;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class PageNotFound extends Page {
+ public static final String MESSAGE_ATTRIBUTE = "message-Str";
+
public PageNotFound() {
super("File not found!");
}
@Override
public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
- getDefaultTemplate().output(resp.getWriter(), Page.getLanguage(req), null);
+ HashMap<String, Object> vars = new HashMap<>();
+ Object customMessage = req.getAttribute(MESSAGE_ATTRIBUTE);
+ if (customMessage == null) {
+ customMessage = getLanguage(req).getTranslation("Due to recent site changes bookmarks may no longer be valid, please update your bookmarks.");
+ }
+ vars.put("message", customMessage);
+ getDefaultTemplate().output(resp.getWriter(), Page.getLanguage(req), vars);
}
@Override
-<p><?=_Due to recent site changes bookmarks may no longer be valid, please update your bookmarks.?></p>
+<p><?=$message?></p>