diff --git a/src/main/java/nlib/user/service/impl/MemberServiceImpl.java b/src/main/java/nlib/user/service/impl/MemberServiceImpl.java index 9ea6df95..c56b7355 100644 --- a/src/main/java/nlib/user/service/impl/MemberServiceImpl.java +++ b/src/main/java/nlib/user/service/impl/MemberServiceImpl.java @@ -120,6 +120,7 @@ public class MemberServiceImpl implements MemberService * 초기화 비밀번호 랜덤생성 */ public String createInitPwd() { + SecureRandom rand = new SecureRandom(); // 비밀번호 자리수 int pwLength=8; @@ -157,11 +158,11 @@ public class MemberServiceImpl implements MemberService boolean whileFlag = true; do { - int loopNum=(int)(inner_random() * 4); + int loopNum=(int)(rand.nextDouble() * 4); // 대문자생성 if((whileFlag && upperStr.equals("1")) || (!whileFlag && useU == 1 && loopNum == 0)){ do { - upperChar = (char)(inner_random() * 26 + 65); + upperChar = (char)(rand.nextDouble() * 26 + 65); upperStr=String.valueOf(upperChar); } while (exceptionKey.indexOf(upperStr)!=-1); dummylist.add(upperStr); @@ -171,7 +172,7 @@ public class MemberServiceImpl implements MemberService // 소문자생성 if((whileFlag && lowerStr.equals("1")) || (!whileFlag && useL == 1 && loopNum == 1)){ do { - lowerChar = (char)(inner_random() * 26 + 97); + lowerChar = (char)(rand.nextDouble() * 26 + 97); lowerStr=String.valueOf(lowerChar); } while (exceptionKey.indexOf(lowerStr)!=-1); dummylist.add(lowerStr); @@ -180,7 +181,7 @@ public class MemberServiceImpl implements MemberService // 숫자생성(숫자 0,1 제외) if((whileFlag && ranNumberStr.equals("1")) || (!whileFlag && useN == 1 && loopNum == 2)){ - ranNumber=(int)(inner_random() * 8 + 2); + ranNumber=(int)(rand.nextDouble() * 8 + 2); ranNumberStr=String.valueOf(ranNumber); dummylist.add(ranNumberStr); whileNum++; @@ -188,7 +189,7 @@ public class MemberServiceImpl implements MemberService // 특수문자생성 if((whileFlag && ranSkeyStr.equals("1")) || (!whileFlag && useS == 1 && loopNum == 3)){ - startSkey=(int)(inner_random() * (specialKey.length()-1))+1; + startSkey=(int)(Math.random() * (specialKey.length()-1))+1; ranSkey=specialKey.charAt(startSkey); ranSkeyStr=String.valueOf(ranSkey); dummylist.add(ranSkeyStr); @@ -204,12 +205,6 @@ public class MemberServiceImpl implements MemberService return dummyPW; } - public double inner_random() { - long seed= new Date().getTime(); - seed = (seed*9301 +49297) % 233280; - return seed/(233280.0); - } - public NlibLoginVO selectAlreadySignUpId(OAuthUniversalUser oauthUser) throws Exception { //이메일 암호화 oauthUser.setSnsEmail(ariaCrypto.encode(oauthUser.getSnsUserId())); diff --git a/src/main/java/nlib/user/web/MemberController.java b/src/main/java/nlib/user/web/MemberController.java index 9e335044..15a2d2a3 100644 --- a/src/main/java/nlib/user/web/MemberController.java +++ b/src/main/java/nlib/user/web/MemberController.java @@ -23,6 +23,7 @@ import javax.servlet.http.HttpSession; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; +import org.springframework.security.access.annotation.Secured; import org.springframework.security.core.Authentication; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; @@ -40,6 +41,7 @@ import nlib.cmm.NlibCommonController; import nlib.cmm.crypto.AriaCrypto; import nlib.cmm.service.NlibProperty; import nlib.cmm.session.SessionConfig; +import nlib.col.service.RentService; import nlib.info.service.InformService; import nlib.mail.EmailSender; import nlib.mail.service.EmailVO; @@ -95,6 +97,9 @@ public class MemberController extends NlibCommonController{ @Resource(name="userInfoService") private UserInfoService userInfoService; + @Resource(name = "rentService") + private RentService rentService; + @Resource(name="memberService") private MemberService memberService; @@ -736,6 +741,7 @@ public class MemberController extends NlibCommonController{ * 회원탈퇴 폼 * @exception Exception */ + @Secured("ROLE_USER") @RequestMapping(value="/member/deleteMembershipForm.do") public String deleteMembershipForm(HttpServletResponse response,Authentication authentication,HttpServletRequest request,ModelMap model) throws Exception{ //사용자 정보를 가져온다. @@ -763,19 +769,27 @@ public class MemberController extends NlibCommonController{ public @ResponseBody String deleteMembership(Authentication authentication,HttpServletResponse response,HttpServletRequest request,ModelMap model) throws Exception{ //사용자 정보를 가져온다. NlibLoginVO loginVO = getNlibLoginVO(authentication); + String message=""; + if(loginVO == null) { model.addAttribute("msg","잘못된 접근입니다. \\n장시간 대기로 다시 로그인 하신 후, 이용해 주시기 바랍니다."); model.addAttribute("url","${pageContext.request.contextPath}"+"/"); return "nlib/cmm/alert"; } - + + // 대출/방문열람 현황 + Map rentStats = rentService.getRentStats(loginVO.getMbInfoId()); + model.addAttribute("rentStats", rentStats); + + if(Integer.parseInt(rentStats.get("lentCnt")) > 0 || Integer.parseInt(rentStats.get("lentOverCnt")) > 0) { + return message = "nonReturn"; + } + loginVO.setJoinCouncilCd(getCurCouncilCd(request)); loginVO = loginService.selectLoginUserInfo(loginVO); String password = egovPasswordEncoder.encryptPassword(loginVO.getLoginUserId()+request.getParameter("password").trim()); - String message=""; - if(loginVO != null && (loginVO.getPassword().equals(password))) { //회원탈퇴 diff --git a/src/main/webapp/WEB-INF/jsp/nlib/member/deleteMembershipForm.jsp b/src/main/webapp/WEB-INF/jsp/nlib/member/deleteMembershipForm.jsp index 8f1acc58..b2a185e2 100644 --- a/src/main/webapp/WEB-INF/jsp/nlib/member/deleteMembershipForm.jsp +++ b/src/main/webapp/WEB-INF/jsp/nlib/member/deleteMembershipForm.jsp @@ -43,7 +43,11 @@ function deleteMembership() async: false, data : {password:$("#password").val()}, success : function(result){ - if(result=="delete") + if(result=="nonReturn") + { + alert("대출중이거나 연체된 자료가 있어 회원탈퇴처리가 불가능합니다."); + } + else if(result=="delete") { alert("탈퇴처리 되었습니다.감사합니다."); location.href="${pageContext.request.contextPath}/logout";