From 1a7b5b300fcbe7aa978dc131b57b31909161139c Mon Sep 17 00:00:00 2001 From: Janis Streib Date: Wed, 27 Aug 2014 03:06:39 +0200 Subject: [PATCH] ADD: Logout as page --- src/org/cacert/gigi/Gigi.java | 10 ++---- src/org/cacert/gigi/pages/LogoutPage.java | 38 +++++++++++++++++++++++ 2 files changed, 40 insertions(+), 8 deletions(-) create mode 100644 src/org/cacert/gigi/pages/LogoutPage.java diff --git a/src/org/cacert/gigi/Gigi.java b/src/org/cacert/gigi/Gigi.java index f013468e..7a9aaffd 100644 --- a/src/org/cacert/gigi/Gigi.java +++ b/src/org/cacert/gigi/Gigi.java @@ -22,6 +22,7 @@ import org.cacert.gigi.output.Outputable; import org.cacert.gigi.output.PageMenuItem; import org.cacert.gigi.output.template.Template; import org.cacert.gigi.pages.LoginPage; +import org.cacert.gigi.pages.LogoutPage; import org.cacert.gigi.pages.MainPage; import org.cacert.gigi.pages.Page; import org.cacert.gigi.pages.StaticPage; @@ -80,6 +81,7 @@ public class Gigi extends HttpServlet { putPage("/login", new LoginPage("CAcert - Login"), "Join CAcert.org"); putPage("/", new MainPage("CAcert - Home"), null); putPage(ChangePasswordPage.PATH, new ChangePasswordPage(), "My Account"); + putPage(LogoutPage.PATH, new LogoutPage("Logout"), "My Account"); putPage("/secure", new TestSecure(), null); putPage(Verify.PATH, new Verify(), null); putPage(AssurePage.PATH + "/*", new AssurePage(), "CAcert Web of Trust"); @@ -132,14 +134,6 @@ public class Gigi extends HttpServlet { // return; // } HttpSession hs = req.getSession(); - if (req.getPathInfo() != null && req.getPathInfo().equals("/logout")) { - if (hs != null) { - hs.setAttribute(LOGGEDIN, null); - hs.invalidate(); - } - resp.sendRedirect("/"); - return; - } final Page p = getPage(req.getPathInfo()); if (p != null) { diff --git a/src/org/cacert/gigi/pages/LogoutPage.java b/src/org/cacert/gigi/pages/LogoutPage.java new file mode 100644 index 00000000..888ad0ef --- /dev/null +++ b/src/org/cacert/gigi/pages/LogoutPage.java @@ -0,0 +1,38 @@ +package org.cacert.gigi.pages; + +import java.io.IOException; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; + +import org.cacert.gigi.Gigi; +import org.cacert.gigi.User; + +public class LogoutPage extends Page { + + public static final String PATH = "/logout"; + + public LogoutPage(String title) { + super(title); + } + + @Override + public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException { + HttpSession hs = req.getSession(); + if (req.getPathInfo() != null && req.getPathInfo().equals("/logout")) { + if (hs != null) { + hs.setAttribute(Gigi.LOGGEDIN, null); + hs.invalidate(); + } + resp.sendRedirect("/"); + return; + } + } + + @Override + public boolean isPermitted(User u) { + return u != null; + } + +} -- 2.39.2