From 4c41dfa5af321d6dd553702110e73fba89b3b533 Mon Sep 17 00:00:00 2001 From: JSYOO Date: Thu, 2 Sep 2021 16:43:38 +0900 Subject: [PATCH] =?UTF-8?q?=EC=86=8C=EC=8A=A4=20=EB=8F=99=EA=B8=B0?= =?UTF-8?q?=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/nlib/user/service/NlibLoginVO.java | 9 + .../java/nlib/user/web/LoginController.java | 157 +++++++++++++++++- 2 files changed, 164 insertions(+), 2 deletions(-) diff --git a/src/main/java/nlib/user/service/NlibLoginVO.java b/src/main/java/nlib/user/service/NlibLoginVO.java index cf7d4326..f8fc6b67 100644 --- a/src/main/java/nlib/user/service/NlibLoginVO.java +++ b/src/main/java/nlib/user/service/NlibLoginVO.java @@ -48,6 +48,7 @@ public class NlibLoginVO implements Serializable { private String addressDetail; /* 상세주소 */ private String birthday; /* 생년월일 */ private String status; /* 상태 : S정상, D탈퇴, P휴면 */ + private String dmtProcDd; /* 휴면처리일자 (YYYYMMDDHHMISS) */ private String joinDate; /* 가입일자 (YYYYMMDD) */ private String verificationDd; /* 본인확인일시 (YYYYMMDDHHMISS) */ private String lastAccessDd; /* 마지막접근일시 (YYYYMMDDHHMISS) */ @@ -375,6 +376,14 @@ public class NlibLoginVO implements Serializable { return emailVrfctNo; } + public String getDmtProcDd() { + return dmtProcDd; + } + + public void setDmtProcDd(String dmtProcDd) { + this.dmtProcDd = dmtProcDd; + } + public void setEmailVrfctNo(String emailVrfctNo) { this.emailVrfctNo = emailVrfctNo; } diff --git a/src/main/java/nlib/user/web/LoginController.java b/src/main/java/nlib/user/web/LoginController.java index db415f56..b96fe62f 100644 --- a/src/main/java/nlib/user/web/LoginController.java +++ b/src/main/java/nlib/user/web/LoginController.java @@ -32,6 +32,7 @@ import egovframework.com.ext.oauth.service.OAuthVO; import nlib.cmm.service.NlibProperty; import nlib.cmm.session.SessionConfig; import nlib.user.service.LoginService; +import nlib.user.service.NlibLoginVO; import nlib.util.StringUtil; /** @@ -406,7 +407,7 @@ public class LoginController { String jsessionId = session.getId(); String councilCd = (String)session.getAttribute("councilCd"); String councilReturnUrl = (String)session.getAttribute("councilReturnUrl"); - OAuthUniversalUser oauthUser = SessionConfig.popLoginInfo(jsessionId); + OAuthUniversalUser oauthUser = SessionConfig.getLoginInfo(jsessionId); if(oauthUser == null || !oauthUser.isValid()) { throw new Exception("잘못된 접근입니다."); @@ -419,17 +420,33 @@ public class LoginController { // 정상 SNS 연동 로그인 if(loginResult == null) { + SessionConfig.removeLoginInfo(jsessionId); // 세션에 설정된 redirect 주소 확인 return "redirect:" + councilReturnUrl; } + // 휴면계좌 + if(StringUtil.equalsIgnoreCase(loginResult, loginService.WRN_CODE_DORMANT)) { + redirectUrl = NlibProperty.getString("login.dormant.url"); + return "redirect:" + redirectUrl; + } + + // 신규 지방문화원 정보 제공 동의 필요 + if(StringUtil.equalsIgnoreCase(loginResult, loginService.ERR_CODE_REQ_AGREE)) { + redirectUrl = NlibProperty.getString("login.newcouncil.url"); + return "redirect:" + redirectUrl; + } + // SNS 로그인은 정상적이나, NLIB 시스템에 등록되지 않은 사용자 : 회원가입으로 전환 model.addAttribute("error", loginResult); if(StringUtil.equalsIgnoreCase(loginResult, loginService.ERR_CODE_REQ_MEMBERSHIP)) { + SessionConfig.setNewMemberInfo(jsessionId, oauthUser); + SessionConfig.removeLoginInfo(jsessionId); model.addAttribute("message", "회원가입하신 후, 이용 가능합니다."); redirectUrl = NlibProperty.getString("member.new.url"); return "redirect:" + redirectUrl; } else if(StringUtil.equalsIgnoreCase(loginResult, loginService.ERR_CODE_REQ_SNSLOGIN)) { + SessionConfig.removeLoginInfo(jsessionId); model.addAttribute("message", "먼저 로그인할 SNS를 선택하여 로그인 바랍니다."); redirectUrl = NlibProperty.getString("login.back.url"); return "redirect:" + redirectUrl; @@ -448,7 +465,143 @@ public class LoginController { public String logout(HttpServletRequest req) { return null; } - + + /** + * 휴면계좌 안내 및 해지 선택 화면을 표출한다. + * + * @param req + * @param error + * @param message + * @param logout + * @param redirectAttrs + * @param paramMap + * @param model + * @param session + * @return + */ + @RequestMapping("/login/activateDormantAccForm.do") + public String activateDormantAccForm( + HttpServletRequest req, + RedirectAttributes redirectAttrs, + @RequestParam Map paramMap, + Model model, + HttpSession session) { + + //---------------------------------------------- + // 지방문화원 사이트에서 접속한 경우, 지방문화원 정보 확인 + //---------------------------------------------- + String councilJsessionId = (String)session.getAttribute("councilJsessionId"); + String councilDnsHost = (String)session.getAttribute("councilDnsHost"); + String councilReturnUrl = (String)session.getAttribute("councilReturnUrl"); + String councilHomeUrl = (String)session.getAttribute("councilHomeUrl"); + String councilCd = (String)session.getAttribute("councilCd"); + String councilNm = (String)session.getAttribute("councilNm"); + + log.debug("activateDormantAccForm > sessionid=" + session.getId()); + log.debug("activateDormantAccForm > councilJsessionId = " + councilJsessionId); + log.debug("activateDormantAccForm > councilDnsHost = " + councilDnsHost); + log.debug("activateDormantAccForm > councilReturnUrl = " + councilReturnUrl); + log.debug("activateDormantAccForm > councilHomeUrl = " + councilHomeUrl); + log.debug("activateDormantAccForm > councilCd = " + councilCd); + log.debug("activateDormantAccForm > councilNm = " + councilNm); + + OAuthUniversalUser oauthUser = SessionConfig.getLoginInfo(session.getId()); + model.addAttribute("oauthUser", oauthUser); + return "nlib/login/activateDormantAccForm"; + } + + @RequestMapping("/login/agreeProvInfoForm.do") + public String agreeProvInfo( + HttpServletRequest req, + RedirectAttributes redirectAttrs, + @RequestParam Map paramMap, + Model model, + HttpSession session) { + + //---------------------------------------------- + // 지방문화원 사이트에서 접속한 경우, 지방문화원 정보 확인 + //---------------------------------------------- + String councilJsessionId = (String)session.getAttribute("councilJsessionId"); + String councilDnsHost = (String)session.getAttribute("councilDnsHost"); + String councilReturnUrl = (String)session.getAttribute("councilReturnUrl"); + String councilHomeUrl = (String)session.getAttribute("councilHomeUrl"); + String councilCd = (String)session.getAttribute("councilCd"); + String councilNm = (String)session.getAttribute("councilNm"); + + log.debug("activateDormantAccForm > sessionid=" + session.getId()); + log.debug("activateDormantAccForm > councilJsessionId = " + councilJsessionId); + log.debug("activateDormantAccForm > councilDnsHost = " + councilDnsHost); + log.debug("activateDormantAccForm > councilReturnUrl = " + councilReturnUrl); + log.debug("activateDormantAccForm > councilHomeUrl = " + councilHomeUrl); + log.debug("activateDormantAccForm > councilCd = " + councilCd); + log.debug("activateDormantAccForm > councilNm = " + councilNm); + + OAuthUniversalUser oauthUser = SessionConfig.getLoginInfo(session.getId()); + model.addAttribute("oauthUser", oauthUser); + model.addAttribute("councilCd", councilCd); + model.addAttribute("councilNm", councilNm); + + return "nlib/login/agreeProvInfoForm"; + } + + /** + * 휴면계좌 안내 및 해지 선택 화면을 표출한다. + * + * @param req + * @param error + * @param message + * @param logout + * @param redirectAttrs + * @param paramMap + * @param model + * @param session + * @return + */ + @RequestMapping("/login/activateDormantAcc.do") + public String activateDormantAcc( + HttpServletRequest req, + @RequestParam Map paramMap, + Model model, + HttpSession session) { + + String mbInfoId = StringUtil.getString(paramMap.get("mbInfoId"), ""); + + //---------------------------------------------- + // 지방문화원 사이트에서 접속한 경우, 지방문화원 정보 확인 + //---------------------------------------------- + String councilDnsHost = (String)session.getAttribute("councilDnsHost"); + String councilReturnUrl = (String)session.getAttribute("councilReturnUrl"); + String councilHomeUrl = (String)session.getAttribute("councilHomeUrl"); + String councilCd = (String)session.getAttribute("councilCd"); + String councilNm = (String)session.getAttribute("councilNm"); + + log.debug("activateDormantAcc > sessionid=" + session.getId()); + log.debug("activateDormantAcc > councilDnsHost = " + councilDnsHost); + log.debug("activateDormantAcc > councilReturnUrl = " + councilReturnUrl); + log.debug("activateDormantAcc > councilHomeUrl = " + councilHomeUrl); + log.debug("activateDormantAcc > councilCd = " + councilCd); + log.debug("activateDormantAcc > councilNm = " + councilNm); + + OAuthUniversalUser oauthUser = SessionConfig.getLoginInfo(session.getId()); + NlibLoginVO loginVO = oauthUser.getNlibVO(); + + if(loginVO == null || !mbInfoId.equals(loginVO.getMbInfoId())) { + model.addAttribute("code", "TIMEOUT"); + model.addAttribute("message", "잘못된 접근입니다. 장시간 대기로 다시 로그인 하신 후, 이용해 주시기 바랍니다."); + return "nlib/login/activateDormantAccForm"; + } + + int ret = loginService.activateDormantAcc(loginVO); + + if(ret < 1) { + model.addAttribute("code", "NO_TARGET"); + model.addAttribute("message", "휴면사용자가 아닙니다. 다시 로그인하시거나 관리자에게 문의하여 주시기 바랍니다."); + return "nlib/login/activateDormantAccForm"; + } + + // 로그인 처리 + return "redirect:/login/loginCouncilSSO.do"; + } // // 구글 로그인 콜백 // @RequestMapping(value = "/login/googleCallback.do")