package com.app.mvc.acl.servlet;
import com.app.mvc.acl.domain.SysUser;
import com.app.mvc.acl.service.SysUserService;
import com.app.mvc.acl.util.LoginUtil;
import com.app.mvc.common.SpringHelper;
import com.app.mvc.util.IpUtil;
import com.app.mvc.util.MD5Util;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
* Created by jimin on 15/11/22.
*/
@Slf4j
public class LoginServlet extends HttpServlet {
private SysUserService sysUserService = SpringHelper.popBean(SysUserService.class);
@Override
public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req, resp);
}
@Override
public void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String username = req.getParameter("username");
String password = req.getParameter("password");
String ip = IpUtil.getUserIP(req);
SysUser sysUser = sysUserService.findByUsernameOrEmail(username);
String error = "";
String ret = req.getParameter("ret");
if (StringUtils.isBlank(username)) {
log.info("login error, username is blank, ip:{}", ip);
error = "login error, username is blank";
} else if (StringUtils.isBlank(password)) {
log.info("login error, password is blank, ip:{}", ip);
error = "login error, password is blank";
} else if (sysUser == null) {
log.info("login error, username not exist, ip:{}, username:{}", ip, username);
error = "login error, username not exist";
} else if (!sysUser.getPassword().equalsIgnoreCase(MD5Util.encrypt(password))) {
log.info("login error, password is error, ip:{}, username:{}, password:{}", ip, username, password);
error = "login error, password is error";
} else if (sysUser.getStatus() != 1) {
log.info("login error, user invalid, ip:{}, username:{}", ip, username);
error = "login error, user invalid";
} else {
log.info("login succeed, ip:{}, username:{}", ip, username);
LoginUtil.saveUserToCookie(req, resp, sysUser);
if (StringUtils.isBlank(ret)) {
resp.sendRedirect("/admin/page.do");
} else {
resp.sendRedirect(ret);
}
return;
}
req.setAttribute("error", error);
req.setAttribute("username", username);
if (StringUtils.isNotBlank(ret)) {
req.setAttribute("ret", ret);
}
String path = "signin.jsp";
req.getRequestDispatcher(path).forward(req, resp);
return;
}
}