From 2e7a4f2b8fed73bc782f4aa111f69ae222b4824d Mon Sep 17 00:00:00 2001 From: JSYOO Date: Fri, 3 Sep 2021 17:01:37 +0900 Subject: [PATCH] =?UTF-8?q?=EC=86=8C=EC=8A=A4=20=EC=B6=A9=EB=8F=8C=20?= =?UTF-8?q?=EB=8F=99=EA=B8=B0=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/nlib/user/web/MemberController.java | 264 +++++++++++++++--- 1 file changed, 226 insertions(+), 38 deletions(-) diff --git a/src/main/java/nlib/user/web/MemberController.java b/src/main/java/nlib/user/web/MemberController.java index 5f14cb52..ca6c8a9e 100644 --- a/src/main/java/nlib/user/web/MemberController.java +++ b/src/main/java/nlib/user/web/MemberController.java @@ -8,8 +8,10 @@ import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; +import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Collections; +import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -70,6 +72,7 @@ import nlib.mail.service.EmailVO; import nlib.restful.service.DataApiReqVO; import nlib.user.service.MemberService; import nlib.user.service.NlibLoginVO; +import nlib.user.service.MemberSiteVO; import nlib.user.service.UserInfoService; import nlib.util.StringUtil; @@ -194,6 +197,19 @@ public class MemberController { */ @RequestMapping(value="/member/selectMemberJoiningInfo.do") public String selectMemberJoiningInfo(HttpServletRequest req,ModelMap model,HttpSession session) throws Exception { + String jsessionId = session.getId(); + OAuthUniversalUser oauthUser = SessionConfig.getNewMemberInfo(jsessionId); + + int count=0; + + //기 가입계정인지 확인 + count=memberService.selectSnsIdCount(oauthUser); + if(count>0) + { + model.addAttribute("msg","이미 가입된 계정입니다. 로그인해주세요."); + model.addAttribute("url","/nlib"+NlibProperty.getString("login.url")); + return "nlib/cmm/alert"; + } return "/nlib/member/selectMemberJoiningInfo"; } @@ -226,10 +242,12 @@ public class MemberController { */ @RequestMapping(value="/member/insertMemberInfoForm.do") public String insertMemberInfoForm(HttpServletRequest request,NlibLoginVO vo,HttpSession session,ModelMap model ) throws Exception{ - + MemberSiteVO msVO= new MemberSiteVO(); + int siteCnt; String jsessionId = session.getId(); - //String councilCd = (String)session.getAttribute("councilCd"); + String councilCd = (String)session.getAttribute("councilCd"); //String councilReturnUrl = (String)session.getAttribute("councilReturnUrl"); + OAuthUniversalUser oauthUser = SessionConfig.getNewMemberInfo(jsessionId); String mId = null; @@ -243,8 +261,20 @@ public class MemberController { { oauthUser.setMbInfoId(mId); memberService.insertMemberSns(oauthUser); + + //가입문화원정보 설정 + msVO.setMbInfoId(mId); + msVO.setJoinType(oauthUser.getSnsType()); + msVO.setJoinCouncilCd(councilCd); + msVO.setMasterYn("N"); + siteCnt= memberService.selectMemberSiteCount(msVO); + //문화원에 가입하지않았을 시 insert + if(!(siteCnt>0)) + { + memberService.insertMemberSite(msVO); + } //통합처리 url - return "redirect:/member/accountConsolidationForm.do"; + return "nlib/member/accountConsolidationForm"; } model.addAttribute("loginVO",oauthUser); return "nlib/member/insertMemberInfoForm"; @@ -255,30 +285,79 @@ public class MemberController { * @exception Exception */ @RequestMapping(value="/member/insertMemberInfo.do") - public String insertMemberInfo(NlibLoginVO vo,ModelMap model) throws Exception{ + public String insertMemberInfo(NlibLoginVO vo,ModelMap model,HttpSession session) throws Exception{ + MemberSiteVO msVO= new MemberSiteVO(); List voList = new ArrayList(); + EmailVO email = new EmailVO(); + + //문화원코드 + String councilCd = (String)session.getAttribute("councilCd"); + // 등록된 전화번호가 있는 지 확인 (리스트) voList = memberService.selectAlreadySignUpMobile(vo); /* 등록된 ID가 있을때 통합처리 */ if(voList.size() > 0) { - /* oauthUser.setMbInfoId(mId); - memberService.insertMemberSns(oauthUser);*/ //통합처리 url - System.out.println(voList.get(0).getEmail()); - System.out.println(voList.get(0).getMbInfoId()); model.addAttribute("result",voList); return "nlib/member/accountConsolidationForm"; } - //등록처리 요청 (data insert) - memberService.insertMemberInfo(vo); + String jsessionId = session.getId(); + OAuthUniversalUser oauthUser = SessionConfig.popNewMemberInfo(jsessionId); + + if(oauthUser.getNlibVO()!=null) + { + //핸드폰인증시 sns제공 번호와 회원가입폼 번호 비교 + if(!(vo.getMobileNo().equals(oauthUser.getSnsMobileNo()))) + { + if(!(vo.getMobileVrfctNo().equals(oauthUser.getNlibVO().getMobileVrfctNo())) + ||oauthUser.getNlibVO().getMobileVrfctDd() == null) + { + model.addAttribute("msg","핸드폰인증에 문제가 있습니다. 다시 회원가입을 진행해주세요."); + model.addAttribute("url","${pageContext.request.contextPath}"+NlibProperty.getString("member.new.url")); + return "nlib/cmm/alert"; + } + } + //이메일인증시 sns제공 이메일과 회원가입폼 이메일 비교 + if(!(vo.getEmail().equals(oauthUser.getSnsUserId()))) + { + if(!(vo.getEmailVrfctDd().equals(oauthUser.getNlibVO().getEmailVrfctDd())) + ||oauthUser.getNlibVO().getEmailVrfctDd() == null) + { + model.addAttribute("msg","이메일인증에 문제가 있습니다. 다시 회원가입을 진행해주세요."); + model.addAttribute("url","${pageContext.request.contextPath}"+NlibProperty.getString("member.new.url")); + return "nlib/cmm/alert"; + } + } + } + //회원정보 insert + NlibLoginVO result =memberService.insertMemberInfo(vo); + + //sns 테이블 insert + oauthUser.setMbInfoId(result.getMbInfoId()); + + memberService.insertMemberSns(oauthUser); + + + //가입문화원정보 테이블 insert + msVO.setMbInfoId(result.getMbInfoId()); + msVO.setJoinType(oauthUser.getSnsType()); + msVO.setJoinCouncilCd(councilCd); + msVO.setMasterYn("Y"); + + memberService.insertMemberSite(msVO); + + // 결과가 정상이면, 안내 메일 발송 // > 템플릿파일에서 내용 mailing.sender.membership.template // > 치환 (사용자명, 이메일주소) // > 발송처리 요청 + String reciver = vo.getLoginUserId(); //받을사람의 이메일입니다.-> naver nate 등등 + String subject = "온라인자료대출시스템 회원가입을 축하드립니다."; + Path path = Paths.get(template); Charset cs = StandardCharsets.UTF_8; List list = new ArrayList(); @@ -293,30 +372,129 @@ public class MemberController { contents+=readLine; } contents=contents.replace("${userName}",vo.getName()); + + email.setReciver(reciver); + + email.setSubject(subject); + email.setContent(contents); + emailSender.SendEmail(email); + return "nlib/member/insertMemberInfoResult"; } + /** + * 이메일 인증번호 발송 + * @exception Exception + */ + @RequestMapping(value="/member/emailCertNum.ajax" , method=RequestMethod.POST) + public @ResponseBody void emailCertNum(HttpServletResponse response,HttpServletRequest request,HttpSession session) throws Exception{ + String email = request.getParameter("email"); + EmailVO emailVO = new EmailVO(); + //인증번호 생성 + String CertNumber=memberService.numberGen(6,1); + System.out.println(CertNumber); + //세션에 저장 + String jsessionId = session.getId(); + OAuthUniversalUser oauthUser = SessionConfig.getNewMemberInfo(jsessionId); + + NlibLoginVO vo=oauthUser.getNlibVO(); + //이미 생성된 VO가 없을때 + if(vo==null) + vo= new NlibLoginVO(); + vo.setEmail(email); + vo.setEmailVrfctNo(CertNumber); + oauthUser.setNlibVO(vo); + SessionConfig.setNewMemberInfo(jsessionId,oauthUser); + + //이메일 발송 + // 결과가 정상이면, 안내 메일 발송 + // > 템플릿파일에서 내용 mailing.sender.membership.template + // > 치환 (사용자명, 이메일주소) + // > 발송처리 요청 + String reciver = email; //받을사람의 이메일입니다.-> naver nate 등등 + String subject = "온라인자료대출시스템 이메일 인증번호"; + + Path path = Paths.get(template); + Charset cs = StandardCharsets.UTF_8; + List list = new ArrayList(); + String contents = ""; + try { + list = Files.readAllLines(path,cs); + }catch(IOException e) { + e.printStackTrace(); + } + + for(String readLine : list) { + contents+=readLine; + } + contents=contents.replace("${userName}",vo.getName()+"님의 인증번호는"+CertNumber+"입니다."); + + emailVO.setReciver(reciver); + + emailVO.setSubject(subject); + emailVO.setContent(contents); + emailSender.SendEmail(emailVO); + + //------------ + } + + /** + * 이메일 인증번호 확인 + * @exception Exception + */ + @RequestMapping(value="/member/emailCertNumChk.ajax" , method=RequestMethod.POST) + public @ResponseBody String emailCertNumChk(HttpServletResponse response,HttpServletRequest request,HttpSession session) throws Exception{ + String email = request.getParameter("email"); + String emailVrfctNo = request.getParameter("emailVrfctNo"); + + SimpleDateFormat format = new SimpleDateFormat ( "yyyy년 MM월dd일 HH시mm분ss초"); + + //세션에 저장 + String jsessionId = session.getId(); + OAuthUniversalUser oauthUser = SessionConfig.getNewMemberInfo(jsessionId); + + //핸드폰번호와 인증번호 확인 + if(oauthUser.getNlibVO().getEmail().equals(email) && oauthUser.getNlibVO().getEmailVrfctNo().equals(emailVrfctNo)) + { + Date time = new Date(); + NlibLoginVO sessionNlibLoginVO = oauthUser.getNlibVO(); + sessionNlibLoginVO.setEmailVrfctDd(format.format(time)); + oauthUser.setNlibVO(sessionNlibLoginVO); + SessionConfig.setNewMemberInfo(jsessionId,oauthUser); + return "true"; + }else { + return "false"; + } + } /** * 핸드폰 인증번호 발송 * @exception Exception */ @RequestMapping(value="/member/mobileCertNum.ajax" , method=RequestMethod.POST) - public @ResponseBody void phoneCertNum(HttpServletResponse response,HttpServletRequest request) throws Exception{ + public @ResponseBody void phoneCertNum(HttpServletResponse response,HttpServletRequest request,HttpSession session) throws Exception{ String mobileNo = request.getParameter("mobileNo"); - HashMap commandMap = new HashMap(); - DataApiReqVO reqVO = new DataApiReqVO(); - //인증번호 생성 String CertNumber=memberService.numberGen(6,1); - - commandMap.put("CertNumber",CertNumber); - - reqVO.setInfo(commandMap); - - System.out.println(mobileNo); System.out.println(CertNumber); + //세션에 저장 + String jsessionId = session.getId(); + OAuthUniversalUser oauthUser = SessionConfig.getNewMemberInfo(jsessionId); + + NlibLoginVO vo=oauthUser.getNlibVO(); + //이미 생성된 VO가 없을때 + if(vo==null) + vo= new NlibLoginVO(); + + vo.setMobileNo(mobileNo); + vo.setMobileVrfctNo(CertNumber); + oauthUser.setNlibVO(vo); + SessionConfig.setNewMemberInfo(jsessionId,oauthUser); + + //문자발송 솔루션 + + //------------ } /** @@ -324,21 +502,28 @@ public class MemberController { * @exception Exception */ @RequestMapping(value="/member/mobileCertNumChk.ajax" , method=RequestMethod.POST) - public @ResponseBody String mobileCertNumChk(HttpServletResponse response,HttpServletRequest request) throws Exception{ + public @ResponseBody String mobileCertNumChk(HttpServletResponse response,HttpServletRequest request,HttpSession session) throws Exception{ String mobileNo = request.getParameter("mobileNo"); - String mobileCertNum = request.getParameter("mobileCertNum"); + String mobileVrfctNo = request.getParameter("mobileVrfctNo"); - HashMap commandMap = new HashMap(); - commandMap.put("phone", mobileNo); - commandMap.put("phoneCertNum", mobileCertNum); - DataApiReqVO reqVO = new DataApiReqVO(); + SimpleDateFormat format = new SimpleDateFormat ( "yyyy년 MM월dd일 HH시mm분ss초"); - reqVO.setInfo(commandMap); + //세션에 저장 + String jsessionId = session.getId(); + OAuthUniversalUser oauthUser = SessionConfig.getNewMemberInfo(jsessionId); - System.out.println(mobileNo); - System.out.println(mobileCertNum); - - return "true"; + //핸드폰번호와 인증번호 확인 + if(oauthUser.getNlibVO().getMobileNo().equals(mobileNo) && oauthUser.getNlibVO().getMobileVrfctNo().equals(mobileVrfctNo)) + { + Date time = new Date(); + NlibLoginVO sessionNlibLoginVO = oauthUser.getNlibVO(); + sessionNlibLoginVO.setMobileVrfctDd(format.format(time)); + oauthUser.setNlibVO(sessionNlibLoginVO); + SessionConfig.setNewMemberInfo(jsessionId,oauthUser); + return "true"; + }else { + return "false"; + } } /** @@ -393,6 +578,15 @@ public class MemberController { for(String readLine : list) { contents+=readLine; } + + encodedText = egovPasswordEncoder.encryptPassword(InitPwd); + vo.setPassword(encodedText); + + vo.setMbInfoId(gUserId); + + //암호화된 비밀번호로 수정 + memberService.changePassword(vo); + contents=contents.replace("${userPwd}",InitPwd); email.setReciver(reciver); @@ -401,13 +595,7 @@ public class MemberController { email.setContent(contents); emailSender.SendEmail(email); - encodedText = egovPasswordEncoder.encryptPassword(InitPwd); - vo.setPassword(encodedText); - - vo.setMbInfoId(gUserId); - - //암호화된 비밀번호로 수정 - memberService.changePassword(vo); + message="초기화된 비밀번호가 이메일로 발송됐습니다."; }else {