75 lines
2.8 KiB
Java
Executable file
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);
|
|
}
|
|
}
|
|
}
|