zallery/src/zall/page/LoginServlet.java
2018-11-05 10:28:30 +01:00

75 lines
2.8 KiB
Java
Executable file

package zall.page;
import zall.Zallery;
import zall.ZalleryServlet;
import zall.bean.User;
import zall.manager.AuthenticationManager;
import zutil.ObjectUtil;
import zutil.db.DBConnection;
import zutil.log.LogUtil;
import zutil.ui.UserMessageManager;
import zutil.ui.UserMessageManager.MessageLevel;
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;
import static zall.ZalleryConstants.SESSION_KEY_LOGIN_FRWD;
@WebServlet(LoginServlet.URI)
public class LoginServlet extends ZalleryServlet {
private static Logger logger = LogUtil.getLogger();
public static final String URI = "/login";
private static final String JSP_FILE = "page_login.jsp";
private static final String FORM_EMAIL = "email";
private static final String FORM_PASSWORD = "password";
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.");
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);
} else {
include(JSP_FILE, request, response);
}
}
public void doPost(HttpServletRequest request, HttpServletResponse response, DBConnection db) throws SQLException, ServletException, IOException {
UserMessageManager msgs = Zallery.getUserMessage(request.getSession());
User user = AuthenticationManager.authenticate(db,
request.getParameter(FORM_EMAIL),
request.getParameter(FORM_PASSWORD),
request, response);
// Successful login
if (user != null) {
logger.fine("Authenticated user(" + user.getEmail() + ") successfully, forwarding to gallery.");
redirect(GalleryServlet.URI, request, response);
}
// Failed login
else {
msgs.add(new UserMessageManager.UserMessage(MessageLevel.ERROR, lang.getString("incorrect.user_or_pass")));
doGet(request, response, db);
}
}
}