diff --git a/src/main/java/geoinfo/main/login/LoginController.java b/src/main/java/geoinfo/main/login/LoginController.java index 0408b5f3..a9424e2d 100644 --- a/src/main/java/geoinfo/main/login/LoginController.java +++ b/src/main/java/geoinfo/main/login/LoginController.java @@ -58,6 +58,7 @@ import egovframework.com.cmm.EgovMessageSource; import egovframework.com.cmm.service.EgovProperties; import egovframework.rte.psl.dataaccess.util.EgovMap; import geoinfo.com.GeoinfoCommon; +import geoinfo.drilling.input.service.DrillingInputService; import geoinfo.main.login.service.LoginService; import geoinfo.main.main.MainController; import geoinfo.map.mapControl.service.MapControlService; @@ -80,6 +81,9 @@ public class LoginController { @Resource(name = "loginService") private LoginService loginService; + @Resource(name = "drillingInputService") + DrillingInputService drillingInputService; + @Resource(name="egovMessageSource") EgovMessageSource egovMessageSource; @@ -802,7 +806,7 @@ public class LoginController { // 로그인 횟수 제한 : 10분설정시 1/(24*6) 5분설정시 1/(24*12) map.put("userid", userid); Map selectWebMemberIn = loginService.selectWebMemberIn(map); - + cls = selectWebMemberIn.get("cls").toString(); boolean adminYn = false; @@ -1041,72 +1045,93 @@ public class LoginController { } else { - - // 로그인 성공시 실패회수 초기화 - map.put("loginCount", 0); - map.put("userid", userid); - loginService.pswdResetWebMemberIn(map); - - //최초 1회 지자체 사용자 인증 여부 - liq_yn = selectWebMemberIn.get("liq_yn").toString(); - map.put("liq_yn", liq_yn); - - // 2018-08-27 중복 로그인 방지. - // 2018-11-29. admin_user계정은 중복방지에서 제거 - // admin_user가 아닐 경우에만 세션 중복 방지 적용. - if (!adminYn && loginFlag) { - session.setAttribute("userId", id); - - String sessionId = session.getId(); - mv.addObject("sessionId", sessionId); - mv.addObject("name", session.getAttribute("userId")); - - dupLoginCheck(userid); - users.put(userid, session); - - // GeoInfoSessionMgrListener listener = new GeoInfoSessionMgrListener(); - // request.getSession().setAttribute(userid , listener); - } - - // 분기별 1회 비밀번호 공지 안내 - String strpswd_month = (String)selectWebMemberIn.get("PSWD_LIMIT"); - System.out.println(" 비밀번호 변경일자 - " + strpswd_month); - if (strpswd_month != null && ! "".equals(strpswd_month) ) { - int intpswd_month = Integer.parseInt(strpswd_month); - // 3개월마다 1번씩 비밀번호 변경 안내를 띄운다. - if ( intpswd_month >= 3 ) { - request.getSession().setAttribute("pswd_month", "Y"); - } - } - - if (cls.equals("1")) { - if (location.equals("left")) - url = "left.do"; - else if (location.equals("main")) - url = "main.do"; - else if (location.equals("left_sitemap")) - url = "home/main_sitemap.jsp"; - else - url = "index.do?cntyn=0"; - } else if (cls.equals("2")) { // 발주기관일경우 - if (location.equals("left")) - url = "left.do"; - else - url = "drilling/index.do"; - } else if (cls.equals("9")) { // 관리자일경우 - if (location.equals("left")) - url = "left.do"; - else - url = "index.do?cntyn"; + // 국토부 소속+산하기관 계정만 로그인 허용(국토부소속+산하기관:GL_CODE = 01) + HashMap userGMap = drillingInputService.getOrganizationUserGlGmGsGfCodes(userid); + String glCode = MyUtil.getStringFromObject( userGMap.get("v_gl") ); + if (!"01".equals(glCode)) { + msg = ""; + url = "index.do?cntyn=0"; + // --------------- 로그인 세션 정보 초기화 --------------------- + request.getSession().removeAttribute("USERID"); + request.getSession().removeAttribute("USERNAME"); + request.getSession().removeAttribute("COMPANYNAME"); + request.getSession().removeAttribute("MASTERCODE"); + request.getSession().removeAttribute("CLS"); + request.getSession().removeAttribute("GOVECODE"); + request.getSession().removeAttribute("USERIP"); // IP 추가 + request.getSession().removeAttribute("USERAGENT"); // 접속 브라우져 정보 + request.getSession().removeAttribute("PARTNNAME"); + request.getSession().removeAttribute("PHONE"); + request.getSession().removeAttribute("EMAIL"); + // --------------- 로그인 세션 정보 초기화 END ---------------- } else { - if (location.equals("left")) - url = "left.do"; - else if (location.equals("main")) - url = "main.do"; - else if (location.equals("left_sitemap")) - url = "home/main_sitemap.jsp"; - else - url = "index.do?cntyn=0"; + + // 로그인 성공시 실패회수 초기화 + map.put("loginCount", 0); + map.put("userid", userid); + loginService.pswdResetWebMemberIn(map); + + //최초 1회 지자체 사용자 인증 여부 + liq_yn = selectWebMemberIn.get("liq_yn").toString(); + map.put("liq_yn", liq_yn); + + // 2018-08-27 중복 로그인 방지. + // 2018-11-29. admin_user계정은 중복방지에서 제거 + // admin_user가 아닐 경우에만 세션 중복 방지 적용. + if (!adminYn && loginFlag) { + session.setAttribute("userId", id); + + String sessionId = session.getId(); + mv.addObject("sessionId", sessionId); + mv.addObject("name", session.getAttribute("userId")); + + dupLoginCheck(userid); + users.put(userid, session); + + // GeoInfoSessionMgrListener listener = new GeoInfoSessionMgrListener(); + // request.getSession().setAttribute(userid , listener); + } + + // 분기별 1회 비밀번호 공지 안내 + String strpswd_month = (String)selectWebMemberIn.get("PSWD_LIMIT"); + System.out.println(" 비밀번호 변경일자 - " + strpswd_month); + if (strpswd_month != null && ! "".equals(strpswd_month) ) { + int intpswd_month = Integer.parseInt(strpswd_month); + // 3개월마다 1번씩 비밀번호 변경 안내를 띄운다. + if ( intpswd_month >= 3 ) { + request.getSession().setAttribute("pswd_month", "Y"); + } + } + + if (cls.equals("1")) { + if (location.equals("left")) + url = "left.do"; + else if (location.equals("main")) + url = "main.do"; + else if (location.equals("left_sitemap")) + url = "home/main_sitemap.jsp"; + else + url = "index.do?cntyn=0"; + } else if (cls.equals("2")) { // 발주기관일경우 + if (location.equals("left")) + url = "left.do"; + else + url = "drilling/index.do"; + } else if (cls.equals("9")) { // 관리자일경우 + if (location.equals("left")) + url = "left.do"; + else + url = "index.do?cntyn"; + } else { + if (location.equals("left")) + url = "left.do"; + else if (location.equals("main")) + url = "main.do"; + else if (location.equals("left_sitemap")) + url = "home/main_sitemap.jsp"; + else + url = "index.do?cntyn=0"; + } } } }