|
|
|
|
@ -1463,7 +1463,596 @@ public class EgovLoginController {
|
|
|
|
|
* @return result - 로그인결과(세션정보)
|
|
|
|
|
* @exception Exception
|
|
|
|
|
*/
|
|
|
|
|
@RequestMapping(value = "/web/user/login/actionSecurityLogin.do")
|
|
|
|
|
@RequestMapping(value = "/web/user/login/actionSecurityLogin_bak_00.do")
|
|
|
|
|
public String selectActionSecurityLoginWeb_bak(@ModelAttribute("loginVO") LoginVO loginVO, HttpServletResponse response,
|
|
|
|
|
HttpServletRequest request, @RequestParam Map<String, Object> commandMap, ModelMap model,
|
|
|
|
|
HttpSession session, RedirectAttributes redirectAttributes) throws Exception {
|
|
|
|
|
|
|
|
|
|
String userIp = EgovClntInfo.getClntIP(request);
|
|
|
|
|
HackIpVO hackIpVO = new HackIpVO();
|
|
|
|
|
hackIpVO.setAccessIp(userIp);
|
|
|
|
|
hackIpVO.setBlockYn("Y");
|
|
|
|
|
if (null != hackIpService.selectHackIpVO(hackIpVO)) {
|
|
|
|
|
String message = "차단된 아이피입니다. 관리자에게 문의해 주십시요.";
|
|
|
|
|
redirectAttributes.addFlashAttribute("message", message);
|
|
|
|
|
return "redirect:/";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*ScriptEngineManager engine = new ScriptEngineManager();*/
|
|
|
|
|
|
|
|
|
|
loginVO.setUserSe("USR");
|
|
|
|
|
// 로그인 정보 check
|
|
|
|
|
|
|
|
|
|
if (loginVO.getId() == null || loginVO.getPassword() == null) {
|
|
|
|
|
// 회원가입 시 로그인 처리
|
|
|
|
|
LoginVO pLoginVO = (LoginVO) request.getAttribute("pLoginVO");
|
|
|
|
|
if (pLoginVO == null) {
|
|
|
|
|
// RSA 키 생성
|
|
|
|
|
initRsa(request);
|
|
|
|
|
/* return "redirect:/web/user/login/login.do"; */
|
|
|
|
|
return "redirect:/";
|
|
|
|
|
} else {
|
|
|
|
|
loginVO.setId(pLoginVO.getId());
|
|
|
|
|
loginVO.setPassword(pLoginVO.getPassword());
|
|
|
|
|
loginVO.setBeforeUrl(pLoginVO.getBeforeUrl());
|
|
|
|
|
loginVO.setMessage(pLoginVO.getMessage());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 1. 일반 로그인 처리
|
|
|
|
|
PrivateKey privateKey = (PrivateKey) session.getAttribute(EgovLoginController.RSA_WEB_KEY);
|
|
|
|
|
if (privateKey == null) {
|
|
|
|
|
initRsa(request);
|
|
|
|
|
/*return "web/site/login/EgovLoginGnrlUsr";*/
|
|
|
|
|
String message = "아이디와 비밀번호를 확인해주세요.";
|
|
|
|
|
redirectAttributes.addFlashAttribute("message", message);
|
|
|
|
|
System.out.println("======================================================");
|
|
|
|
|
System.out.println("= RSA privateKey is null =");
|
|
|
|
|
System.out.println("======================================================");
|
|
|
|
|
return "redirect:/web/main/mainPage.do";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
LoginVO resultVO;
|
|
|
|
|
// 복호화
|
|
|
|
|
String id = "";
|
|
|
|
|
try {
|
|
|
|
|
//아이디 복호화 후 소문자 변환
|
|
|
|
|
id = decryptRsa(privateKey, loginVO.getId()).toLowerCase();
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
initRsa(request);
|
|
|
|
|
// return "redirect:/web/user/login/login.do";
|
|
|
|
|
if (loginVO.getBeforeUrl().toString().contains("/web/user/login/login.do")) {
|
|
|
|
|
redirectAttributes.addFlashAttribute("fail", true);
|
|
|
|
|
return "redirect:/web/user/login/login.do";
|
|
|
|
|
}
|
|
|
|
|
return "redirect:/";
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
String password = decryptRsa(privateKey, loginVO.getPassword());
|
|
|
|
|
loginVO.setId(id);
|
|
|
|
|
loginVO.setIp(EgovClntInfo.getClntIP(request));
|
|
|
|
|
loginVO.setPassword(password);
|
|
|
|
|
loginVO.setUserSe("GNR");
|
|
|
|
|
loginVO.setStatusAll("Y"); // 신청대기중인 사용자까지 조회
|
|
|
|
|
|
|
|
|
|
//기업회원 가입중인지 체크 - 기존 로그인 select는 MBER_STTUS = 'Y'가 하드코딩이라 로그인 전 기업회원 가입중인지 선 체크
|
|
|
|
|
//암호화 2번 방지를 위한 LoginVO 생성
|
|
|
|
|
LoginVO loginCmpChkVO = new LoginVO();
|
|
|
|
|
loginCmpChkVO.setId(id);
|
|
|
|
|
loginCmpChkVO.setIp(EgovClntInfo.getClntIP(request));
|
|
|
|
|
loginCmpChkVO.setPassword(password);
|
|
|
|
|
loginCmpChkVO.setUserSe("GNR");
|
|
|
|
|
loginCmpChkVO.setStatusAll("Y"); // 신청대기중인 사용자까지 조회
|
|
|
|
|
loginCmpChkVO.setEmplyrSttusCode("A"); // 신청대기중인 사용자까지 조회
|
|
|
|
|
LoginVO cmpHstResultVO = loginService.actionLoginCmpChk(loginCmpChkVO);
|
|
|
|
|
if(null != cmpHstResultVO.getId()) {
|
|
|
|
|
//기업회원 정보 마지막 내역 조회
|
|
|
|
|
MberManageVO mberManageVO = new MberManageVO();
|
|
|
|
|
mberManageVO.setMberId(loginVO.getId());
|
|
|
|
|
MberManageVO cmpChangeManageVO = mberManageService.selectCmpUsrHst(mberManageVO);
|
|
|
|
|
if(null != cmpChangeManageVO) {
|
|
|
|
|
if("01".equals(cmpChangeManageVO.getHstType())) { //가장 마지막 내역이 기업회원 가입일 시
|
|
|
|
|
if("01".equals(cmpChangeManageVO.getHstSttus()) || "03".equals(cmpChangeManageVO.getHstSttus()) ) { //가장 마지막 기업회원 가입이 신청 또는 반려 상태일 시
|
|
|
|
|
redirectAttributes.addFlashAttribute("mberId", loginVO.getId());
|
|
|
|
|
//addFlashAttribute 일회성으로 인하여 membershipAttachDocBefore.do 이동 후
|
|
|
|
|
//membershipAttachDoc.do로 바로 submit하여 새로고침 시 정보 유지되게 끔 처리
|
|
|
|
|
return "redirect:/web/user/login/membershipAttachDocBefore.do";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
//스팸처리 회원인지 mj_spam_member_info 해당 ID의 최근 1개 데이터 조회
|
|
|
|
|
LoginVO loginSmiChkVO = new LoginVO();
|
|
|
|
|
loginSmiChkVO.setId(id);
|
|
|
|
|
loginSmiChkVO.setIp(EgovClntInfo.getClntIP(request));
|
|
|
|
|
loginSmiChkVO.setPassword(password);
|
|
|
|
|
loginSmiChkVO.setUserSe("GNR");
|
|
|
|
|
loginSmiChkVO.setStatusAll("Y"); // 신청대기중인 사용자까지 조회
|
|
|
|
|
loginSmiChkVO.setEmplyrSttusCode("B"); // 신청대기중인 사용자까지 조회
|
|
|
|
|
LoginVO smiResultVO = loginService.actionLoginCmpChk(loginSmiChkVO);
|
|
|
|
|
if(null != smiResultVO.getId()) {
|
|
|
|
|
MberManageVO spamMberManageVO = new MberManageVO();
|
|
|
|
|
spamMberManageVO.setMberId(loginVO.getId());
|
|
|
|
|
MberManageVO spamMemberInfoVO = mberManageService.selectSpamMemberInfo(spamMberManageVO);
|
|
|
|
|
if(null != spamMemberInfoVO) {
|
|
|
|
|
redirectAttributes.addFlashAttribute("mberId", loginVO.getId());
|
|
|
|
|
return "redirect:/web/user/login/loginRestrictionUseBefore.do";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
resultVO = loginService.actionLogin(loginVO);
|
|
|
|
|
LoginVO passMissVO = loginService.selectPassMiss(loginVO);
|
|
|
|
|
|
|
|
|
|
String alertMessage = "";
|
|
|
|
|
if (!"admin".equals(loginVO.getId())) {
|
|
|
|
|
//아이디가 존재
|
|
|
|
|
if(passMissVO != null) {
|
|
|
|
|
// 로그인 실패 (
|
|
|
|
|
if (null == resultVO.getId() && passMissVO.getPassMiss() < 5 ) {
|
|
|
|
|
loginService.updatePassMissPlus(loginVO);
|
|
|
|
|
alertMessage = egovMessageSource.getMessage("fail.common.login");
|
|
|
|
|
|
|
|
|
|
// 로그인 실패시 해킹의심 IP 테이블에 등록_아이디는 있지만 비밀번호가 틀린상황
|
|
|
|
|
/// HackIpVO hackIpVO = new HackIpVO();
|
|
|
|
|
hackIpVO.setHackUserId(loginVO.getId());
|
|
|
|
|
hackIpVO.setAccessIp( EgovClntInfo.getClntIP(request));
|
|
|
|
|
hackIpService.insertHackIp(hackIpVO);
|
|
|
|
|
if (loginVO.getBeforeUrl().toString().contains("/web/user/login/login.do")) {
|
|
|
|
|
redirectAttributes.addFlashAttribute("fail", true);
|
|
|
|
|
return "redirect:/web/user/login/login.do";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return goUserLoginPage(redirectAttributes, loginVO, request, model, alertMessage);
|
|
|
|
|
} else {
|
|
|
|
|
if (passMissVO.getPassMiss() >= 5) {
|
|
|
|
|
alertMessage = "패스워드가 5회 이상 틀려 로그인 할수 없습니다. 비밀번호를 재설정해주세요.";
|
|
|
|
|
return goUserPassMissPage(redirectAttributes, loginVO, request, model, alertMessage);
|
|
|
|
|
} /*
|
|
|
|
|
* else if("A".equals(resultVO.getEmplyrSttusCode())){ //신청상태 alertMessage =
|
|
|
|
|
* "신청하신 아이디가 현제 승인대기 상" + "태입니다."; return goUserLoginPage(redirectAttributes,
|
|
|
|
|
* request, model, alertMessage); }else
|
|
|
|
|
* if("B".equals(resultVO.getEmplyrSttusCode())){ //신청상태 alertMessage =
|
|
|
|
|
* "아이디가 차단상태가 되어 사용할수 없습니다."; return goUserLoginPage(redirectAttributes,
|
|
|
|
|
* request, model, alertMessage); }
|
|
|
|
|
*/
|
|
|
|
|
loginService.updatePassMissReset(loginVO);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
//아이디 미존재
|
|
|
|
|
else {
|
|
|
|
|
alertMessage = egovMessageSource.getMessage("fail.common.login");
|
|
|
|
|
|
|
|
|
|
// 로그인 실패시 해킹의심 IP 테이블에 등록_아이디없고 비밀번호도 틀린상황
|
|
|
|
|
/// HackIpVO hackIpVO = new HackIpVO();
|
|
|
|
|
hackIpVO.setHackUserId(loginVO.getId());
|
|
|
|
|
hackIpVO.setAccessIp(EgovClntInfo.getClntIP(request));
|
|
|
|
|
hackIpService.insertHackIp(hackIpVO);
|
|
|
|
|
if (loginVO.getBeforeUrl().toString().contains("/web/user/login/login.do")) {
|
|
|
|
|
redirectAttributes.addFlashAttribute("fail", true);
|
|
|
|
|
return "redirect:/web/user/login/login.do";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return goUserLoginPage(redirectAttributes, loginVO, request, model, alertMessage);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* 일시 : 2023.07.26
|
|
|
|
|
* 내용 : 로그인시 휴먼고객 redirect 기능 추가
|
|
|
|
|
* 작업자 : 원영현 과장
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
if(resultVO.getDormantYn().equals("Y") || resultVO.getDormantYn() == "Y") {
|
|
|
|
|
|
|
|
|
|
return "redirect:/web/user/humanPage.do";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
boolean loginPolicyYn = true;
|
|
|
|
|
|
|
|
|
|
// 접속IP
|
|
|
|
|
// userIp = EgovClntInfo.getClntIP(request);
|
|
|
|
|
|
|
|
|
|
// resultVO.siteId 의 각 로그인 ip를 조회함
|
|
|
|
|
if (resultVO != null && resultVO.getId() != null && !resultVO.getId().equals("") && loginPolicyYn) {
|
|
|
|
|
// 세션에다 ip 등록
|
|
|
|
|
resultVO.setIp(userIp);
|
|
|
|
|
// 2. spring security 연동
|
|
|
|
|
request.getSession().setAttribute("LoginVO", resultVO);
|
|
|
|
|
UsernamePasswordAuthenticationFilter springSecurity = null;
|
|
|
|
|
ApplicationContext act = WebApplicationContextUtils.getRequiredWebApplicationContext(request.getSession().getServletContext());
|
|
|
|
|
Map<String, UsernamePasswordAuthenticationFilter> beans = act.getBeansOfType(UsernamePasswordAuthenticationFilter.class);
|
|
|
|
|
|
|
|
|
|
if (beans.size() > 0) {
|
|
|
|
|
springSecurity = (UsernamePasswordAuthenticationFilter) beans.values().toArray()[0];
|
|
|
|
|
springSecurity.setUsernameParameter("egov_security_username");
|
|
|
|
|
springSecurity.setPasswordParameter("egov_security_password");
|
|
|
|
|
springSecurity.setRequiresAuthenticationRequestMatcher(new AntPathRequestMatcher(request.getServletContext().getContextPath() + "/egov_security_login", "POST"));
|
|
|
|
|
} else {
|
|
|
|
|
throw new IllegalStateException("No AuthenticationProcessingFilter");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
springSecurity.doFilter(new RequestWrapperForSecurity(request, resultVO.getUserSe() + resultVO.getId(), resultVO.getUniqId()), response, null);
|
|
|
|
|
{ // 관리자 로그인 log 저장
|
|
|
|
|
String uniqId = "";
|
|
|
|
|
String ip = "";
|
|
|
|
|
|
|
|
|
|
/* Authenticated */
|
|
|
|
|
LoginLog loginLog = new LoginLog();
|
|
|
|
|
Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated();
|
|
|
|
|
if (isAuthenticated.booleanValue()) {
|
|
|
|
|
LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser();
|
|
|
|
|
uniqId = user.getUniqId();
|
|
|
|
|
ip = EgovClntInfo.getClntIP(request);
|
|
|
|
|
|
|
|
|
|
HttpSession httpSession = request.getSession(true);
|
|
|
|
|
{
|
|
|
|
|
List<SiteManagerVO> siteManageList = new ArrayList<SiteManagerVO>();
|
|
|
|
|
SiteManagerVO siteManagerVO = new SiteManagerVO();
|
|
|
|
|
siteManagerVO.setFirstIndex(0);
|
|
|
|
|
siteManagerVO.setRecordCountPerPage(100);
|
|
|
|
|
siteManageList = egovSiteManagerService.selectSiteManagerList(siteManagerVO);
|
|
|
|
|
httpSession.setAttribute("siteManageList", siteManageList);
|
|
|
|
|
httpSession.setAttribute("loginId", user.getId()); // 자동완성 공통으로 쓰기위해
|
|
|
|
|
httpSession.setAttribute("esntlId", user.getPassword());
|
|
|
|
|
|
|
|
|
|
// 최근검색어 조회 후 세션에 넣어줌
|
|
|
|
|
/*
|
|
|
|
|
* UserManageVO tempUserManageVO = new UserManageVO();
|
|
|
|
|
* tempUserManageVO.setEmplyrId(user.getId()); tempUserManageVO =
|
|
|
|
|
* userManageService.selectRecentSearchWord(tempUserManageVO);
|
|
|
|
|
*
|
|
|
|
|
* List<String> lisRecentSearch = new ArrayList<String>(); if(null !=
|
|
|
|
|
* tempUserManageVO){ //ArrayList 로 세션 저장
|
|
|
|
|
* Collections.addAll(lisRecentSearch,tempUserManageVO.getSearchWord().split(","
|
|
|
|
|
* )) ; } httpSession.setAttribute("recentSearch", lisRecentSearch) ;
|
|
|
|
|
*/
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
/*
|
|
|
|
|
* loginLog.setLoginId(uniqId); loginLog.setLoginIp(ip);
|
|
|
|
|
* loginLog.setLoginMthd("I"); // 로그인:I, 로그아웃:O loginLog.setErrOccrrAt("N");
|
|
|
|
|
* loginLog.setErrorCode(""); //로그인은 관리자, PC만 됨 loginLog.setUserAt("U"); //사용자
|
|
|
|
|
* loginLog.setDeviceType("P"); //PC loginLog.setProgrmFileNm("adminLogin");
|
|
|
|
|
* loginLog.setMenuNm("관리자로그인"); loginLogService.logInsertLoginLog(loginLog);
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
loginVO.getId();
|
|
|
|
|
loginVO.getIp();
|
|
|
|
|
loginVO.setMessage("로그인 성공되었습니다.");
|
|
|
|
|
loginVO.setLoginYn("Y");
|
|
|
|
|
loginService.insertActionLoginLog(loginVO);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 등급제 Start
|
|
|
|
|
// 회원별 등급 적용
|
|
|
|
|
MberGrdVO mberGrdVO = new MberGrdVO();
|
|
|
|
|
mberGrdVO.setMberId(loginVO.getId());
|
|
|
|
|
mberGrdVO.setAmt("0");
|
|
|
|
|
mberGrdVO.setMoid("");
|
|
|
|
|
mberGrdService.mberGrdSaveByUserNoHist(mberGrdVO);
|
|
|
|
|
// End
|
|
|
|
|
|
|
|
|
|
// 이벤트 결제 바로가기 로직 체크 Start
|
|
|
|
|
String goEventPay = (String) commandMap.get("goEventPay");
|
|
|
|
|
System.out.println("goEventPay : " + goEventPay);
|
|
|
|
|
if (null != goEventPay && goEventPay.equals("Y")) {
|
|
|
|
|
// 이벤트 결제 바로가기
|
|
|
|
|
if (goEventPay(loginVO) == true) {
|
|
|
|
|
loginVO.setBeforeUrl("/web/event/member/pay/PayView.do");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// End
|
|
|
|
|
|
|
|
|
|
String beforeUrl = (String) commandMap.get("beforeUrl");
|
|
|
|
|
|
|
|
|
|
// 로그인 전 URL 호출 시
|
|
|
|
|
if (loginVO.getBeforeUrl() != null && !("").equals(loginVO.getBeforeUrl())) {
|
|
|
|
|
request.getSession().setAttribute("usrBeforeUrl", loginVO.getBeforeUrl());
|
|
|
|
|
// 회원가입 시 메세지 처리
|
|
|
|
|
if (loginVO.getMessage() != null && !("").equals(loginVO.getMessage())) {
|
|
|
|
|
request.getSession().setAttribute("registMessage", loginVO.getMessage());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 개인키 삭제
|
|
|
|
|
// 성공시 웹페이지 분기로 인해 session에 페이지 타입을 넣어준다.
|
|
|
|
|
request.getSession().setAttribute("pageType", "web");
|
|
|
|
|
|
|
|
|
|
return "blank"; // 성공 시 페이지.. (redirect 불가)
|
|
|
|
|
|
|
|
|
|
// uat/uia/actionMain.do 실제 성공시 무조건 좌측 메소드로 감.
|
|
|
|
|
// return "forward:/web/main/mainPage.do";
|
|
|
|
|
} else {
|
|
|
|
|
String message = egovMessageSource.getMessage("fail.common.login");
|
|
|
|
|
redirectAttributes.addFlashAttribute("beforeUrl", loginVO.getBeforeUrl());
|
|
|
|
|
redirectAttributes.addFlashAttribute("message", message);
|
|
|
|
|
return "redirect:/";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @Method Name : selectUserSttusAjax
|
|
|
|
|
* @작성일 : 2024. 3. 27.
|
|
|
|
|
* @작성자 : WYH
|
|
|
|
|
* @변경이력 :
|
|
|
|
|
* @Method 설명 : 회원상태 조회 (Y:일반회원, B:이용정지 회원, N:탈퇴회원)
|
|
|
|
|
*/
|
|
|
|
|
/*
|
|
|
|
|
@RequestMapping(value = { "/web/user/login/actionSecurityLoginAjax.do" })
|
|
|
|
|
public ModelAndView actionSecurityLoginAjax(@ModelAttribute("loginVO") LoginVO loginVO, HttpServletResponse response,
|
|
|
|
|
HttpServletRequest request, @RequestParam Map<String, Object> commandMap, ModelMap model,
|
|
|
|
|
HttpSession session, RedirectAttributes redirectAttributes) throws Exception {
|
|
|
|
|
ModelAndView modelAndView = new ModelAndView();
|
|
|
|
|
modelAndView.setViewName("jsonView");
|
|
|
|
|
|
|
|
|
|
String p_id = "";
|
|
|
|
|
String p_pwd = "";
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
//id, pwd 로그인 하고 결과와 hp 번호를 돌려주면 됨
|
|
|
|
|
p_id = request.getParameter("id");
|
|
|
|
|
p_pwd = request.getParameter("password");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
String userId = mjonMsgVO.getUserId();
|
|
|
|
|
String userSttus = userManageService.selectUserStatusInfoCheck(userId);
|
|
|
|
|
|
|
|
|
|
modelAndView.addObject("status", "success");
|
|
|
|
|
modelAndView.addObject("userSttus", userSttus);
|
|
|
|
|
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
modelAndView.addObject("status", "fail");
|
|
|
|
|
modelAndView.addObject("msg", "인증에 실패하였습니다.");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return modelAndView;
|
|
|
|
|
}
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
@RequestMapping(value = "/web/user/login/actionSecurityLoginBeforeHpAjax.do")
|
|
|
|
|
public ModelAndView selectActionSecurityLoginWebBeforeHp(@ModelAttribute("loginVO") LoginVO loginVO, HttpServletResponse response,
|
|
|
|
|
HttpServletRequest request, @RequestParam Map<String, Object> commandMap, ModelMap model,
|
|
|
|
|
HttpSession session, RedirectAttributes redirectAttributes) throws Exception {
|
|
|
|
|
|
|
|
|
|
ModelAndView modelAndView = new ModelAndView();
|
|
|
|
|
modelAndView.setViewName("jsonView");
|
|
|
|
|
|
|
|
|
|
String userIp = EgovClntInfo.getClntIP(request);
|
|
|
|
|
HackIpVO hackIpVO = new HackIpVO();
|
|
|
|
|
hackIpVO.setAccessIp(userIp);
|
|
|
|
|
hackIpVO.setBlockYn("Y");
|
|
|
|
|
if (null != hackIpService.selectHackIpVO(hackIpVO)) {
|
|
|
|
|
String message = "차단된 아이피입니다. 관리자에게 문의해 주십시요.";
|
|
|
|
|
|
|
|
|
|
modelAndView.addObject("status", "fail");
|
|
|
|
|
modelAndView.addObject("msg", message);
|
|
|
|
|
return modelAndView;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*ScriptEngineManager engine = new ScriptEngineManager();*/
|
|
|
|
|
|
|
|
|
|
loginVO.setUserSe("USR");
|
|
|
|
|
// 로그인 정보 check
|
|
|
|
|
|
|
|
|
|
if (loginVO.getId() == null || loginVO.getPassword() == null) {
|
|
|
|
|
// 회원가입 시 로그인 처리
|
|
|
|
|
LoginVO pLoginVO = (LoginVO) request.getAttribute("pLoginVO");
|
|
|
|
|
if (pLoginVO == null) {
|
|
|
|
|
// RSA 키 생성
|
|
|
|
|
initRsa(request);
|
|
|
|
|
/* return "redirect:/web/user/login/login.do"; */
|
|
|
|
|
//return "redirect:/";
|
|
|
|
|
|
|
|
|
|
String message = "로그인 실패했습니다.";
|
|
|
|
|
|
|
|
|
|
modelAndView.addObject("status", "fail");
|
|
|
|
|
modelAndView.addObject("msg", message);
|
|
|
|
|
return modelAndView;
|
|
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
loginVO.setId(pLoginVO.getId());
|
|
|
|
|
loginVO.setPassword(pLoginVO.getPassword());
|
|
|
|
|
loginVO.setBeforeUrl(pLoginVO.getBeforeUrl());
|
|
|
|
|
loginVO.setMessage(pLoginVO.getMessage());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 1. 일반 로그인 처리
|
|
|
|
|
PrivateKey privateKey = (PrivateKey) session.getAttribute(EgovLoginController.RSA_WEB_KEY);
|
|
|
|
|
if (privateKey == null) {
|
|
|
|
|
initRsa(request);
|
|
|
|
|
/*return "web/site/login/EgovLoginGnrlUsr";*/
|
|
|
|
|
String message = "아이디와 비밀번호를 확인해주세요.";
|
|
|
|
|
redirectAttributes.addFlashAttribute("message", message);
|
|
|
|
|
System.out.println("======================================================");
|
|
|
|
|
System.out.println("= RSA privateKey is null =");
|
|
|
|
|
System.out.println("======================================================");
|
|
|
|
|
|
|
|
|
|
modelAndView.addObject("status", "fail");
|
|
|
|
|
modelAndView.addObject("msg", message);
|
|
|
|
|
return modelAndView;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
LoginVO resultVO;
|
|
|
|
|
// 복호화
|
|
|
|
|
String id = "";
|
|
|
|
|
try {
|
|
|
|
|
//아이디 복호화 후 소문자 변환
|
|
|
|
|
id = decryptRsa(privateKey, loginVO.getId()).toLowerCase();
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
initRsa(request);
|
|
|
|
|
|
|
|
|
|
String message = "로그인 실패했습니다.";
|
|
|
|
|
|
|
|
|
|
modelAndView.addObject("status", "fail");
|
|
|
|
|
modelAndView.addObject("msg", message);
|
|
|
|
|
return modelAndView;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
String password = decryptRsa(privateKey, loginVO.getPassword());
|
|
|
|
|
loginVO.setId(id);
|
|
|
|
|
loginVO.setIp(EgovClntInfo.getClntIP(request));
|
|
|
|
|
loginVO.setPassword(password);
|
|
|
|
|
loginVO.setUserSe("GNR");
|
|
|
|
|
loginVO.setStatusAll("Y"); // 신청대기중인 사용자까지 조회
|
|
|
|
|
|
|
|
|
|
//기업회원 가입중인지 체크 - 기존 로그인 select는 MBER_STTUS = 'Y'가 하드코딩이라 로그인 전 기업회원 가입중인지 선 체크
|
|
|
|
|
//암호화 2번 방지를 위한 LoginVO 생성
|
|
|
|
|
LoginVO loginCmpChkVO = new LoginVO();
|
|
|
|
|
loginCmpChkVO.setId(id);
|
|
|
|
|
loginCmpChkVO.setIp(EgovClntInfo.getClntIP(request));
|
|
|
|
|
loginCmpChkVO.setPassword(password);
|
|
|
|
|
loginCmpChkVO.setUserSe("GNR");
|
|
|
|
|
loginCmpChkVO.setStatusAll("Y"); // 신청대기중인 사용자까지 조회
|
|
|
|
|
loginCmpChkVO.setEmplyrSttusCode("A"); // 신청대기중인 사용자까지 조회
|
|
|
|
|
LoginVO cmpHstResultVO = loginService.actionLoginCmpChk(loginCmpChkVO);
|
|
|
|
|
if(null != cmpHstResultVO.getId()) {
|
|
|
|
|
//기업회원 정보 마지막 내역 조회
|
|
|
|
|
MberManageVO mberManageVO = new MberManageVO();
|
|
|
|
|
mberManageVO.setMberId(loginVO.getId());
|
|
|
|
|
MberManageVO cmpChangeManageVO = mberManageService.selectCmpUsrHst(mberManageVO);
|
|
|
|
|
if(null != cmpChangeManageVO) {
|
|
|
|
|
if("01".equals(cmpChangeManageVO.getHstType())) { //가장 마지막 내역이 기업회원 가입일 시
|
|
|
|
|
if("01".equals(cmpChangeManageVO.getHstSttus()) || "03".equals(cmpChangeManageVO.getHstSttus()) ) { //가장 마지막 기업회원 가입이 신청 또는 반려 상태일 시
|
|
|
|
|
|
|
|
|
|
String message = "기업회원 신청 또는 반려상태입니다.";
|
|
|
|
|
|
|
|
|
|
modelAndView.addObject("status", "fail");
|
|
|
|
|
modelAndView.addObject("msg", message);
|
|
|
|
|
return modelAndView;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
//스팸처리 회원인지 mj_spam_member_info 해당 ID의 최근 1개 데이터 조회
|
|
|
|
|
LoginVO loginSmiChkVO = new LoginVO();
|
|
|
|
|
loginSmiChkVO.setId(id);
|
|
|
|
|
loginSmiChkVO.setIp(EgovClntInfo.getClntIP(request));
|
|
|
|
|
loginSmiChkVO.setPassword(password);
|
|
|
|
|
loginSmiChkVO.setUserSe("GNR");
|
|
|
|
|
loginSmiChkVO.setStatusAll("Y"); // 신청대기중인 사용자까지 조회
|
|
|
|
|
loginSmiChkVO.setEmplyrSttusCode("B"); // 신청대기중인 사용자까지 조회
|
|
|
|
|
LoginVO smiResultVO = loginService.actionLoginCmpChk(loginSmiChkVO);
|
|
|
|
|
if(null != smiResultVO.getId()) {
|
|
|
|
|
MberManageVO spamMberManageVO = new MberManageVO();
|
|
|
|
|
spamMberManageVO.setMberId(loginVO.getId());
|
|
|
|
|
MberManageVO spamMemberInfoVO = mberManageService.selectSpamMemberInfo(spamMberManageVO);
|
|
|
|
|
if(null != spamMemberInfoVO) {
|
|
|
|
|
String message = "신청대기중인 상태입니다.";
|
|
|
|
|
|
|
|
|
|
modelAndView.addObject("status", "fail");
|
|
|
|
|
modelAndView.addObject("msg", message);
|
|
|
|
|
return modelAndView;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
resultVO = loginService.actionLogin(loginVO);
|
|
|
|
|
LoginVO passMissVO = loginService.selectPassMiss(loginVO);
|
|
|
|
|
|
|
|
|
|
String alertMessage = "";
|
|
|
|
|
if (!"admin".equals(loginVO.getId())) {
|
|
|
|
|
//아이디가 존재
|
|
|
|
|
if(passMissVO != null) {
|
|
|
|
|
// 로그인 실패 (
|
|
|
|
|
if (null == resultVO.getId() && passMissVO.getPassMiss() < 5 ) {
|
|
|
|
|
loginService.updatePassMissPlus(loginVO);
|
|
|
|
|
alertMessage = egovMessageSource.getMessage("fail.common.login");
|
|
|
|
|
|
|
|
|
|
// 로그인 실패시 해킹의심 IP 테이블에 등록_아이디는 있지만 비밀번호가 틀린상황
|
|
|
|
|
/// HackIpVO hackIpVO = new HackIpVO();
|
|
|
|
|
hackIpVO.setHackUserId(loginVO.getId());
|
|
|
|
|
hackIpVO.setAccessIp( EgovClntInfo.getClntIP(request));
|
|
|
|
|
hackIpService.insertHackIp(hackIpVO);
|
|
|
|
|
if (loginVO.getBeforeUrl().toString().contains("/web/user/login/login.do")) {
|
|
|
|
|
String message = "로그인 실패했습니다.";
|
|
|
|
|
|
|
|
|
|
modelAndView.addObject("status", "fail");
|
|
|
|
|
modelAndView.addObject("msg", message);
|
|
|
|
|
return modelAndView;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
String message = "로그인 실패했습니다.";
|
|
|
|
|
|
|
|
|
|
modelAndView.addObject("status", "fail");
|
|
|
|
|
modelAndView.addObject("msg", message);
|
|
|
|
|
return modelAndView;
|
|
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
if (passMissVO.getPassMiss() >= 5) {
|
|
|
|
|
//alertMessage = "패스워드가 5회 이상 틀려 로그인 할수 없습니다. 비밀번호를 재설정해주세요.";
|
|
|
|
|
String message = "패스워드가 5회 이상 틀려 로그인 할수 없습니다. 비밀번호를 재설정해주세요.";
|
|
|
|
|
|
|
|
|
|
modelAndView.addObject("status", "fail");
|
|
|
|
|
modelAndView.addObject("msg", message);
|
|
|
|
|
return modelAndView;
|
|
|
|
|
} /*
|
|
|
|
|
* else if("A".equals(resultVO.getEmplyrSttusCode())){ //신청상태 alertMessage =
|
|
|
|
|
* "신청하신 아이디가 현제 승인대기 상" + "태입니다."; return goUserLoginPage(redirectAttributes,
|
|
|
|
|
* request, model, alertMessage); }else
|
|
|
|
|
* if("B".equals(resultVO.getEmplyrSttusCode())){ //신청상태 alertMessage =
|
|
|
|
|
* "아이디가 차단상태가 되어 사용할수 없습니다."; return goUserLoginPage(redirectAttributes,
|
|
|
|
|
* request, model, alertMessage); }
|
|
|
|
|
*/
|
|
|
|
|
loginService.updatePassMissReset(loginVO);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
//아이디 미존재
|
|
|
|
|
else {
|
|
|
|
|
alertMessage = egovMessageSource.getMessage("fail.common.login");
|
|
|
|
|
|
|
|
|
|
// 로그인 실패시 해킹의심 IP 테이블에 등록_아이디없고 비밀번호도 틀린상황
|
|
|
|
|
/// HackIpVO hackIpVO = new HackIpVO();
|
|
|
|
|
hackIpVO.setHackUserId(loginVO.getId());
|
|
|
|
|
hackIpVO.setAccessIp(EgovClntInfo.getClntIP(request));
|
|
|
|
|
hackIpService.insertHackIp(hackIpVO);
|
|
|
|
|
if (loginVO.getBeforeUrl().toString().contains("/web/user/login/login.do")) {
|
|
|
|
|
String message = "로그인 실패했습니다.";
|
|
|
|
|
|
|
|
|
|
modelAndView.addObject("status", "fail");
|
|
|
|
|
modelAndView.addObject("msg", message);
|
|
|
|
|
return modelAndView;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
String message = "로그인 실패했습니다.";
|
|
|
|
|
|
|
|
|
|
modelAndView.addObject("status", "fail");
|
|
|
|
|
modelAndView.addObject("msg", message);
|
|
|
|
|
return modelAndView;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* 일시 : 2023.07.26
|
|
|
|
|
* 내용 : 로그인시 휴먼고객 redirect 기능 추가
|
|
|
|
|
* 작업자 : 원영현 과장
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
if(resultVO.getDormantYn().equals("Y") || resultVO.getDormantYn() == "Y") {
|
|
|
|
|
|
|
|
|
|
String message = "휴면계정입니다.";
|
|
|
|
|
|
|
|
|
|
modelAndView.addObject("status", "fail");
|
|
|
|
|
modelAndView.addObject("msg", message);
|
|
|
|
|
return modelAndView;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
String message = "로그인 성공했습니다.";
|
|
|
|
|
|
|
|
|
|
modelAndView.addObject("status", "success");
|
|
|
|
|
modelAndView.addObject("msg", message);
|
|
|
|
|
modelAndView.addObject("data", resultVO);
|
|
|
|
|
|
|
|
|
|
return modelAndView;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@RequestMapping(value = "/web/user/login/actionSecurityLogin_ori_00.do")
|
|
|
|
|
public String selectActionSecurityLoginWeb(@ModelAttribute("loginVO") LoginVO loginVO, HttpServletResponse response,
|
|
|
|
|
HttpServletRequest request, @RequestParam Map<String, Object> commandMap, ModelMap model,
|
|
|
|
|
HttpSession session, RedirectAttributes redirectAttributes) throws Exception {
|
|
|
|
|
@ -1772,6 +2361,340 @@ public class EgovLoginController {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@RequestMapping(value = "/web/user/login/actionSecurityLoginAfterHp.do")
|
|
|
|
|
public String selectActionSecurityLoginWebAfterHp(@ModelAttribute("loginVO") LoginVO loginVO, HttpServletResponse response,
|
|
|
|
|
HttpServletRequest request, @RequestParam Map<String, Object> commandMap, ModelMap model,
|
|
|
|
|
HttpSession session, RedirectAttributes redirectAttributes) throws Exception {
|
|
|
|
|
|
|
|
|
|
String userIp = EgovClntInfo.getClntIP(request);
|
|
|
|
|
HackIpVO hackIpVO = new HackIpVO();
|
|
|
|
|
hackIpVO.setAccessIp(userIp);
|
|
|
|
|
hackIpVO.setBlockYn("Y");
|
|
|
|
|
if (null != hackIpService.selectHackIpVO(hackIpVO)) {
|
|
|
|
|
String message = "차단된 아이피입니다. 관리자에게 문의해 주십시요.";
|
|
|
|
|
redirectAttributes.addFlashAttribute("message", message);
|
|
|
|
|
return "redirect:/";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*ScriptEngineManager engine = new ScriptEngineManager();*/
|
|
|
|
|
|
|
|
|
|
loginVO.setUserSe("USR");
|
|
|
|
|
// 로그인 정보 check
|
|
|
|
|
|
|
|
|
|
if (loginVO.getId() == null || loginVO.getPassword() == null) {
|
|
|
|
|
// 회원가입 시 로그인 처리
|
|
|
|
|
LoginVO pLoginVO = (LoginVO) request.getAttribute("pLoginVO");
|
|
|
|
|
if (pLoginVO == null) {
|
|
|
|
|
// RSA 키 생성
|
|
|
|
|
initRsa(request);
|
|
|
|
|
/* return "redirect:/web/user/login/login.do"; */
|
|
|
|
|
return "redirect:/";
|
|
|
|
|
} else {
|
|
|
|
|
loginVO.setId(pLoginVO.getId());
|
|
|
|
|
loginVO.setPassword(pLoginVO.getPassword());
|
|
|
|
|
loginVO.setBeforeUrl(pLoginVO.getBeforeUrl());
|
|
|
|
|
loginVO.setMessage(pLoginVO.getMessage());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 1. 일반 로그인 처리
|
|
|
|
|
PrivateKey privateKey = (PrivateKey) session.getAttribute(EgovLoginController.RSA_WEB_KEY);
|
|
|
|
|
if (privateKey == null) {
|
|
|
|
|
initRsa(request);
|
|
|
|
|
/*return "web/site/login/EgovLoginGnrlUsr";*/
|
|
|
|
|
String message = "아이디와 비밀번호를 확인해주세요.";
|
|
|
|
|
redirectAttributes.addFlashAttribute("message", message);
|
|
|
|
|
System.out.println("======================================================");
|
|
|
|
|
System.out.println("= RSA privateKey is null =");
|
|
|
|
|
System.out.println("======================================================");
|
|
|
|
|
return "redirect:/web/main/mainPage.do";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
LoginVO resultVO;
|
|
|
|
|
// 복호화
|
|
|
|
|
String id = "";
|
|
|
|
|
try {
|
|
|
|
|
//아이디 복호화 후 소문자 변환
|
|
|
|
|
id = decryptRsa(privateKey, loginVO.getId()).toLowerCase();
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
initRsa(request);
|
|
|
|
|
// return "redirect:/web/user/login/login.do";
|
|
|
|
|
if (loginVO.getBeforeUrl().toString().contains("/web/user/login/login.do")) {
|
|
|
|
|
redirectAttributes.addFlashAttribute("fail", true);
|
|
|
|
|
return "redirect:/web/user/login/login.do";
|
|
|
|
|
}
|
|
|
|
|
return "redirect:/";
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//핸드폰 인증번호 확인
|
|
|
|
|
String s_hp = request.getParameter("hp");
|
|
|
|
|
String s_num = request.getParameter("num");
|
|
|
|
|
|
|
|
|
|
System.out.println(s_hp);
|
|
|
|
|
System.out.println(s_num);
|
|
|
|
|
System.out.println("s_num==============");
|
|
|
|
|
|
|
|
|
|
SendLogVO sendLogVO = new SendLogVO();
|
|
|
|
|
sendLogVO.setSendId(id);
|
|
|
|
|
sendLogVO.setReceive(s_hp);
|
|
|
|
|
sendLogVO.setCheckNo(s_num);
|
|
|
|
|
|
|
|
|
|
sendLogVO = mjonMsgDataService.selectSysMsgLogCheck(sendLogVO);
|
|
|
|
|
|
|
|
|
|
if (sendLogVO==null) {
|
|
|
|
|
redirectAttributes.addFlashAttribute("fail2", true);
|
|
|
|
|
return "redirect:/web/user/login/login.do";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
String password = decryptRsa(privateKey, loginVO.getPassword());
|
|
|
|
|
loginVO.setId(id);
|
|
|
|
|
loginVO.setIp(EgovClntInfo.getClntIP(request));
|
|
|
|
|
loginVO.setPassword(password);
|
|
|
|
|
loginVO.setUserSe("GNR");
|
|
|
|
|
loginVO.setStatusAll("Y"); // 신청대기중인 사용자까지 조회
|
|
|
|
|
|
|
|
|
|
//기업회원 가입중인지 체크 - 기존 로그인 select는 MBER_STTUS = 'Y'가 하드코딩이라 로그인 전 기업회원 가입중인지 선 체크
|
|
|
|
|
//암호화 2번 방지를 위한 LoginVO 생성
|
|
|
|
|
LoginVO loginCmpChkVO = new LoginVO();
|
|
|
|
|
loginCmpChkVO.setId(id);
|
|
|
|
|
loginCmpChkVO.setIp(EgovClntInfo.getClntIP(request));
|
|
|
|
|
loginCmpChkVO.setPassword(password);
|
|
|
|
|
loginCmpChkVO.setUserSe("GNR");
|
|
|
|
|
loginCmpChkVO.setStatusAll("Y"); // 신청대기중인 사용자까지 조회
|
|
|
|
|
loginCmpChkVO.setEmplyrSttusCode("A"); // 신청대기중인 사용자까지 조회
|
|
|
|
|
LoginVO cmpHstResultVO = loginService.actionLoginCmpChk(loginCmpChkVO);
|
|
|
|
|
if(null != cmpHstResultVO.getId()) {
|
|
|
|
|
//기업회원 정보 마지막 내역 조회
|
|
|
|
|
MberManageVO mberManageVO = new MberManageVO();
|
|
|
|
|
mberManageVO.setMberId(loginVO.getId());
|
|
|
|
|
MberManageVO cmpChangeManageVO = mberManageService.selectCmpUsrHst(mberManageVO);
|
|
|
|
|
if(null != cmpChangeManageVO) {
|
|
|
|
|
if("01".equals(cmpChangeManageVO.getHstType())) { //가장 마지막 내역이 기업회원 가입일 시
|
|
|
|
|
if("01".equals(cmpChangeManageVO.getHstSttus()) || "03".equals(cmpChangeManageVO.getHstSttus()) ) { //가장 마지막 기업회원 가입이 신청 또는 반려 상태일 시
|
|
|
|
|
redirectAttributes.addFlashAttribute("mberId", loginVO.getId());
|
|
|
|
|
//addFlashAttribute 일회성으로 인하여 membershipAttachDocBefore.do 이동 후
|
|
|
|
|
//membershipAttachDoc.do로 바로 submit하여 새로고침 시 정보 유지되게 끔 처리
|
|
|
|
|
return "redirect:/web/user/login/membershipAttachDocBefore.do";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
//스팸처리 회원인지 mj_spam_member_info 해당 ID의 최근 1개 데이터 조회
|
|
|
|
|
LoginVO loginSmiChkVO = new LoginVO();
|
|
|
|
|
loginSmiChkVO.setId(id);
|
|
|
|
|
loginSmiChkVO.setIp(EgovClntInfo.getClntIP(request));
|
|
|
|
|
loginSmiChkVO.setPassword(password);
|
|
|
|
|
loginSmiChkVO.setUserSe("GNR");
|
|
|
|
|
loginSmiChkVO.setStatusAll("Y"); // 신청대기중인 사용자까지 조회
|
|
|
|
|
loginSmiChkVO.setEmplyrSttusCode("B"); // 신청대기중인 사용자까지 조회
|
|
|
|
|
LoginVO smiResultVO = loginService.actionLoginCmpChk(loginSmiChkVO);
|
|
|
|
|
if(null != smiResultVO.getId()) {
|
|
|
|
|
MberManageVO spamMberManageVO = new MberManageVO();
|
|
|
|
|
spamMberManageVO.setMberId(loginVO.getId());
|
|
|
|
|
MberManageVO spamMemberInfoVO = mberManageService.selectSpamMemberInfo(spamMberManageVO);
|
|
|
|
|
if(null != spamMemberInfoVO) {
|
|
|
|
|
redirectAttributes.addFlashAttribute("mberId", loginVO.getId());
|
|
|
|
|
return "redirect:/web/user/login/loginRestrictionUseBefore.do";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
resultVO = loginService.actionLogin(loginVO);
|
|
|
|
|
LoginVO passMissVO = loginService.selectPassMiss(loginVO);
|
|
|
|
|
|
|
|
|
|
String alertMessage = "";
|
|
|
|
|
if (!"admin".equals(loginVO.getId())) {
|
|
|
|
|
//아이디가 존재
|
|
|
|
|
if(passMissVO != null) {
|
|
|
|
|
// 로그인 실패 (
|
|
|
|
|
if (null == resultVO.getId() && passMissVO.getPassMiss() < 5 ) {
|
|
|
|
|
loginService.updatePassMissPlus(loginVO);
|
|
|
|
|
alertMessage = egovMessageSource.getMessage("fail.common.login");
|
|
|
|
|
|
|
|
|
|
// 로그인 실패시 해킹의심 IP 테이블에 등록_아이디는 있지만 비밀번호가 틀린상황
|
|
|
|
|
/// HackIpVO hackIpVO = new HackIpVO();
|
|
|
|
|
hackIpVO.setHackUserId(loginVO.getId());
|
|
|
|
|
hackIpVO.setAccessIp( EgovClntInfo.getClntIP(request));
|
|
|
|
|
hackIpService.insertHackIp(hackIpVO);
|
|
|
|
|
if (loginVO.getBeforeUrl().toString().contains("/web/user/login/login.do")) {
|
|
|
|
|
redirectAttributes.addFlashAttribute("fail", true);
|
|
|
|
|
return "redirect:/web/user/login/login.do";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return goUserLoginPage(redirectAttributes, loginVO, request, model, alertMessage);
|
|
|
|
|
} else {
|
|
|
|
|
if (passMissVO.getPassMiss() >= 5) {
|
|
|
|
|
alertMessage = "패스워드가 5회 이상 틀려 로그인 할수 없습니다. 비밀번호를 재설정해주세요.";
|
|
|
|
|
return goUserPassMissPage(redirectAttributes, loginVO, request, model, alertMessage);
|
|
|
|
|
} /*
|
|
|
|
|
* else if("A".equals(resultVO.getEmplyrSttusCode())){ //신청상태 alertMessage =
|
|
|
|
|
* "신청하신 아이디가 현제 승인대기 상" + "태입니다."; return goUserLoginPage(redirectAttributes,
|
|
|
|
|
* request, model, alertMessage); }else
|
|
|
|
|
* if("B".equals(resultVO.getEmplyrSttusCode())){ //신청상태 alertMessage =
|
|
|
|
|
* "아이디가 차단상태가 되어 사용할수 없습니다."; return goUserLoginPage(redirectAttributes,
|
|
|
|
|
* request, model, alertMessage); }
|
|
|
|
|
*/
|
|
|
|
|
loginService.updatePassMissReset(loginVO);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
//아이디 미존재
|
|
|
|
|
else {
|
|
|
|
|
alertMessage = egovMessageSource.getMessage("fail.common.login");
|
|
|
|
|
|
|
|
|
|
// 로그인 실패시 해킹의심 IP 테이블에 등록_아이디없고 비밀번호도 틀린상황
|
|
|
|
|
/// HackIpVO hackIpVO = new HackIpVO();
|
|
|
|
|
hackIpVO.setHackUserId(loginVO.getId());
|
|
|
|
|
hackIpVO.setAccessIp(EgovClntInfo.getClntIP(request));
|
|
|
|
|
hackIpService.insertHackIp(hackIpVO);
|
|
|
|
|
if (loginVO.getBeforeUrl().toString().contains("/web/user/login/login.do")) {
|
|
|
|
|
redirectAttributes.addFlashAttribute("fail", true);
|
|
|
|
|
return "redirect:/web/user/login/login.do";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return goUserLoginPage(redirectAttributes, loginVO, request, model, alertMessage);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* 일시 : 2023.07.26
|
|
|
|
|
* 내용 : 로그인시 휴먼고객 redirect 기능 추가
|
|
|
|
|
* 작업자 : 원영현 과장
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
if(resultVO.getDormantYn().equals("Y") || resultVO.getDormantYn() == "Y") {
|
|
|
|
|
|
|
|
|
|
return "redirect:/web/user/humanPage.do";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
boolean loginPolicyYn = true;
|
|
|
|
|
|
|
|
|
|
// 접속IP
|
|
|
|
|
// userIp = EgovClntInfo.getClntIP(request);
|
|
|
|
|
|
|
|
|
|
// resultVO.siteId 의 각 로그인 ip를 조회함
|
|
|
|
|
if (resultVO != null && resultVO.getId() != null && !resultVO.getId().equals("") && loginPolicyYn) {
|
|
|
|
|
// 세션에다 ip 등록
|
|
|
|
|
resultVO.setIp(userIp);
|
|
|
|
|
// 2. spring security 연동
|
|
|
|
|
request.getSession().setAttribute("LoginVO", resultVO);
|
|
|
|
|
UsernamePasswordAuthenticationFilter springSecurity = null;
|
|
|
|
|
ApplicationContext act = WebApplicationContextUtils.getRequiredWebApplicationContext(request.getSession().getServletContext());
|
|
|
|
|
Map<String, UsernamePasswordAuthenticationFilter> beans = act.getBeansOfType(UsernamePasswordAuthenticationFilter.class);
|
|
|
|
|
|
|
|
|
|
if (beans.size() > 0) {
|
|
|
|
|
springSecurity = (UsernamePasswordAuthenticationFilter) beans.values().toArray()[0];
|
|
|
|
|
springSecurity.setUsernameParameter("egov_security_username");
|
|
|
|
|
springSecurity.setPasswordParameter("egov_security_password");
|
|
|
|
|
springSecurity.setRequiresAuthenticationRequestMatcher(new AntPathRequestMatcher(request.getServletContext().getContextPath() + "/egov_security_login", "POST"));
|
|
|
|
|
} else {
|
|
|
|
|
throw new IllegalStateException("No AuthenticationProcessingFilter");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
springSecurity.doFilter(new RequestWrapperForSecurity(request, resultVO.getUserSe() + resultVO.getId(), resultVO.getUniqId()), response, null);
|
|
|
|
|
{ // 관리자 로그인 log 저장
|
|
|
|
|
String uniqId = "";
|
|
|
|
|
String ip = "";
|
|
|
|
|
|
|
|
|
|
/* Authenticated */
|
|
|
|
|
LoginLog loginLog = new LoginLog();
|
|
|
|
|
Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated();
|
|
|
|
|
if (isAuthenticated.booleanValue()) {
|
|
|
|
|
LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser();
|
|
|
|
|
uniqId = user.getUniqId();
|
|
|
|
|
ip = EgovClntInfo.getClntIP(request);
|
|
|
|
|
|
|
|
|
|
HttpSession httpSession = request.getSession(true);
|
|
|
|
|
{
|
|
|
|
|
List<SiteManagerVO> siteManageList = new ArrayList<SiteManagerVO>();
|
|
|
|
|
SiteManagerVO siteManagerVO = new SiteManagerVO();
|
|
|
|
|
siteManagerVO.setFirstIndex(0);
|
|
|
|
|
siteManagerVO.setRecordCountPerPage(100);
|
|
|
|
|
siteManageList = egovSiteManagerService.selectSiteManagerList(siteManagerVO);
|
|
|
|
|
httpSession.setAttribute("siteManageList", siteManageList);
|
|
|
|
|
httpSession.setAttribute("loginId", user.getId()); // 자동완성 공통으로 쓰기위해
|
|
|
|
|
httpSession.setAttribute("esntlId", user.getPassword());
|
|
|
|
|
|
|
|
|
|
// 최근검색어 조회 후 세션에 넣어줌
|
|
|
|
|
/*
|
|
|
|
|
* UserManageVO tempUserManageVO = new UserManageVO();
|
|
|
|
|
* tempUserManageVO.setEmplyrId(user.getId()); tempUserManageVO =
|
|
|
|
|
* userManageService.selectRecentSearchWord(tempUserManageVO);
|
|
|
|
|
*
|
|
|
|
|
* List<String> lisRecentSearch = new ArrayList<String>(); if(null !=
|
|
|
|
|
* tempUserManageVO){ //ArrayList 로 세션 저장
|
|
|
|
|
* Collections.addAll(lisRecentSearch,tempUserManageVO.getSearchWord().split(","
|
|
|
|
|
* )) ; } httpSession.setAttribute("recentSearch", lisRecentSearch) ;
|
|
|
|
|
*/
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
/*
|
|
|
|
|
* loginLog.setLoginId(uniqId); loginLog.setLoginIp(ip);
|
|
|
|
|
* loginLog.setLoginMthd("I"); // 로그인:I, 로그아웃:O loginLog.setErrOccrrAt("N");
|
|
|
|
|
* loginLog.setErrorCode(""); //로그인은 관리자, PC만 됨 loginLog.setUserAt("U"); //사용자
|
|
|
|
|
* loginLog.setDeviceType("P"); //PC loginLog.setProgrmFileNm("adminLogin");
|
|
|
|
|
* loginLog.setMenuNm("관리자로그인"); loginLogService.logInsertLoginLog(loginLog);
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
loginVO.getId();
|
|
|
|
|
loginVO.getIp();
|
|
|
|
|
loginVO.setMessage("로그인 성공되었습니다.");
|
|
|
|
|
loginVO.setLoginYn("Y");
|
|
|
|
|
loginService.insertActionLoginLog(loginVO);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 등급제 Start
|
|
|
|
|
// 회원별 등급 적용
|
|
|
|
|
MberGrdVO mberGrdVO = new MberGrdVO();
|
|
|
|
|
mberGrdVO.setMberId(loginVO.getId());
|
|
|
|
|
mberGrdVO.setAmt("0");
|
|
|
|
|
mberGrdVO.setMoid("");
|
|
|
|
|
mberGrdService.mberGrdSaveByUserNoHist(mberGrdVO);
|
|
|
|
|
// End
|
|
|
|
|
|
|
|
|
|
// 이벤트 결제 바로가기 로직 체크 Start
|
|
|
|
|
String goEventPay = (String) commandMap.get("goEventPay");
|
|
|
|
|
System.out.println("goEventPay : " + goEventPay);
|
|
|
|
|
if (null != goEventPay && goEventPay.equals("Y")) {
|
|
|
|
|
// 이벤트 결제 바로가기
|
|
|
|
|
if (goEventPay(loginVO) == true) {
|
|
|
|
|
loginVO.setBeforeUrl("/web/event/member/pay/PayView.do");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// End
|
|
|
|
|
|
|
|
|
|
String beforeUrl = (String) commandMap.get("beforeUrl");
|
|
|
|
|
|
|
|
|
|
// 로그인 전 URL 호출 시
|
|
|
|
|
if (loginVO.getBeforeUrl() != null && !("").equals(loginVO.getBeforeUrl())) {
|
|
|
|
|
request.getSession().setAttribute("usrBeforeUrl", loginVO.getBeforeUrl());
|
|
|
|
|
// 회원가입 시 메세지 처리
|
|
|
|
|
if (loginVO.getMessage() != null && !("").equals(loginVO.getMessage())) {
|
|
|
|
|
request.getSession().setAttribute("registMessage", loginVO.getMessage());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 개인키 삭제
|
|
|
|
|
// 성공시 웹페이지 분기로 인해 session에 페이지 타입을 넣어준다.
|
|
|
|
|
request.getSession().setAttribute("pageType", "web");
|
|
|
|
|
|
|
|
|
|
return "blank"; // 성공 시 페이지.. (redirect 불가)
|
|
|
|
|
|
|
|
|
|
// uat/uia/actionMain.do 실제 성공시 무조건 좌측 메소드로 감.
|
|
|
|
|
// return "forward:/web/main/mainPage.do";
|
|
|
|
|
} else {
|
|
|
|
|
String message = egovMessageSource.getMessage("fail.common.login");
|
|
|
|
|
redirectAttributes.addFlashAttribute("beforeUrl", loginVO.getBeforeUrl());
|
|
|
|
|
redirectAttributes.addFlashAttribute("message", message);
|
|
|
|
|
return "redirect:/";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 이벤트 결제 바로가기
|
|
|
|
|
public boolean goEventPay(LoginVO loginVO) throws Exception {
|
|
|
|
|
boolean goEventPay = false;
|
|
|
|
|
@ -2647,7 +3570,7 @@ public class EgovLoginController {
|
|
|
|
|
String resultBlockSts = "0";
|
|
|
|
|
|
|
|
|
|
// 비밀번호 찾기 문자내용
|
|
|
|
|
String contents = "[문자온] 비밀번호 변경 인증번호 : %code%";
|
|
|
|
|
String contents = "[문자온] 인증번호 : %code%";
|
|
|
|
|
String code = "";
|
|
|
|
|
long seed = System.currentTimeMillis();
|
|
|
|
|
Random random = new Random(seed);
|
|
|
|
|
|