From 30a440997fa95d6986dcb0f85924c5cc755b7b16 Mon Sep 17 00:00:00 2001 From: JSYOO Date: Fri, 10 Sep 2021 14:54:32 +0900 Subject: [PATCH] =?UTF-8?q?=EC=88=98=EC=A0=95=ED=8E=98=EC=9D=B4=EC=A7=80?= =?UTF-8?q?=20,=20=20,=EC=97=B0=EB=8F=99=ED=95=B4=EC=A0=9C,=20=EB=B9=84?= =?UTF-8?q?=EB=B0=80=EB=B2=88=ED=98=B8=EC=B4=88=EA=B8=B0=ED=99=94=20?= =?UTF-8?q?=ED=8F=B0=EB=B2=88=ED=98=B8=EC=97=86=EC=9D=B4(=EB=B3=80?= =?UTF-8?q?=EA=B2=BD=3F)=20=ED=86=B5=ED=95=A9=ED=83=88=ED=87=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ,핸드폰번호같을시 비밀번호 입력후 통합 --- .../com/ext/oauth/service/OAuthLogin.java | 10 +- .../java/nlib/user/web/MemberController.java | 110 +++++++++++++++++- .../mapper/nlib/user/MemberDAO_SQL.xml | 2 + .../mapper/nlib/user/UserInfoDAO_SQL.xml | 12 +- .../nlib/member/accountConsolidationForm.jsp | 1 + .../jsp/nlib/member/alreadySignUpForm.jsp | 40 ------- .../jsp/nlib/member/alreadySignUpPopup.jsp | 102 ++++++++++++++++ .../jsp/nlib/member/insertMemberInfoForm.jsp | 6 +- .../WEB-INF/jsp/nlib/userInfo/putMyInfo.jsp | 2 +- 9 files changed, 233 insertions(+), 52 deletions(-) delete mode 100644 src/main/webapp/WEB-INF/jsp/nlib/member/alreadySignUpForm.jsp create mode 100644 src/main/webapp/WEB-INF/jsp/nlib/member/alreadySignUpPopup.jsp diff --git a/src/main/java/egovframework/com/ext/oauth/service/OAuthLogin.java b/src/main/java/egovframework/com/ext/oauth/service/OAuthLogin.java index f3230882..71636ba5 100644 --- a/src/main/java/egovframework/com/ext/oauth/service/OAuthLogin.java +++ b/src/main/java/egovframework/com/ext/oauth/service/OAuthLogin.java @@ -168,8 +168,16 @@ public class OAuthLogin { user.setSnsEmail(StringUtil.getString(resNode.get("email").asText(), "")); } if (resNode.has("gender")) + { user.setSnsGender(StringUtil.getString(resNode.get("gender").asText(), "")); - + if(user.getSnsGender().equals("male")) + { + user.setSnsGender("M"); + }else if(user.getSnsGender().equals("female")) + { + user.setSnsGender("F"); + } + } if (resNode.has("birthday") || resNode.has("birthyear")) user.setSnsUserId((resNode.get("email").asText() == null) ? "" : resNode.get("email").asText()); diff --git a/src/main/java/nlib/user/web/MemberController.java b/src/main/java/nlib/user/web/MemberController.java index 3d0692d7..3d305305 100644 --- a/src/main/java/nlib/user/web/MemberController.java +++ b/src/main/java/nlib/user/web/MemberController.java @@ -293,17 +293,93 @@ public class MemberController extends NlibCommonController{ * 동일한 핸드폰번호로 가입한 계정있을 시 통합팝업 * @exception Exception */ - @RequestMapping(value="/member/selectAlreadySignUpMobile.do") + @RequestMapping(value="/member/selectAlreadySignUpMobilePopup.do") public String selectAlreadySignUpMobile(NlibLoginVO vo,ModelMap model,HttpSession session,HttpServletRequest request) throws Exception{ List voList = new ArrayList(); // 등록된 전화번호가 있는 지 확인 (리스트) voList = memberService.selectAlreadySignUpMobile(vo); - //통합처리 url + + //사용자ID 마스킹처리 + for(int i=0;voList.size()>i;i++) + { + voList.get(i).setLoginUserId(maskingEmail(voList.get(i).getLoginUserId())); + voList.get(i).setName(maskingName(voList.get(i).getName())); + } + model.addAttribute("cnt",voList.size()); model.addAttribute("result",voList); - return "nlib/member/alreadySignUp"; + return "nlib/member/alreadySignUpPopup"; } + /** + * 회원가입시 기존계정과 핸드폰번호가 일치할시 sns 계정통합 + * @exception Exception + */ + @RequestMapping(value="/member/snsAccountLink.ajax" , method=RequestMethod.POST) + public @ResponseBody String snsAccountLink(NlibLoginVO vo,HttpServletResponse response,Authentication authentication,HttpServletRequest request,HttpSession session) throws Exception{ + NlibLoginVO loginVO = new NlibLoginVO(); + loginVO.setMbInfoId(vo.getMbInfoId()); + + //사용자 정보를 가져온다. + loginVO=userInfoService.selectMyInfo(loginVO); + + String msg=""; + + String encodedText=null; + encodedText = egovPasswordEncoder.encryptPassword(loginVO.getLoginUserId()+vo.getPassword()); + vo.setPassword(encodedText); + + //암호화된 패스워드 비교 + if(loginVO.getPassword().equals(vo.getPassword())) { + String jsessionId = session.getId(); + OAuthUniversalUser oauthUser = SessionConfig.getNewMemberInfo(jsessionId); + oauthUser.setMbInfoId(vo.getMbInfoId()); + memberService.insertMemberSns(oauthUser); + msg="link"; + }else { + msg="mismatch"; + } + return msg; + } + + /** + * 계정통합후 로그인 + * @exception Exception + */ + @RequestMapping(value="/member/snsAccountLinkLogin.do") + public String snsAccountLinkLogin(NlibLoginVO vo,ModelMap model,HttpSession session,HttpServletRequest request) throws Exception{ + String redirectUrl=""; + + String url = request.getRequestURL().toString(); + String councilHomeUrl=url.replaceAll(request.getRequestURI(), "") + request.getContextPath(); + + String jsessionId = session.getId(); + OAuthUniversalUser oauthUser = SessionConfig.getNewMemberInfo(jsessionId); + + SessionConfig.setLoginInfo(jsessionId, oauthUser); + session.setAttribute("councilReturnUrl","/member/accountConsolidationForm.do" );//로그인후 이동할페이지 + redirectUrl = councilHomeUrl + NlibProperty.getString("nculture.login.post.login.redirect.uri"); + + return "redirect:" + redirectUrl; + } + + /** + * 계정통합 결과폼 + * @exception Exception + */ + @RequestMapping(value="/member/accountConsolidationForm.do") + public String accountConsolidationForm(NlibLoginVO vo,ModelMap model,Authentication authentication,HttpSession session,HttpServletRequest request) throws Exception{ + //사용자 정보를 가져온다. + NlibLoginVO loginVO = getNlibLoginVO(authentication); + loginVO.setJoinCouncilCd(getCurCouncilCd(request)); + + loginVO = loginService.selectLoginUserInfo(loginVO); + loginVO.setLoginUserId(maskingEmail(loginVO.getLoginUserId())); + loginVO.setName(maskingName(loginVO.getName())); + + model.addAttribute("result",loginVO); + return "/nlib/member/accountConsolidationForm"; + } /** * 회원가입 * @exception Exception @@ -565,8 +641,12 @@ public class MemberController extends NlibCommonController{ public String deleteMembershipForm(HttpServletResponse response,Authentication authentication,HttpServletRequest request,ModelMap model) throws Exception{ //사용자 정보를 가져온다. NlibLoginVO loginVO = getNlibLoginVO(authentication); - //이메일 마스킹 + loginVO.setJoinCouncilCd(getCurCouncilCd(request)); + + loginVO = loginService.selectLoginUserInfo(loginVO); + //이메일,이름 마스킹 loginVO.setLoginUserId(maskingEmail(loginVO.getLoginUserId())); + loginVO.setName(maskingName(loginVO.getName())); model.addAttribute("loginVO",loginVO); return "nlib/member/deleteMembershipForm"; } @@ -716,7 +796,7 @@ public class MemberController extends NlibCommonController{ return message; } - /** * 이메일 masking 후 리턴
* 변환 실패시 입력값 그대로 리턴
* 이메일 아이디 앞 2자리 노출
* 마스킹 처리는 글자수 상관없이 5자리로 노출 * */ + /** * 이메일 masking 후 리턴
* 변환 실패시 입력값 그대로 리턴
* 이메일 아이디 앞 2자리 노출
*/ public String maskingEmail(String email){ try{ if(StringUtils.isEmpty(email) || !email.contains("@")){ @@ -741,6 +821,26 @@ public class MemberController extends NlibCommonController{ catch (Exception e){ } return email; } + /** * 이름 masking 후 리턴
* 변환 실패시 입력값 그대로 리턴
*/ + public String maskingName(String name){ + try{ + if(StringUtils.isEmpty(name)){ + return name; + } + if(name.length() == 2){ + + return name.substring(0, 1)+"*"; + } + else if(name.length() >2){ + String str=""; + for(int i = 2; name.length()>i;i++) + str+="*"; + return name.substring(0, 1)+str+name.substring(name.length()-1,name.length()); + } + } + catch (Exception e){ + } return name; + } /** * 회원가입 SNS 구글인증 * @exception Exception diff --git a/src/main/resources/egovframework/mapper/nlib/user/MemberDAO_SQL.xml b/src/main/resources/egovframework/mapper/nlib/user/MemberDAO_SQL.xml index b09f3984..4b04b530 100644 --- a/src/main/resources/egovframework/mapper/nlib/user/MemberDAO_SQL.xml +++ b/src/main/resources/egovframework/mapper/nlib/user/MemberDAO_SQL.xml @@ -118,6 +118,8 @@ MB_INFO_ID ,LOGIN_USER_ID ,EMAIL + ,PASSWORD + ,NAME FROM MB_INFO WHERE 1=1 diff --git a/src/main/resources/egovframework/mapper/nlib/user/UserInfoDAO_SQL.xml b/src/main/resources/egovframework/mapper/nlib/user/UserInfoDAO_SQL.xml index 1a1c2962..0d77ba9e 100644 --- a/src/main/resources/egovframework/mapper/nlib/user/UserInfoDAO_SQL.xml +++ b/src/main/resources/egovframework/mapper/nlib/user/UserInfoDAO_SQL.xml @@ -55,11 +55,19 @@ MB_INFO_ID ,LOGIN_USER_ID ,MOBILE_NO + ,PASSWORD FROM MB_INFO WHERE 1=1 - AND MOBILE_NO = #{mobileNo} - AND LOGIN_USER_ID = #{loginUserId} + + AND MB_INFO_ID = #{mbInfoId}; + + + AND MOBILE_NO = #{mobileNo}; + + + AND LOGIN_USER_ID = #{loginUserId}; + diff --git a/src/main/webapp/WEB-INF/jsp/nlib/member/accountConsolidationForm.jsp b/src/main/webapp/WEB-INF/jsp/nlib/member/accountConsolidationForm.jsp index 2bc01bf1..affe8537 100644 --- a/src/main/webapp/WEB-INF/jsp/nlib/member/accountConsolidationForm.jsp +++ b/src/main/webapp/WEB-INF/jsp/nlib/member/accountConsolidationForm.jsp @@ -36,6 +36,7 @@

계정이 통합되었습니다.

+${result.name } ${result.loginUserId } \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/jsp/nlib/member/alreadySignUpForm.jsp b/src/main/webapp/WEB-INF/jsp/nlib/member/alreadySignUpForm.jsp deleted file mode 100644 index d112372d..00000000 --- a/src/main/webapp/WEB-INF/jsp/nlib/member/alreadySignUpForm.jsp +++ /dev/null @@ -1,40 +0,0 @@ -<%@ page language="java" contentType="text/html; charset=UTF-8" - pageEncoding="UTF-8"%> - - - - -Insert title here - - - -
-서비스에 이미 가입된 계정이 있습니다. - - - - - - - - -
- 아니요, 내가 아닙니다. -
- - \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/jsp/nlib/member/alreadySignUpPopup.jsp b/src/main/webapp/WEB-INF/jsp/nlib/member/alreadySignUpPopup.jsp new file mode 100644 index 00000000..61c004e8 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/nlib/member/alreadySignUpPopup.jsp @@ -0,0 +1,102 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" %> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> +<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui" %> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> +<%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags"%> + + + + +Insert title here + + + +
+서비스에 이미 가입된 계정이 있습니다. + + + + ','','');"> + + + + +
+ 아니요, 내가 아닙니다. +
+ + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/jsp/nlib/member/insertMemberInfoForm.jsp b/src/main/webapp/WEB-INF/jsp/nlib/member/insertMemberInfoForm.jsp index fdb6677c..59e8e466 100644 --- a/src/main/webapp/WEB-INF/jsp/nlib/member/insertMemberInfoForm.jsp +++ b/src/main/webapp/WEB-INF/jsp/nlib/member/insertMemberInfoForm.jsp @@ -246,8 +246,8 @@ function certMobileCheck(){ { alert("인증되었습니다."); $("#mobileCertYn").val("Y"); - document.joinForm.action="/nlib/member/selectAlreadySignUpMobile.do"; - fn_layerPopFormSubmit(document.joinForm,false); + document.joinForm.action="/nlib/member/selectAlreadySignUpMobilePopup.do"; + fn_layerPopFormSubmit("joinForm",false); }else { alert("인증번호가 일치하지않습니다."); @@ -436,7 +436,7 @@ label.error { 이름 - " required > + " required > diff --git a/src/main/webapp/WEB-INF/jsp/nlib/userInfo/putMyInfo.jsp b/src/main/webapp/WEB-INF/jsp/nlib/userInfo/putMyInfo.jsp index 59394bbc..6a49a143 100644 --- a/src/main/webapp/WEB-INF/jsp/nlib/userInfo/putMyInfo.jsp +++ b/src/main/webapp/WEB-INF/jsp/nlib/userInfo/putMyInfo.jsp @@ -427,7 +427,7 @@ label.error { 이름 - > + >