package th.co.muangthai.endrprint.controller; import org.apache.log4j.Logger; import org.hibernate.cfg.Configuration; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.ResponseBody; import th.co.muangthai.endrprint.controller.service.LoginService; import th.co.muangthai.endrprint.model.bean.form.*; import th.co.muangthai.endrprint.model.bean.form.master.EndrUserLoginForm; import th.co.muangthai.endrprint.model.bean.master.EndrUserLoginBean; import th.co.muangthai.endrprint.model.wfservice.MTLGetUrlService; import th.co.muangthai.endrprint.model.wfservice.SearchPolicyDetailProxyService; import th.co.muangthai.endrprint.util.SessionUtil; import th.co.muangthai.endrprint.util.TextContent; import th.co.muangthai.endrprint.util.VSMUtil; import javax.servlet.ServletException; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.net.Inet4Address; import java.net.InetAddress; import java.net.NetworkInterface; import java.net.SocketException; import java.util.*; /** * Login management */ @Controller public class LoginController extends AbstractMasterController { private Logger log = Logger.getLogger(LoginController.class); /** * Check Login * @param request * @return Object[] */ @RequestMapping(value = "/LoginJsonController", method = RequestMethod.POST) public @ResponseBody Object[] searchGetLogin(HttpServletRequest request) { Object[] obj = new Object[2]; try { //log.info("LoginJsonController { " + SessionUtil.getIpClient()); log.info("LoginJsonController { "); //รับค่าจาก page String user = request.getParameter("user"); //แปลงค่าจาก เป็น Bean,List EndrUserLoginForm userBeans = mapper.readValue(user, EndrUserLoginForm.class); LoginService loginService = new LoginService(); EndrUserLoginForm loginBean = new EndrUserLoginForm(); loginBean.setUserId(userBeans.getUserId()); loginBean.setUserPassword(userBeans.getUserPassword()); EndrUserLoginForm userLogin = loginService.autherizeUser(loginBean); obj[0] = userLogin; obj[1] = SessionUtil.getSession().getAttribute("dv"); log.info("LoginJsonController }"); log.info("Login Id : "+ obj[0]); return obj;//toStringJson(gsonData.toJson(obj)); } catch (Exception ex) { log.error(ex.toString(), ex); obj[0] = new EndrUserLoginForm(); } return obj; } /** * Check Login * @param request * @return Object[] */ @RequestMapping(value = "/json/doCheckLogin", method = RequestMethod.POST) public @ResponseBody Object[] doCheckLogin(HttpServletRequest request) { Object[] obj = new Object[1]; try { obj[0] = SessionUtil.getSession().getAttribute("dv"); return obj;//toStringJson(gsonData.toJson(obj)); } catch (Exception ex) { log.error(ex.toString(), ex); obj[0] = new EndrUserLoginForm(); } return obj; } /** * get session * @param request * @return Object[] */ @RequestMapping(value = "/json/getSessionLogin", method = RequestMethod.POST) public @ResponseBody Object[] getSessionLogin(HttpServletRequest request) { Object[] obj = new Object[3]; try { log.info("getSessionLogin {"); EndrUserLoginBean loginForm = SessionUtil.getUserLoginForm(); if (null != loginForm && null != loginForm.getUserId()) { obj[0] = loginForm; obj[1] = TextContent.DEPLOYMENT_VERSION; obj[2] = "anupong".equals(loginForm.getUserId())?true:false; log.info("getSessionLogin }"); return obj; } obj[0] = 1; } catch (Exception ex) { log.error(ex.toString(), ex); obj[0] = 2; //ex.printStackTrace(); } return obj; } /** * logout clearSession * @param request */ @RequestMapping(value = "/logoutJsonController", method = RequestMethod.POST) public void logout(HttpServletRequest request) { try { log.info("logoutJsonController"); VSMUtil.SystemPrintDebugMode("........................... {"); clearSession(request); VSMUtil.SystemPrintDebugMode("........................... }"); } catch (Exception ex) { // log.error(ex.toString(), ex); } } /** * Get Cookie * @param request * @param response * @param ipAddress * @return String * @throws IOException * @throws ServletException */ @RequestMapping(value = "/getCookieController" ,method = RequestMethod.POST) public @ResponseBody String doGetCookie(HttpServletRequest request, HttpServletResponse response ,String ipAddress) throws IOException, ServletException{ String color = null; try{ String classId = request.getParameter("classId"); String flag = request.getParameter("flag"); Cookie[] cookies = request.getCookies(); boolean foundCookie = false; for(int i = 0; i < cookies.length; i++) { Cookie cookie1 = cookies[i]; if (cookie1.getName().equals("color")) { color = cookie1.getValue(); //log.info("bgcolor = " + cookie1.getValue()); //log.info("ip = " + cookie1.getValue()); foundCookie = true; }else if(cookie1.getName().equals("ip")){ //log.info("ip = " + cookie1.getValue()); foundCookie = true; } } if (VSMUtil.isNotEmpty(ipAddress)) { if(flag.equals("1")) { Cookie cookie1 = new Cookie("color", VSMUtil.isNotEmpty(classId) ? classId : "pink"); cookie1.setMaxAge(24 * 60 * 60); response.addCookie(cookie1); } if(!foundCookie) { Cookie cookie2 = new Cookie("ip", ipAddress); cookie2.setMaxAge(24 * 60 * 60); response.addCookie(cookie2); } } }catch (Exception ex){ } return color; } /** * logout clearSession * @param request */ @RequestMapping(value = "/callProcessWFMT", method = RequestMethod.POST) public @ResponseBody Object[] doCallProcessWFMT(HttpServletRequest request) { String applicationNo = "",url = ""; try { String policyNo = request.getParameter("policyNoParam"); String documentType = request.getParameter("documentTypeParam"); if(VSMUtil.isNotEmpty(policyNo)){ SearchPolicyDetailProxyService wfService = new SearchPolicyDetailProxyService(); applicationNo = wfService.querySearchPolicyDetail(policyNo); if(VSMUtil.isNotEmpty(applicationNo)){ MTLGetUrlService getUrlService = new MTLGetUrlService(); url = getUrlService.querySearchPolicyDetail(applicationNo,documentType); } }else{ } } catch (Exception ex) { // log.error(ex.toString(), ex); } return new Object[]{applicationNo,url}; } }