diff --git a/src/main/java/nlib/mail/EmailSender.java b/src/main/java/nlib/mail/EmailSender.java index 475e834b..cf814ec9 100644 --- a/src/main/java/nlib/mail/EmailSender.java +++ b/src/main/java/nlib/mail/EmailSender.java @@ -24,7 +24,7 @@ public class EmailSender { helper.setText(email.getContent(), true); //***HTML 적용 helper.setTo(email.getReciver()); helper.setSubject(email.getSubject()); - helper.setFrom("siasia0824@gmail.com","한국문화원연합회"); + helper.setFrom("teachteam02@gmail.com","한국문화원연합회"); /* msg.setSubject(email.getSubject()); msg.setText(email.getContent(),"text/html"); diff --git a/src/main/java/nlib/user/service/MemberService.java b/src/main/java/nlib/user/service/MemberService.java index 2a70657f..7a255bde 100644 --- a/src/main/java/nlib/user/service/MemberService.java +++ b/src/main/java/nlib/user/service/MemberService.java @@ -57,10 +57,6 @@ public interface MemberService public List selectAlreadySignUpMobile(NlibLoginVO loginVO) throws Exception; - public void insertMemberSite(MemberSiteVO msVO); - - public int selectMemberSiteCount(MemberSiteVO msVO); - public int selectSnsIdCount(OAuthUniversalUser oauthUser); public void deleteMembership(NlibLoginVO loginVO) throws Exception;; diff --git a/src/main/java/nlib/user/service/MemberSiteVO.java b/src/main/java/nlib/user/service/MemberSiteVO.java deleted file mode 100644 index 43b1037c..00000000 --- a/src/main/java/nlib/user/service/MemberSiteVO.java +++ /dev/null @@ -1,101 +0,0 @@ -package nlib.user.service; - -import java.io.Serializable; -import java.util.Base64; - -import nlib.cmm.NlibCommonController; -import nlib.util.StringUtil; - -/** - *
- * @Class Name : MemberSiteVO.java
- * 
- * @Description : 가입문화원정보
- * 
- * 
- * @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
- *
- * 
- * - * @ ------------ -------- --------------------------- - * @ 수정일 수정자 수정내용 - * @ ------------ -------- --------------------------- - * @ 2021. 9. 02. JSYOO 최초 생성 - * - * @author 이씨플라자 * DIGITALSHIP JSYOO - * @since 2021. 7. 12. - * @version 1.0 - * - */ -public class MemberSiteVO implements Serializable { - - private static final long serialVersionUID = -8274004534207618049L; - - /* MB_SITE : 가입문화원 정보 */ - private String mbSiteId; /* 회원인덱스 */ - private String mbInfoId; /* 회원아이디 (ex: M1000000001) */ - private String joinType; /* 가입유형 SNS 및 로그인을 연계하는 포털시스템 아이디(naver, daum 등) */ - private String joinAgreeDd; /* 가입동의일자 */ - private String joinCouncilCd; /* 가입문화원코드 */ - private String joinCouncilNm; /* 가입문화원명 */ - private String masterYn; /* 대표여부 */ - private String ipNotUse; /* 접속아이피 */ - private String lastAccessDdNotUse; /* 마지막접근일자 */ - //---------------------------------------------------------------- - // SETTER.GETTER - //---------------------------------------------------------------- - public String getMbSiteId() { - return mbSiteId; - } - public void setMbSiteId(String mbSiteId) { - this.mbSiteId = mbSiteId; - } - public String getMbInfoId() { - return mbInfoId; - } - public void setMbInfoId(String mbInfoId) { - this.mbInfoId = mbInfoId; - } - public String getJoinType() { - return joinType; - } - public void setJoinType(String joinType) { - this.joinType = joinType; - } - public String getJoinAgreeDd() { - return joinAgreeDd; - } - public void setJoinAgreeDd(String joinAgreeDd) { - this.joinAgreeDd = joinAgreeDd; - } - public String getJoinCouncilCd() { - return joinCouncilCd; - } - public void setJoinCouncilCd(String joinCouncilCd) { - this.joinCouncilCd = joinCouncilCd; - } - public String getMasterYn() { - return masterYn; - } - public void setMasterYn(String masterYn) { - this.masterYn = masterYn; - } - public String getIpNotUse() { - return ipNotUse; - } - public void setIpNotUse(String ipNotUse) { - this.ipNotUse = ipNotUse; - } - public String getLastAccessDdNotUse() { - return lastAccessDdNotUse; - } - public void setLastAccessDdNotUse(String lastAccessDdNotUse) { - this.lastAccessDdNotUse = lastAccessDdNotUse; - } - public String getJoinCouncilNm() { - return joinCouncilNm; - } - public void setJoinCouncilNm(String joinCouncilNm) { - this.joinCouncilNm = joinCouncilNm; - } -} diff --git a/src/main/java/nlib/user/service/NlibLoginVO.java b/src/main/java/nlib/user/service/NlibLoginVO.java index f61c79db..8d6a4f49 100644 --- a/src/main/java/nlib/user/service/NlibLoginVO.java +++ b/src/main/java/nlib/user/service/NlibLoginVO.java @@ -41,8 +41,6 @@ public class NlibLoginVO implements Serializable { private String mobileNo; /* 휴대전화번호 */ private String password; /* 비밀번호 */ private String email; /* 이메일 */ - private String emailVrfctNo = null; /* 이메일 인증번호 */ - private String emailVrfctDd = null; /* 이메일 인증번호 발송일자 */ private String gender; /* 성별(M:남자,F:여자) */ private String zipCode; /* 우편번호 */ private String address; /* 주소 */ @@ -75,6 +73,11 @@ public class NlibLoginVO implements Serializable { private String error = null; /* 처리 오류코드 */ private String message = null; /* 처리 관련 메시지 */ + private String emailTemp = ""; /* 이메일 수정시 임시저장 변수 */ + private String emailVrfctNo = null; /* 이메일 인증번호 */ + private String emailVrfctDd = null; /* 이메일 인증번호 발송일자 */ + + private String mobileTemp = ""; /* 휴대전화번호 변경시 임시저장 변수 */ private String mobileVrfctNo = null; /* 본인확인 인증번호 */ private String mobileVrfctDd = null; /* 본인확인 인증번호 발송일자 */ @@ -400,5 +403,21 @@ public class NlibLoginVO implements Serializable { public void setAlerted(boolean alerted) { this.alerted = alerted; } + + public String getMobileTemp() { + return mobileTemp; + } + + public void setMobileTemp(String mobileTemp) { + this.mobileTemp = mobileTemp; + } + + public String getEmailTemp() { + return emailTemp; + } + + public void setEmailTemp(String emailTemp) { + this.emailTemp = emailTemp; + } } diff --git a/src/main/java/nlib/user/service/UserInfoService.java b/src/main/java/nlib/user/service/UserInfoService.java index f3ab73d3..7c492c22 100644 --- a/src/main/java/nlib/user/service/UserInfoService.java +++ b/src/main/java/nlib/user/service/UserInfoService.java @@ -38,12 +38,6 @@ public interface UserInfoService */ public void updateMyInfo(NlibLoginVO vo) throws Exception; - /** 가입문화원 리스트를 조회한다. - * @param vo - * @return - * @throws Exception - */ - public List selectCenterSignUpList(NlibLoginVO vo) throws Exception; /** SNS연동을 해지한다. * @param oAuthVO @@ -51,12 +45,6 @@ public interface UserInfoService */ public void deleteSnsLink(OAuthUniversalUser oAuthVO) throws Exception; - /** 문화원 가입을 해지한다. - * @param siteVO - * @throws Exception - */ - public void deleteCenterLink(MemberSiteVO siteVO) throws Exception; - /** 사용자의 정보를 조회한다. * @param vo * @return diff --git a/src/main/java/nlib/user/service/impl/MemberDAO.java b/src/main/java/nlib/user/service/impl/MemberDAO.java index dbbdd89d..78913012 100644 --- a/src/main/java/nlib/user/service/impl/MemberDAO.java +++ b/src/main/java/nlib/user/service/impl/MemberDAO.java @@ -10,7 +10,6 @@ import egovframework.com.ext.oauth.service.OAuthUniversalUser; import egovframework.rte.psl.dataaccess.mapper.Mapper; import nlib.restful.service.DataApiReqVO; import nlib.restful.service.DataApiResVO; -import nlib.user.service.MemberSiteVO; import nlib.user.service.NlibLoginVO; @Mapper("memberDAO") @@ -42,10 +41,6 @@ public interface MemberDAO public List selectAlreadySignUpMobile(NlibLoginVO loginVO) throws Exception; - public void insertMemberSite(MemberSiteVO msVO); - - public int selectMemberSiteCount(MemberSiteVO msVO); - public int selectSnsIdCount(OAuthUniversalUser oauthUser); public void deleteMembership(NlibLoginVO loginVO) throws Exception; diff --git a/src/main/java/nlib/user/service/impl/MemberServiceImpl.java b/src/main/java/nlib/user/service/impl/MemberServiceImpl.java index 70af9732..85286753 100644 --- a/src/main/java/nlib/user/service/impl/MemberServiceImpl.java +++ b/src/main/java/nlib/user/service/impl/MemberServiceImpl.java @@ -17,7 +17,6 @@ import nlib.cmm.crypto.AriaCrypto; import nlib.restful.service.DataApiReqVO; import nlib.restful.service.DataApiResVO; import nlib.user.service.MemberService; -import nlib.user.service.MemberSiteVO; import nlib.user.service.NlibLoginVO; import nlib.util.StringUtil; @@ -227,14 +226,6 @@ public class MemberServiceImpl implements MemberService return memberDAO.selectAlreadySignUpMobile(loginVO); } - public void insertMemberSite(MemberSiteVO msVO) { - memberDAO.insertMemberSite(msVO); - } - - public int selectMemberSiteCount(MemberSiteVO msVO) { - return memberDAO.selectMemberSiteCount(msVO); - } - public int selectSnsIdCount(OAuthUniversalUser oauthUser) { return memberDAO.selectSnsIdCount(oauthUser); } diff --git a/src/main/java/nlib/user/service/impl/UserInfoDAO.java b/src/main/java/nlib/user/service/impl/UserInfoDAO.java index 086d82e0..96609d60 100644 --- a/src/main/java/nlib/user/service/impl/UserInfoDAO.java +++ b/src/main/java/nlib/user/service/impl/UserInfoDAO.java @@ -4,7 +4,6 @@ import java.util.List; import egovframework.com.ext.oauth.service.OAuthUniversalUser; import egovframework.rte.psl.dataaccess.mapper.Mapper; -import nlib.user.service.MemberSiteVO; import nlib.user.service.NlibLoginVO; /** @@ -46,22 +45,11 @@ public interface UserInfoDAO */ public void updateMyInfo(NlibLoginVO vo) throws Exception; - /** 가입문화원 리스트를 조회한다. - * @param vo - * @return - */ - public List selectCenterSignUpList(NlibLoginVO vo) throws Exception; - /** SNS연동을 해지한다. * @param oAuthVO */ public void deleteSnsLink(OAuthUniversalUser oAuthVO) throws Exception; - /** 문화원가입을 해지한다. - * @param siteVO - */ - public void deleteCenterLink(MemberSiteVO siteVO) throws Exception; - /** 사용자의 정보를 조회한다. * @param vo * @return diff --git a/src/main/java/nlib/user/service/impl/UserInfoServiceImpl.java b/src/main/java/nlib/user/service/impl/UserInfoServiceImpl.java index 8a10fc56..61467355 100644 --- a/src/main/java/nlib/user/service/impl/UserInfoServiceImpl.java +++ b/src/main/java/nlib/user/service/impl/UserInfoServiceImpl.java @@ -10,7 +10,6 @@ import egovframework.com.ext.oauth.service.OAuthUniversalUser; import egovframework.rte.fdl.cryptography.EgovPasswordEncoder; import nlib.cmm.crypto.AriaCrypto; import nlib.user.service.MemberService; -import nlib.user.service.MemberSiteVO; import nlib.user.service.NlibLoginVO; import nlib.user.service.UserInfoService; @@ -67,14 +66,6 @@ public class UserInfoServiceImpl implements UserInfoService userInfoDAO.updateMyInfo(vo); } - /* 가입문화원 리스트를 조회한다. - * (non-Javadoc) - * @see nlib.user.service.UserInfoService#selectCenterSignUpList(nlib.user.service.NlibLoginVO) - */ - public List selectCenterSignUpList(NlibLoginVO vo) throws Exception { - return userInfoDAO.selectCenterSignUpList(vo); - } - /* SNS연동을 해지한다. * (non-Javadoc) * @see nlib.user.service.UserInfoService#deleteSnsLink(egovframework.com.ext.oauth.service.OAuthUniversalUser) @@ -82,13 +73,6 @@ public class UserInfoServiceImpl implements UserInfoService public void deleteSnsLink(OAuthUniversalUser oAuthVO) throws Exception { userInfoDAO.deleteSnsLink(oAuthVO); } - /* 문화원 가입을 해지한다. - * (non-Javadoc) - * @see nlib.user.service.UserInfoService#deleteCenterLink(nlib.user.service.MemberSiteVO) - */ - public void deleteCenterLink(MemberSiteVO siteVO) throws Exception { - userInfoDAO.deleteCenterLink(siteVO); - } /* 사용자의 정보를 조회한다. * (non-Javadoc) * @see nlib.user.service.UserInfoService#selectMyInfo(nlib.user.service.NlibLoginVO) diff --git a/src/main/java/nlib/user/web/MemberController.java b/src/main/java/nlib/user/web/MemberController.java index 58aa2b92..333f08e3 100644 --- a/src/main/java/nlib/user/web/MemberController.java +++ b/src/main/java/nlib/user/web/MemberController.java @@ -44,6 +44,7 @@ import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.client.RestTemplate; +import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.support.RedirectAttributes; import org.springframework.web.servlet.support.RequestContextUtils; @@ -74,7 +75,6 @@ import nlib.restful.service.DataApiReqVO; import nlib.user.service.LoginService; import nlib.user.service.MemberService; import nlib.user.service.NlibLoginVO; -import nlib.user.service.MemberSiteVO; import nlib.user.service.UserInfoService; import nlib.util.StringUtil; @@ -135,6 +135,9 @@ public class MemberController extends NlibCommonController{ @Resource(name = "egovEnvPasswordEncoderService") EgovPasswordEncoder egovPasswordEncoder; + @Resource(name = "ariaCrypto") + private AriaCrypto ariaCrypto; + @Autowired private EmailSender emailSender; @@ -251,7 +254,6 @@ public class MemberController extends NlibCommonController{ */ @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"); @@ -271,17 +273,6 @@ public class MemberController extends NlibCommonController{ 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 "nlib/member/accountConsolidationForm"; } @@ -298,11 +289,13 @@ public class MemberController extends NlibCommonController{ List voList = new ArrayList(); // 등록된 전화번호가 있는 지 확인 (리스트) voList = memberService.selectAlreadySignUpMobile(vo); - + + vo.decodePrivateInfo(); + //사용자ID 마스킹처리 for(int i=0;voList.size()>i;i++) { - voList.get(i).setLoginUserId(maskingEmail(voList.get(i).getLoginUserId())); + voList.get(i).setEmail(maskingEmail(ariaCrypto.decode(voList.get(i).getEmail()))); voList.get(i).setName(maskingName(voList.get(i).getName())); } @@ -374,7 +367,7 @@ public class MemberController extends NlibCommonController{ loginVO.setJoinCouncilCd(getCurCouncilCd(request)); loginVO = loginService.selectLoginUserInfo(loginVO); - loginVO.setLoginUserId(maskingEmail(loginVO.getLoginUserId())); + loginVO.setEmail(maskingEmail(loginVO.getEmail())); loginVO.setName(maskingName(loginVO.getName())); model.addAttribute("result",loginVO); @@ -386,7 +379,6 @@ public class MemberController extends NlibCommonController{ */ @RequestMapping(value="/member/insertMemberInfo.do") public String insertMemberInfo(NlibLoginVO vo,ModelMap model,HttpSession session,HttpServletRequest request) throws Exception{ - MemberSiteVO msVO= new MemberSiteVO(); EmailVO email = new EmailVO(); @@ -410,7 +402,7 @@ public class MemberController extends NlibCommonController{ //이메일인증시 sns제공 이메일과 회원가입폼 이메일 비교 if(!(vo.getEmail().equals(oauthUser.getSnsUserId()))) { - if(!(vo.getEmailVrfctDd().equals(oauthUser.getNlibVO().getEmailVrfctDd())) + if(!(vo.getEmailVrfctNo().equals(oauthUser.getNlibVO().getEmailVrfctNo())) ||oauthUser.getNlibVO().getEmailVrfctDd() == null) { model.addAttribute("msg","이메일인증이 정상적이지않습니다. 다시 회원가입을 진행해주세요."); @@ -422,6 +414,9 @@ public class MemberController extends NlibCommonController{ //문화원코드 String councilCd = (String)session.getAttribute("councilCd"); + //클라이언트 IP주소 + vo.setIp(getRemoteIP(request)); + //회원정보 insert NlibLoginVO result =memberService.insertMemberInfo(vo); @@ -430,17 +425,6 @@ public class MemberController extends NlibCommonController{ 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 // > 치환 (사용자명, 이메일주소) @@ -476,17 +460,30 @@ public class MemberController extends NlibCommonController{ * @exception Exception */ @RequestMapping(value="/member/emailCertNum.ajax" , method=RequestMethod.POST) - public @ResponseBody Map emailCertNum(HttpServletResponse response,HttpServletRequest request,HttpSession session) throws Exception{ + public @ResponseBody Map emailCertNum(HttpServletResponse response,Authentication authentication,HttpServletRequest request,HttpSession session) throws Exception{ String email = request.getParameter("email"); + //회원가입페이지와 정보수정페이지의 프로세스 분기를위해 가져옴 + String pageName = request.getParameter("pageName"); + Map map = new HashMap(); OAuthUniversalUser authUser= new OAuthUniversalUser(); authUser.setSnsUserId(email); authUser.setSnsEmail(email); - //중복된 아이디가 있을시 - if(memberService.selectAlreadySignUpId(authUser) != null) + String mbInfoId=""; + String chk= memberService.selectAlreadySignUpId(authUser); + + String jsessionId = session.getId(); + + //사용자 정보를 가져온다. 회원가입페이지라면 null + NlibLoginVO loginVO = getNlibLoginVO(authentication); + mbInfoId= loginVO.getMbInfoId(); + + //중복된 아이디가 있을시(로그인시 본인의 mbInfoId 와 동일한경우는 제외) + if(chk != null && !(chk.equals(mbInfoId))) { + map.put("msg","이미 사용중인 이메일입니다."); map.put("emailCertYn","N"); return map; @@ -497,19 +494,27 @@ public class MemberController extends NlibCommonController{ //인증번호 생성 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); + //내 정보 페이지 + if("myInfo".equals(pageName)) + { + loginVO.setEmailTemp(email); + loginVO.setEmailVrfctNo(CertNumber); + replaceNlibLoginVO(request, loginVO); + }else + { + //세션에 저장 + 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); + } //이메일 발송 // 결과가 정상이면, 안내 메일 발송 @@ -532,7 +537,7 @@ public class MemberController extends NlibCommonController{ for(String readLine : list) { contents+=readLine; } - contents=contents.replace("${userName}",vo.getName()+"님의 인증번호는"+CertNumber+"입니다."); + contents=contents.replace("${userName}","인증번호는"+CertNumber+"입니다."); emailVO.setReciver(reciver); @@ -549,27 +554,49 @@ public class MemberController extends NlibCommonController{ * @exception Exception */ @RequestMapping(value="/member/emailCertNumChk.ajax" , method=RequestMethod.POST) - public @ResponseBody String emailCertNumChk(HttpServletResponse response,HttpServletRequest request,HttpSession session) throws Exception{ + public @ResponseBody String emailCertNumChk(HttpServletResponse response,Authentication authentication,HttpServletRequest request,HttpSession session) throws Exception{ String email = request.getParameter("email"); String emailVrfctNo = request.getParameter("emailVrfctNo"); + //회원가입페이지와 정보수정페이지의 프로세스 분기를위해 가져옴 + String pageName = request.getParameter("pageName"); SimpleDateFormat format = new SimpleDateFormat ( "yyyy년 MM월dd일 HH시mm분ss초"); + Date time = new Date(); - //세션에 저장 - String jsessionId = session.getId(); - OAuthUniversalUser oauthUser = SessionConfig.getNewMemberInfo(jsessionId); - - //핸드폰번호와 인증번호 확인 - if(oauthUser.getNlibVO().getEmail().equals(email) && oauthUser.getNlibVO().getEmailVrfctNo().equals(emailVrfctNo)) + //내 정보 페이지 + if("myInfo".equals(pageName)) { - 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"; + //사용자 정보를 가져온다. 회원가입페이지라면 null + NlibLoginVO loginVO = getNlibLoginVO(authentication); + + //이메일과 인증번호 확인 + if(loginVO.getEmailTemp().equals(email) && loginVO.getEmailVrfctNo().equals(emailVrfctNo)) + { + loginVO.setEmailVrfctDd(format.format(time)); + replaceNlibLoginVO(request, loginVO); + return "true"; + }else { + return "false"; + } + + }else + { + //세션에 저장 + String jsessionId = session.getId(); + OAuthUniversalUser oauthUser = SessionConfig.getNewMemberInfo(jsessionId); + + //이메일과 인증번호 확인 + if(oauthUser.getNlibVO().getEmail().equals(email) && oauthUser.getNlibVO().getEmailVrfctNo().equals(emailVrfctNo)) + { + + NlibLoginVO sessionNlibLoginVO = oauthUser.getNlibVO(); + sessionNlibLoginVO.setEmailVrfctDd(format.format(time)); + oauthUser.setNlibVO(sessionNlibLoginVO); + SessionConfig.setNewMemberInfo(jsessionId,oauthUser); + return "true"; + }else { + return "false"; + } } } @@ -578,26 +605,38 @@ public class MemberController extends NlibCommonController{ * @exception Exception */ @RequestMapping(value="/member/mobileCertNum.ajax" , method=RequestMethod.POST) - public @ResponseBody void phoneCertNum(HttpServletResponse response,HttpServletRequest request,HttpSession session) throws Exception{ + public @ResponseBody void phoneCertNum(HttpServletResponse response,Authentication authentication,HttpServletRequest request,HttpSession session) throws Exception{ String mobileNo = request.getParameter("mobileNo"); - + //회원가입페이지와 정보수정페이지의 프로세스 분기를위해 가져옴 + String pageName = request.getParameter("pageName"); //인증번호 생성 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(); + //내 정보 페이지 + if("myInfo".equals(pageName)) + { + NlibLoginVO loginVO = getNlibLoginVO(authentication); + loginVO.setMobileTemp(mobileNo); + loginVO.setMobileVrfctNo(CertNumber); + replaceNlibLoginVO(request, loginVO); + } + else { + 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); + } - vo.setMobileNo(mobileNo); - vo.setMobileVrfctNo(CertNumber); - oauthUser.setNlibVO(vo); - SessionConfig.setNewMemberInfo(jsessionId,oauthUser); //문자발송 솔루션 @@ -609,27 +648,47 @@ public class MemberController extends NlibCommonController{ * @exception Exception */ @RequestMapping(value="/member/mobileCertNumChk.ajax" , method=RequestMethod.POST) - public @ResponseBody String mobileCertNumChk(HttpServletResponse response,HttpServletRequest request,HttpSession session) throws Exception{ + public @ResponseBody String mobileCertNumChk(HttpServletResponse response,Authentication authentication,HttpServletRequest request,HttpSession session) throws Exception{ String mobileNo = request.getParameter("mobileNo"); String mobileVrfctNo = request.getParameter("mobileVrfctNo"); + //회원가입페이지와 정보수정페이지의 프로세스 분기를위해 가져옴 + String pageName = request.getParameter("pageName"); SimpleDateFormat format = new SimpleDateFormat ( "yyyy년 MM월dd일 HH시mm분ss초"); - //세션에 저장 - String jsessionId = session.getId(); - OAuthUniversalUser oauthUser = SessionConfig.getNewMemberInfo(jsessionId); + Date time = new Date(); - //핸드폰번호와 인증번호 확인 - if(oauthUser.getNlibVO().getMobileNo().equals(mobileNo) && oauthUser.getNlibVO().getMobileVrfctNo().equals(mobileVrfctNo)) + //내 정보 페이지 + if("myInfo".equals(pageName)) { - Date time = new Date(); - NlibLoginVO sessionNlibLoginVO = oauthUser.getNlibVO(); - sessionNlibLoginVO.setMobileVrfctDd(format.format(time)); - oauthUser.setNlibVO(sessionNlibLoginVO); - SessionConfig.setNewMemberInfo(jsessionId,oauthUser); - return "true"; + //사용자 정보를 가져온다. 회원가입페이지라면 null + NlibLoginVO loginVO = getNlibLoginVO(authentication); + + //핸드폰번호와 인증번호 확인 + if(loginVO.getMobileTemp().equals(mobileNo) && loginVO.getMobileVrfctNo().equals(mobileVrfctNo)) + { + loginVO.setMobileVrfctDd(format.format(time)); + replaceNlibLoginVO(request, loginVO); + return "true"; + }else { + return "false"; + } }else { - return "false"; + //세션에 저장 + String jsessionId = session.getId(); + OAuthUniversalUser oauthUser = SessionConfig.getNewMemberInfo(jsessionId); + + //핸드폰번호와 인증번호 확인 + if(oauthUser.getNlibVO().getMobileNo().equals(mobileNo) && oauthUser.getNlibVO().getMobileVrfctNo().equals(mobileVrfctNo)) + { + NlibLoginVO sessionNlibLoginVO = oauthUser.getNlibVO(); + sessionNlibLoginVO.setMobileVrfctDd(format.format(time)); + oauthUser.setNlibVO(sessionNlibLoginVO); + SessionConfig.setNewMemberInfo(jsessionId,oauthUser); + return "true"; + }else { + return "false"; + } } } @@ -645,7 +704,7 @@ public class MemberController extends NlibCommonController{ loginVO = loginService.selectLoginUserInfo(loginVO); //이메일,이름 마스킹 - loginVO.setLoginUserId(maskingEmail(loginVO.getLoginUserId())); + loginVO.setEmail(maskingEmail(loginVO.getEmail())); loginVO.setName(maskingName(loginVO.getName())); model.addAttribute("loginVO",loginVO); return "nlib/member/deleteMembershipForm"; @@ -702,6 +761,7 @@ public class MemberController extends NlibCommonController{ */ @RequestMapping(value="/member/initPassword.ajax") public @ResponseBody String initPassword(NlibLoginVO vo,HttpServletResponse response,HttpServletRequest request,ModelMap model) throws Exception{ + vo.encodePrivateInfo(); NlibLoginVO loginVO=userInfoService.selectMyInfo(vo); @@ -714,10 +774,11 @@ public class MemberController extends NlibCommonController{ String encodedText=null; - //ID가 일치하는지 확인 - if(loginVO!=null && loginVO.getLoginUserId().equals(vo.getLoginUserId())) + vo.decodePrivateInfo(); + + if(loginVO!=null) { - String reciver = vo.getLoginUserId(); //받을사람의 이메일입니다.-> naver nate 등등 + String reciver = vo.getEmail(); //받을사람의 이메일입니다.-> naver nate 등등 String subject = "온라인자료대출시스템 비밀번호 초기화 메일입니다."; @@ -889,4 +950,24 @@ public class MemberController extends NlibCommonController{ rttr.addFlashAttribute("email",userInfo.get("email")); return "redirect:/member/insertMemberInfoForm.do"; }*/ + //클라이언트 IP 가져오기 + public static String getRemoteIP(HttpServletRequest request){ + String ip = request.getHeader("X-FORWARDED-FOR"); + + //proxy 환경일 경우 + if (ip == null || ip.length() == 0) { + ip = request.getHeader("Proxy-Client-IP"); + } + + //웹로직 서버일 경우 + if (ip == null || ip.length() == 0) { + ip = request.getHeader("WL-Proxy-Client-IP"); + } + + if (ip == null || ip.length() == 0) { + ip = request.getRemoteAddr() ; + } + + return ip; + } } \ No newline at end of file diff --git a/src/main/java/nlib/user/web/UserInfoController.java b/src/main/java/nlib/user/web/UserInfoController.java index 16121de8..4da9a228 100644 --- a/src/main/java/nlib/user/web/UserInfoController.java +++ b/src/main/java/nlib/user/web/UserInfoController.java @@ -26,7 +26,6 @@ import nlib.security.SecUserDetailsService; import nlib.security.SecUserVO; import nlib.user.service.LoginService; import nlib.user.service.MemberService; -import nlib.user.service.MemberSiteVO; import nlib.user.service.NlibLoginVO; import nlib.user.service.UserInfoService; import nlib.cmm.NlibCommonController; @@ -94,14 +93,10 @@ public class UserInfoController extends NlibCommonController { List snsList = new ArrayList(); - List centerList = new ArrayList(); //sns연동 계정 리스트 snsList = userInfoService.selectSnsSignUpList(loginVO); - //가입된 문화원 리스트 - centerList = userInfoService.selectCenterSignUpList(loginVO); - String encodedText=null; System.out.println(loginVO.getLoginUserId()+vo.getPassword()); encodedText = egovPasswordEncoder.encryptPassword(loginVO.getLoginUserId()+vo.getPassword()); @@ -110,7 +105,6 @@ public class UserInfoController extends NlibCommonController { //암호화된 패스워드 비교 if(loginVO.getPassword().equals(vo.getPassword())) { model.addAttribute("loginVO",loginVO); - model.addAttribute("centerList",centerList); model.addAttribute("snsList",snsList); return "nlib/userInfo/putMyInfo"; }else { @@ -125,8 +119,36 @@ public class UserInfoController extends NlibCommonController { * @return * @exception Exception */ - @RequestMapping(value="/userInfo/updateMyInfo.ajax" , method=RequestMethod.POST) - public @ResponseBody void updateMyInfo(NlibLoginVO vo,HttpServletResponse response,HttpServletRequest request) throws Exception{ + @RequestMapping(value="/userInfo/updateMyInfo.do" , method=RequestMethod.POST) + public String updateMyInfo(NlibLoginVO vo,Authentication authentication,HttpServletResponse response,HttpServletRequest request,ModelMap model) throws Exception{ + + //사용자 정보를 가져온다. + NlibLoginVO loginVO = getNlibLoginVO(authentication); + + //이메일인증 확인 + if(!(vo.getEmail().equals(loginVO.getEmail()))) + { + if(!(vo.getEmailVrfctNo().equals(loginVO.getEmailVrfctNo())) + ||loginVO.getEmailVrfctDd() == null) + { + model.addAttribute("msg","이메일인증이 정상적이지않습니다."); + model.addAttribute("url","${pageContext.request.contextPath}"+"/userInfo/getMyInfo.do"); + return "nlib/cmm/alert"; + } + vo.setEmail(loginVO.getEmailTemp()); + } + //핸드폰인증 확인 + if(!(vo.getMobileNo().equals(loginVO.getMobileNo()))) + { + if(!(vo.getMobileVrfctNo().equals(loginVO.getMobileVrfctNo())) + ||loginVO.getMobileVrfctDd() == null) + { + model.addAttribute("msg","핸드폰인증이 정상적이지않습니다."); + model.addAttribute("url","${pageContext.request.contextPath}"+"/userInfo/getMyInfo.do"); + return "nlib/cmm/alert"; + } + vo.setMobileNo(loginVO.getMobileTemp()); + } String encodedText=null; encodedText = egovPasswordEncoder.encryptPassword(vo.getPassword()); @@ -134,11 +156,12 @@ public class UserInfoController extends NlibCommonController { // 내 정보 수정 userInfoService.updateMyInfo(vo); - NlibLoginVO loginVO=(NlibLoginVO) SecUserDetailsService.loadUserByUsername(vo.getLoginUserId()); + NlibLoginVO sessionVO=(NlibLoginVO) SecUserDetailsService.loadUserByUsername(vo.getLoginUserId()); //세션에 수정정보로 재 주입 - replaceNlibLoginVO(request,loginVO); + replaceNlibLoginVO(request,sessionVO); + return "nlib/userInfo/getMyInfo"; } /** @@ -165,16 +188,4 @@ public class UserInfoController extends NlibCommonController { userInfoService.deleteSnsLink(oAuthVO); } - /** 문화원 가입을 해지한다. - * @param response - * @param request - * @return - * @throws Exception - */ - @RequestMapping(value="/userInfo/deleteCenterLink.ajax") - public @ResponseBody void deleteCenterLink(HttpServletResponse response,HttpServletRequest request) throws Exception{ - MemberSiteVO siteVO = new MemberSiteVO(); - siteVO.setMbSiteId(request.getParameter("mbSiteId")); - userInfoService.deleteCenterLink(siteVO); - } } \ No newline at end of file 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 755bc24a..2ea65e32 100644 --- a/src/main/resources/egovframework/mapper/nlib/user/MemberDAO_SQL.xml +++ b/src/main/resources/egovframework/mapper/nlib/user/MemberDAO_SQL.xml @@ -17,6 +17,8 @@ + + @@ -47,6 +49,8 @@ ,JOIN_DATE ,MOBILE_VRFCT_NO ,MOBILE_VRFCT_DD + ,IP + ,LAST_ACCESS_DD ) VALUES ( @@ -68,7 +72,9 @@ ,'S' ,DATE_FORMAT(CURDATE(), '%Y%m%d') ,#{mobileVrfctNo} - ,STR_TO_DATE(#{mobileVrfctDd},'%Y-%m-%d %H:%i:%S') + ,STR_TO_DATE(#{mobileVrfctDd},'%Y-%m-%d %H:%i:%S') + ,#{ip} + ,NOW() ) @@ -163,40 +169,6 @@ - - - INSERT INTO - MB_SITE - ( - MB_INFO_ID - ,JOIN_TYPE - ,JOIN_AGREE_DD - ,JOIN_COUNCIL_CD - ,MASTER_YN - ) - VALUES - ( - #{mbInfoId} - ,#{joinType} - ,NOW() - ,#{joinCouncilCd} - ,#{masterYn} - ); - - - - - - SELECT @@ -60,14 +51,18 @@ MB_INFO WHERE 1=1 - AND MB_INFO_ID = #{mbInfoId}; + AND MB_INFO_ID = #{mbInfoId} - AND MOBILE_NO = #{mobileNo}; + AND MOBILE_NO = #{mobileNo} - AND LOGIN_USER_ID = #{loginUserId}; + AND LOGIN_USER_ID = #{loginUserId} + + AND EMAIL = #{email} + + LIMIT 1; @@ -81,6 +76,7 @@ ,MOBILE_NO=#{mobileNo} ,ZIP_CODE=#{zipCode} ,ADDRESS=#{address} + ,EMAIL=#{email} ,ADDRESS_DETAIL=#{addressDetail} ,GENDER=#{gender} ,MOD_ID=#{mbInfoId} @@ -89,26 +85,6 @@ AND MB_INFO_ID=#{mbInfoId} - - UPDATE @@ -123,19 +99,5 @@ AND MB_INFO_ID = #{mbInfoId}; - - - UPDATE - MB_SITE - SET - UNLINK_DD=NOW() - WHERE 1=1 - - AND MB_SITE_ID = #{mbSiteId}; - - - AND MB_INFO_ID = #{mbInfoId}; - - \ No newline at end of file diff --git a/src/main/resources/egovframework/spring/context-mail.xml b/src/main/resources/egovframework/spring/context-mail.xml index d60df14e..ec88685b 100644 --- a/src/main/resources/egovframework/spring/context-mail.xml +++ b/src/main/resources/egovframework/spring/context-mail.xml @@ -8,8 +8,8 @@ p:host="smtp.gmail.com" p:port="587" p:protocol="smtp" - p:username="siasia0824@gmail.com" - p:password="whdtjs!234"> + p:username="teachteam02@gmail.com" + p:password="wltlrtkdjq11$$"> true diff --git a/src/main/webapp/WEB-INF/jsp/nlib/member/alreadySignUpPopup.jsp b/src/main/webapp/WEB-INF/jsp/nlib/member/alreadySignUpPopup.jsp index 61c004e8..7d4d9d39 100644 --- a/src/main/webapp/WEB-INF/jsp/nlib/member/alreadySignUpPopup.jsp +++ b/src/main/webapp/WEB-INF/jsp/nlib/member/alreadySignUpPopup.jsp @@ -24,12 +24,12 @@ $(document).ready(function(){ } }); -function selectAccount(mbInfoId,name,loginUserId) +function selectAccount(mbInfoId,name,Email) { $("#alreadySingUpForm").css("display","none"); $("#mbInfoId").val(mbInfoId); $("#selectName").val(name); - $("#selectLoginUserId").val(loginUserId); + $("#selectEmail").val(Email); $("#selectAccountForm").css("display","block"); } function goPrevious() @@ -80,9 +80,9 @@ function accountLink() - ','','');"> + ','','');"> - +
@@ -91,7 +91,7 @@ function accountLink()