import org.cacert.gigi.util.PasswordHash;
public class LoginPage extends Page {
+ public static final String LOGIN_RETURNPATH = "login-returnpath";
+
public LoginPage(String title) {
super(title);
}
@Override
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws IOException {
+ resp.getWriter()
+ .println(
+ "<form method='POST' action='/login'>"
+ + "<input type='text' name='username'>"
+ + "<input type='password' name='password'> <input type='submit' value='login'></form>");
+ }
+
+ @Override
+ public boolean beforeTemplate(HttpServletRequest req,
+ HttpServletResponse resp) throws IOException {
HttpSession hs = req.getSession();
if (hs.getAttribute("loggedin") == null) {
X509Certificate[] cert = (X509Certificate[]) req
}
}
- if (hs.getAttribute("loggedin") != null) { // Redir from login
- resp.sendRedirect("/");
- return;
+ if (hs.getAttribute("loggedin") != null) {
+ String s = (String) req.getSession().getAttribute(LOGIN_RETURNPATH);
+ if (s != null) {
+ if (!s.startsWith("/")) {
+ s = "/" + s;
+ }
+ resp.sendRedirect(s);
+ } else {
+ resp.sendRedirect("/");
+ }
+ return true;
}
-
- resp.getWriter()
- .println(
- "<form method='POST' action='/login'>"
- + "<input type='text' name='username'>"
- + "<input type='password' name='password'> <input type='submit' value='login'></form>");
+ return false;
}
@Override
public boolean needsLogin() {
String un = req.getParameter("username");
String pw = req.getParameter("password");
try {
- PreparedStatement ps = DatabaseConnection.getInstance().prepare(
- "SELECT `password`, `id` FROM `users` WHERE `email`=?");
+ PreparedStatement ps = DatabaseConnection
+ .getInstance()
+ .prepare(
+ "SELECT `password`, `id` FROM `users` WHERE `email`=? AND locked='0' AND verified='1'");
ps.setString(1, un);
ResultSet rs = ps.executeQuery();
if (rs.next()) {
e.printStackTrace();
}
}
+ public static User getUser(HttpServletRequest req) {
+ return (User) req.getSession().getAttribute(USER);
+ }
private void tryAuthWithCertificate(HttpServletRequest req,
X509Certificate x509Certificate) {
String serial = x509Certificate.getSerialNumber().toString(16)