]> WPIA git - gigi.git/commitdiff
ADD: Logout as page
authorJanis Streib <janis@dogcraft.de>
Wed, 27 Aug 2014 01:06:39 +0000 (03:06 +0200)
committerJanis Streib <janis@dogcraft.de>
Wed, 27 Aug 2014 01:06:57 +0000 (03:06 +0200)
src/org/cacert/gigi/Gigi.java
src/org/cacert/gigi/pages/LogoutPage.java [new file with mode: 0644]

index f013468e06d61d74a6bc718b833585b9ccfa678c..7a9aaffd4e00681ee6b698d4f75e3af632a0d927 100644 (file)
@@ -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.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;
 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("/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");
             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();
         // 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) {
 
         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 (file)
index 0000000..888ad0e
--- /dev/null
@@ -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;
+    }
+
+}