]> WPIA git - gigi.git/blob - src/org/cacert/gigi/Gigi.java
Fix logout from unpw login.
[gigi.git] / src / org / cacert / gigi / Gigi.java
1 package org.cacert.gigi;
2
3 import java.io.IOException;
4 import java.security.cert.X509Certificate;
5
6 import javax.servlet.ServletException;
7 import javax.servlet.http.HttpServlet;
8 import javax.servlet.http.HttpServletRequest;
9 import javax.servlet.http.HttpServletResponse;
10 import javax.servlet.http.HttpSession;
11
12 public class Gigi extends HttpServlet {
13         @Override
14         protected void service(HttpServletRequest req, HttpServletResponse resp)
15                         throws ServletException, IOException {
16                 X509Certificate[] cert = (X509Certificate[]) req
17                                 .getAttribute("javax.servlet.request.X509Certificate");
18                 HttpSession hs = req.getSession(false);
19                 if (hs == null || !((Boolean) hs.getAttribute("loggedin"))) {
20                         if (cert != null) {
21                                 tryAuthWithCertificate(req, cert[0]);
22                                 hs = req.getSession(false);
23                         }
24                 }
25                 if (req.getMethod().equals("POST") && req.getPathInfo() != null
26                                 && req.getPathInfo().equals("/login")) {
27                         authWithUnpw(req);
28                         resp.sendRedirect("/");
29                         return;
30                 }
31                 if (req.getPathInfo() != null && req.getPathInfo().equals("/logout")) {
32                         if (hs != null) {
33                                 hs.setAttribute("loggedin", false);
34                                 hs.invalidate();
35                         }
36                         resp.sendRedirect("/");
37                         return;
38                 }
39
40                 if (hs == null || !((Boolean) hs.getAttribute("loggedin"))) {
41                         resp.setContentType("text/html");
42                         resp.getWriter().println("Access denied. Sending login form.");
43                         resp.getWriter()
44                                         .println(
45                                                         "<form method='POST' action='/login'>"
46                                                                         + "<input type='text' name='username'>"
47                                                                         + "<input type='password' name='password'> <input type='submit' value='login'></form>");
48                         return;
49                 }
50                 resp.getWriter().println("Access granted.");
51
52         }
53         private void authWithUnpw(HttpServletRequest req) {
54                 String un = req.getParameter("username");
55                 String pw = req.getParameter("password");
56                 // TODO dummy password check if (un.equals(pw)) {
57                 HttpSession hs = req.getSession();
58                 hs.setAttribute("loggedin", true);
59         }
60         private void tryAuthWithCertificate(HttpServletRequest req,
61                         X509Certificate x509Certificate) {
62                 // TODO ckeck if certificate is valid
63                 HttpSession hs = req.getSession();
64                 hs.setAttribute("loggedin", true);
65         }
66 }