zallery/src/zall/page/LoginServlet.java

76 lines
2.8 KiB
Java
Raw Normal View History

2018-07-23 16:55:28 +02:00
package zall.page;
import zall.Zallery;
2018-07-23 16:55:28 +02:00
import zall.ZalleryServlet;
import zall.bean.User;
import zall.manager.AuthenticationManager;
2018-11-05 10:28:30 +01:00
import zutil.ObjectUtil;
2018-07-23 16:55:28 +02:00
import zutil.db.DBConnection;
import zutil.log.LogUtil;
import zutil.ui.UserMessageManager;
import zutil.ui.UserMessageManager.MessageLevel;
2018-07-23 16:55:28 +02:00
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.sql.SQLException;
import java.util.logging.Logger;
2018-11-05 10:28:30 +01:00
import static zall.ZalleryConstants.SESSION_KEY_LOGIN_FRWD;
@WebServlet(LoginServlet.URI)
2018-07-23 16:55:28 +02:00
public class LoginServlet extends ZalleryServlet {
private static Logger logger = LogUtil.getLogger();
2018-08-04 23:15:51 +02:00
public static final String URI = "/login";
2018-07-25 15:36:57 +02:00
private static final String JSP_FILE = "page_login.jsp";
2018-07-23 16:55:28 +02:00
2018-08-04 23:15:51 +02:00
private static final String FORM_EMAIL = "email";
private static final String FORM_PASSWORD = "password";
2018-07-23 16:55:28 +02:00
public void doGet(HttpServletRequest request, HttpServletResponse response, DBConnection db) throws ServletException, IOException, SQLException {
// User already logged in?
User user = AuthenticationManager.getUserSession(request.getSession());
// Authenticate with cookies
if (user == null)
user = AuthenticationManager.authenticate(db, request, response);
// Forward user
if (user != null) {
logger.fine("User(" + user.getEmail() + ") already authenticated, forwarding to gallery.");
2018-11-05 10:28:30 +01:00
if (ObjectUtil.isEmpty(request.getSession().getAttribute(SESSION_KEY_LOGIN_FRWD)))
redirect((String)request.getSession().getAttribute(SESSION_KEY_LOGIN_FRWD), request, response);
else
redirect(GalleryServlet.URI, request, response);
2018-08-04 23:15:51 +02:00
} else {
include(JSP_FILE, request, response);
}
2018-07-23 16:55:28 +02:00
}
public void doPost(HttpServletRequest request, HttpServletResponse response, DBConnection db) throws SQLException, ServletException, IOException {
UserMessageManager msgs = Zallery.getUserMessage(request.getSession());
2018-07-23 16:55:28 +02:00
User user = AuthenticationManager.authenticate(db,
2018-08-04 23:15:51 +02:00
request.getParameter(FORM_EMAIL),
request.getParameter(FORM_PASSWORD),
request, response);
2018-07-23 16:55:28 +02:00
2018-07-24 16:23:53 +02:00
// Successful login
2018-07-23 16:55:28 +02:00
if (user != null) {
logger.fine("Authenticated user(" + user.getEmail() + ") successfully, forwarding to gallery.");
2018-08-08 20:32:26 +02:00
redirect(GalleryServlet.URI, request, response);
2018-07-23 16:55:28 +02:00
}
// Failed login
else {
msgs.add(new UserMessageManager.UserMessage(MessageLevel.ERROR, lang.getString("incorrect.user_or_pass")));
2018-08-08 20:32:26 +02:00
doGet(request, response, db);
2018-07-23 16:55:28 +02:00
}
}
}