국토교통부 외 계정 잠금 처리

main
유지인 2025-11-03 14:19:35 +09:00
parent 5b8d1e0b03
commit 1cb5599a54
1 changed files with 91 additions and 66 deletions

View File

@ -58,6 +58,7 @@ import egovframework.com.cmm.EgovMessageSource;
import egovframework.com.cmm.service.EgovProperties; import egovframework.com.cmm.service.EgovProperties;
import egovframework.rte.psl.dataaccess.util.EgovMap; import egovframework.rte.psl.dataaccess.util.EgovMap;
import geoinfo.com.GeoinfoCommon; import geoinfo.com.GeoinfoCommon;
import geoinfo.drilling.input.service.DrillingInputService;
import geoinfo.main.login.service.LoginService; import geoinfo.main.login.service.LoginService;
import geoinfo.main.main.MainController; import geoinfo.main.main.MainController;
import geoinfo.map.mapControl.service.MapControlService; import geoinfo.map.mapControl.service.MapControlService;
@ -80,6 +81,9 @@ public class LoginController {
@Resource(name = "loginService") @Resource(name = "loginService")
private LoginService loginService; private LoginService loginService;
@Resource(name = "drillingInputService")
DrillingInputService drillingInputService;
@Resource(name="egovMessageSource") @Resource(name="egovMessageSource")
EgovMessageSource egovMessageSource; EgovMessageSource egovMessageSource;
@ -802,7 +806,7 @@ public class LoginController {
// 로그인 횟수 제한 : 10분설정시 1/(24*6) 5분설정시 1/(24*12) // 로그인 횟수 제한 : 10분설정시 1/(24*6) 5분설정시 1/(24*12)
map.put("userid", userid); map.put("userid", userid);
Map<String, Object> selectWebMemberIn = loginService.selectWebMemberIn(map); Map<String, Object> selectWebMemberIn = loginService.selectWebMemberIn(map);
cls = selectWebMemberIn.get("cls").toString();
boolean adminYn = false; boolean adminYn = false;
@ -1041,72 +1045,93 @@ public class LoginController {
} }
else { else {
// 국토부 소속+산하기관 계정만 로그인 허용(국토부소속+산하기관:GL_CODE = 01)
// 로그인 성공시 실패회수 초기화 HashMap<String, Object> userGMap = drillingInputService.getOrganizationUserGlGmGsGfCodes(userid);
map.put("loginCount", 0); String glCode = MyUtil.getStringFromObject( userGMap.get("v_gl") );
map.put("userid", userid); if (!"01".equals(glCode)) {
loginService.pswdResetWebMemberIn(map); msg = "<script>alert('해당 계정은 현재 잠김 상태입니다');</script>";
url = "index.do?cntyn=0";
//최초 1회 지자체 사용자 인증 여부 // --------------- 로그인 세션 정보 초기화 ---------------------
liq_yn = selectWebMemberIn.get("liq_yn").toString(); request.getSession().removeAttribute("USERID");
map.put("liq_yn", liq_yn); request.getSession().removeAttribute("USERNAME");
request.getSession().removeAttribute("COMPANYNAME");
// 2018-08-27 중복 로그인 방지. request.getSession().removeAttribute("MASTERCODE");
// 2018-11-29. admin_user계정은 중복방지에서 제거 request.getSession().removeAttribute("CLS");
// admin_user가 아닐 경우에만 세션 중복 방지 적용. request.getSession().removeAttribute("GOVECODE");
if (!adminYn && loginFlag) { request.getSession().removeAttribute("USERIP"); // IP 추가
session.setAttribute("userId", id); request.getSession().removeAttribute("USERAGENT"); // 접속 브라우져 정보
request.getSession().removeAttribute("PARTNNAME");
String sessionId = session.getId(); request.getSession().removeAttribute("PHONE");
mv.addObject("sessionId", sessionId); request.getSession().removeAttribute("EMAIL");
mv.addObject("name", session.getAttribute("userId")); // --------------- 로그인 세션 정보 초기화 END ----------------
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 { } else {
if (location.equals("left"))
url = "left.do"; // 로그인 성공시 실패회수 초기화
else if (location.equals("main")) map.put("loginCount", 0);
url = "main.do"; map.put("userid", userid);
else if (location.equals("left_sitemap")) loginService.pswdResetWebMemberIn(map);
url = "home/main_sitemap.jsp";
else //최초 1회 지자체 사용자 인증 여부
url = "index.do?cntyn=0"; 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";
}
} }
} }
} }