package org.cacert.gigi.pages;
-import static org.cacert.gigi.Gigi.LOGGEDIN;
-import static org.cacert.gigi.Gigi.USER;
+import static org.cacert.gigi.Gigi.*;
import java.io.IOException;
import java.security.cert.X509Certificate;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
-import org.cacert.gigi.User;
import org.cacert.gigi.database.DatabaseConnection;
+import org.cacert.gigi.dbObjects.User;
+import org.cacert.gigi.localisation.Language;
import org.cacert.gigi.util.PasswordHash;
public class LoginPage extends Page {
ResultSet rs = ps.executeQuery();
if (rs.next()) {
if (PasswordHash.verifyHash(pw, rs.getString(1))) {
- req.getSession().invalidate();
- HttpSession hs = req.getSession();
- hs.setAttribute(LOGGEDIN, true);
- hs.setAttribute(USER, new User(rs.getInt(2)));
+ loginSession(req, new User(rs.getInt(2)));
}
}
rs.close();
private void tryAuthWithCertificate(HttpServletRequest req, X509Certificate x509Certificate) {
String serial = x509Certificate.getSerialNumber().toString(16).toUpperCase();
try {
- PreparedStatement ps = DatabaseConnection.getInstance().prepare("SELECT `memid` FROM `emailcerts` WHERE `serial`=? AND `disablelogin`='0' AND `revoked` = " + "'0000-00-00 00:00:00'");
+ PreparedStatement ps = DatabaseConnection.getInstance().prepare("SELECT `memid` FROM `certs` WHERE `serial`=? AND `disablelogin`='0' AND `revoked` = " + "'0000-00-00 00:00:00'");
ps.setString(1, serial);
ResultSet rs = ps.executeQuery();
if (rs.next()) {
- req.getSession().invalidate();
- HttpSession hs = req.getSession();
- hs.setAttribute(LOGGEDIN, true);
- hs.setAttribute(USER, new User(rs.getInt(1)));
+ loginSession(req, new User(rs.getInt(1)));
}
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
+
+ private void loginSession(HttpServletRequest req, User user) {
+ req.getSession().invalidate();
+ HttpSession hs = req.getSession();
+ hs.setAttribute(LOGGEDIN, true);
+ hs.setAttribute(Language.SESSION_ATTRIB_NAME, user.getPreferredLocale());
+ hs.setAttribute(USER, user);
+ }
+
+ @Override
+ public boolean isPermitted(User u) {
+ return u == null;
+ }
}