2024-11-17 02:45 사용자 로그인시 아이디/비번 인증에 핸드폰 인증 추가
@51980d12b326a21cb7ebb0f8fcc3582878b23182
--- src/main/java/itn/let/mjo/msgdata/service/MjonMsgDataService.java
+++ src/main/java/itn/let/mjo/msgdata/service/MjonMsgDataService.java
... | ... | @@ -94,6 +94,7 @@ |
| 94 | 94 |
|
| 95 | 95 |
//시스템 문자발송 로그 조회 |
| 96 | 96 |
public SendLogVO selectSysMsgLog(SendLogVO sendLogVO) throws Exception; |
| 97 |
+ public SendLogVO selectSysMsgLogCheck(SendLogVO sendLogVO) throws Exception; |
|
| 97 | 98 |
|
| 98 | 99 |
//주소록 그룹의 저장 주소 리스트 불러오기 |
| 99 | 100 |
public List<AddrVO> selectMsgAddrListAjax(AddrVO addrVO) throws Exception; |
--- src/main/java/itn/let/mjo/msgdata/service/impl/MjonMsgDataDAO.java
+++ src/main/java/itn/let/mjo/msgdata/service/impl/MjonMsgDataDAO.java
... | ... | @@ -202,6 +202,10 @@ |
| 202 | 202 |
return (SendLogVO) select("mjonMsgDAO.selectSysMsgLog",sendLogVO);
|
| 203 | 203 |
} |
| 204 | 204 |
|
| 205 |
+ public SendLogVO selectSysMsgLogCheck(SendLogVO sendLogVO) throws Exception{
|
|
| 206 |
+ return (SendLogVO) select("mjonMsgDAO.selectSysMsgLogCheck",sendLogVO);
|
|
| 207 |
+ } |
|
| 208 |
+ |
|
| 205 | 209 |
@SuppressWarnings("unchecked")
|
| 206 | 210 |
public List<AddrVO> selectMsgAddrListAjax(AddrVO addrVO) throws Exception{
|
| 207 | 211 |
|
--- src/main/java/itn/let/mjo/msgdata/service/impl/MjonMsgDataServiceImpl.java
+++ src/main/java/itn/let/mjo/msgdata/service/impl/MjonMsgDataServiceImpl.java
... | ... | @@ -2092,6 +2092,11 @@ |
| 2092 | 2092 |
return mjonMsgDataDAO.selectSysMsgLog(sendLogVO); |
| 2093 | 2093 |
} |
| 2094 | 2094 |
|
| 2095 |
+ @Override |
|
| 2096 |
+ public SendLogVO selectSysMsgLogCheck(SendLogVO sendLogVO) throws Exception {
|
|
| 2097 |
+ return mjonMsgDataDAO.selectSysMsgLogCheck(sendLogVO); |
|
| 2098 |
+ } |
|
| 2099 |
+ |
|
| 2095 | 2100 |
public List<AddrVO> selectMsgAddrListAjax(AddrVO addrVO) throws Exception{
|
| 2096 | 2101 |
|
| 2097 | 2102 |
return mjonMsgDataDAO.selectMsgAddrListAjax(addrVO); |
--- src/main/java/itn/let/uat/uia/web/EgovLoginController.java
+++ src/main/java/itn/let/uat/uia/web/EgovLoginController.java
... | ... | @@ -1463,7 +1463,596 @@ |
| 1463 | 1463 |
* @return result - 로그인결과(세션정보) |
| 1464 | 1464 |
* @exception Exception |
| 1465 | 1465 |
*/ |
| 1466 |
- @RequestMapping(value = "/web/user/login/actionSecurityLogin.do") |
|
| 1466 |
+ @RequestMapping(value = "/web/user/login/actionSecurityLogin_bak_00.do") |
|
| 1467 |
+ public String selectActionSecurityLoginWeb_bak(@ModelAttribute("loginVO") LoginVO loginVO, HttpServletResponse response,
|
|
| 1468 |
+ HttpServletRequest request, @RequestParam Map<String, Object> commandMap, ModelMap model, |
|
| 1469 |
+ HttpSession session, RedirectAttributes redirectAttributes) throws Exception {
|
|
| 1470 |
+ |
|
| 1471 |
+ String userIp = EgovClntInfo.getClntIP(request); |
|
| 1472 |
+ HackIpVO hackIpVO = new HackIpVO(); |
|
| 1473 |
+ hackIpVO.setAccessIp(userIp); |
|
| 1474 |
+ hackIpVO.setBlockYn("Y");
|
|
| 1475 |
+ if (null != hackIpService.selectHackIpVO(hackIpVO)) {
|
|
| 1476 |
+ String message = "차단된 아이피입니다. 관리자에게 문의해 주십시요."; |
|
| 1477 |
+ redirectAttributes.addFlashAttribute("message", message);
|
|
| 1478 |
+ return "redirect:/"; |
|
| 1479 |
+ } |
|
| 1480 |
+ |
|
| 1481 |
+ /*ScriptEngineManager engine = new ScriptEngineManager();*/ |
|
| 1482 |
+ |
|
| 1483 |
+ loginVO.setUserSe("USR");
|
|
| 1484 |
+ // 로그인 정보 check |
|
| 1485 |
+ |
|
| 1486 |
+ if (loginVO.getId() == null || loginVO.getPassword() == null) {
|
|
| 1487 |
+ // 회원가입 시 로그인 처리 |
|
| 1488 |
+ LoginVO pLoginVO = (LoginVO) request.getAttribute("pLoginVO");
|
|
| 1489 |
+ if (pLoginVO == null) {
|
|
| 1490 |
+ // RSA 키 생성 |
|
| 1491 |
+ initRsa(request); |
|
| 1492 |
+ /* return "redirect:/web/user/login/login.do"; */ |
|
| 1493 |
+ return "redirect:/"; |
|
| 1494 |
+ } else {
|
|
| 1495 |
+ loginVO.setId(pLoginVO.getId()); |
|
| 1496 |
+ loginVO.setPassword(pLoginVO.getPassword()); |
|
| 1497 |
+ loginVO.setBeforeUrl(pLoginVO.getBeforeUrl()); |
|
| 1498 |
+ loginVO.setMessage(pLoginVO.getMessage()); |
|
| 1499 |
+ } |
|
| 1500 |
+ } |
|
| 1501 |
+ |
|
| 1502 |
+ // 1. 일반 로그인 처리 |
|
| 1503 |
+ PrivateKey privateKey = (PrivateKey) session.getAttribute(EgovLoginController.RSA_WEB_KEY); |
|
| 1504 |
+ if (privateKey == null) {
|
|
| 1505 |
+ initRsa(request); |
|
| 1506 |
+ /*return "web/site/login/EgovLoginGnrlUsr";*/ |
|
| 1507 |
+ String message = "아이디와 비밀번호를 확인해주세요."; |
|
| 1508 |
+ redirectAttributes.addFlashAttribute("message", message);
|
|
| 1509 |
+ System.out.println("======================================================");
|
|
| 1510 |
+ System.out.println("= RSA privateKey is null =");
|
|
| 1511 |
+ System.out.println("======================================================");
|
|
| 1512 |
+ return "redirect:/web/main/mainPage.do"; |
|
| 1513 |
+ } |
|
| 1514 |
+ |
|
| 1515 |
+ LoginVO resultVO; |
|
| 1516 |
+ // 복호화 |
|
| 1517 |
+ String id = ""; |
|
| 1518 |
+ try {
|
|
| 1519 |
+ //아이디 복호화 후 소문자 변환 |
|
| 1520 |
+ id = decryptRsa(privateKey, loginVO.getId()).toLowerCase(); |
|
| 1521 |
+ } catch (Exception e) {
|
|
| 1522 |
+ initRsa(request); |
|
| 1523 |
+ // return "redirect:/web/user/login/login.do"; |
|
| 1524 |
+ if (loginVO.getBeforeUrl().toString().contains("/web/user/login/login.do")) {
|
|
| 1525 |
+ redirectAttributes.addFlashAttribute("fail", true);
|
|
| 1526 |
+ return "redirect:/web/user/login/login.do"; |
|
| 1527 |
+ } |
|
| 1528 |
+ return "redirect:/"; |
|
| 1529 |
+ |
|
| 1530 |
+ } |
|
| 1531 |
+ String password = decryptRsa(privateKey, loginVO.getPassword()); |
|
| 1532 |
+ loginVO.setId(id); |
|
| 1533 |
+ loginVO.setIp(EgovClntInfo.getClntIP(request)); |
|
| 1534 |
+ loginVO.setPassword(password); |
|
| 1535 |
+ loginVO.setUserSe("GNR");
|
|
| 1536 |
+ loginVO.setStatusAll("Y"); // 신청대기중인 사용자까지 조회
|
|
| 1537 |
+ |
|
| 1538 |
+ //기업회원 가입중인지 체크 - 기존 로그인 select는 MBER_STTUS = 'Y'가 하드코딩이라 로그인 전 기업회원 가입중인지 선 체크 |
|
| 1539 |
+ //암호화 2번 방지를 위한 LoginVO 생성 |
|
| 1540 |
+ LoginVO loginCmpChkVO = new LoginVO(); |
|
| 1541 |
+ loginCmpChkVO.setId(id); |
|
| 1542 |
+ loginCmpChkVO.setIp(EgovClntInfo.getClntIP(request)); |
|
| 1543 |
+ loginCmpChkVO.setPassword(password); |
|
| 1544 |
+ loginCmpChkVO.setUserSe("GNR");
|
|
| 1545 |
+ loginCmpChkVO.setStatusAll("Y"); // 신청대기중인 사용자까지 조회
|
|
| 1546 |
+ loginCmpChkVO.setEmplyrSttusCode("A"); // 신청대기중인 사용자까지 조회
|
|
| 1547 |
+ LoginVO cmpHstResultVO = loginService.actionLoginCmpChk(loginCmpChkVO); |
|
| 1548 |
+ if(null != cmpHstResultVO.getId()) {
|
|
| 1549 |
+ //기업회원 정보 마지막 내역 조회 |
|
| 1550 |
+ MberManageVO mberManageVO = new MberManageVO(); |
|
| 1551 |
+ mberManageVO.setMberId(loginVO.getId()); |
|
| 1552 |
+ MberManageVO cmpChangeManageVO = mberManageService.selectCmpUsrHst(mberManageVO); |
|
| 1553 |
+ if(null != cmpChangeManageVO) {
|
|
| 1554 |
+ if("01".equals(cmpChangeManageVO.getHstType())) { //가장 마지막 내역이 기업회원 가입일 시
|
|
| 1555 |
+ if("01".equals(cmpChangeManageVO.getHstSttus()) || "03".equals(cmpChangeManageVO.getHstSttus()) ) { //가장 마지막 기업회원 가입이 신청 또는 반려 상태일 시
|
|
| 1556 |
+ redirectAttributes.addFlashAttribute("mberId", loginVO.getId());
|
|
| 1557 |
+ //addFlashAttribute 일회성으로 인하여 membershipAttachDocBefore.do 이동 후 |
|
| 1558 |
+ //membershipAttachDoc.do로 바로 submit하여 새로고침 시 정보 유지되게 끔 처리 |
|
| 1559 |
+ return "redirect:/web/user/login/membershipAttachDocBefore.do"; |
|
| 1560 |
+ } |
|
| 1561 |
+ } |
|
| 1562 |
+ } |
|
| 1563 |
+ } |
|
| 1564 |
+ //스팸처리 회원인지 mj_spam_member_info 해당 ID의 최근 1개 데이터 조회 |
|
| 1565 |
+ LoginVO loginSmiChkVO = new LoginVO(); |
|
| 1566 |
+ loginSmiChkVO.setId(id); |
|
| 1567 |
+ loginSmiChkVO.setIp(EgovClntInfo.getClntIP(request)); |
|
| 1568 |
+ loginSmiChkVO.setPassword(password); |
|
| 1569 |
+ loginSmiChkVO.setUserSe("GNR");
|
|
| 1570 |
+ loginSmiChkVO.setStatusAll("Y"); // 신청대기중인 사용자까지 조회
|
|
| 1571 |
+ loginSmiChkVO.setEmplyrSttusCode("B"); // 신청대기중인 사용자까지 조회
|
|
| 1572 |
+ LoginVO smiResultVO = loginService.actionLoginCmpChk(loginSmiChkVO); |
|
| 1573 |
+ if(null != smiResultVO.getId()) {
|
|
| 1574 |
+ MberManageVO spamMberManageVO = new MberManageVO(); |
|
| 1575 |
+ spamMberManageVO.setMberId(loginVO.getId()); |
|
| 1576 |
+ MberManageVO spamMemberInfoVO = mberManageService.selectSpamMemberInfo(spamMberManageVO); |
|
| 1577 |
+ if(null != spamMemberInfoVO) {
|
|
| 1578 |
+ redirectAttributes.addFlashAttribute("mberId", loginVO.getId());
|
|
| 1579 |
+ return "redirect:/web/user/login/loginRestrictionUseBefore.do"; |
|
| 1580 |
+ } |
|
| 1581 |
+ } |
|
| 1582 |
+ resultVO = loginService.actionLogin(loginVO); |
|
| 1583 |
+ LoginVO passMissVO = loginService.selectPassMiss(loginVO); |
|
| 1584 |
+ |
|
| 1585 |
+ String alertMessage = ""; |
|
| 1586 |
+ if (!"admin".equals(loginVO.getId())) {
|
|
| 1587 |
+ //아이디가 존재 |
|
| 1588 |
+ if(passMissVO != null) {
|
|
| 1589 |
+ // 로그인 실패 ( |
|
| 1590 |
+ if (null == resultVO.getId() && passMissVO.getPassMiss() < 5 ) {
|
|
| 1591 |
+ loginService.updatePassMissPlus(loginVO); |
|
| 1592 |
+ alertMessage = egovMessageSource.getMessage("fail.common.login");
|
|
| 1593 |
+ |
|
| 1594 |
+ // 로그인 실패시 해킹의심 IP 테이블에 등록_아이디는 있지만 비밀번호가 틀린상황 |
|
| 1595 |
+ /// HackIpVO hackIpVO = new HackIpVO(); |
|
| 1596 |
+ hackIpVO.setHackUserId(loginVO.getId()); |
|
| 1597 |
+ hackIpVO.setAccessIp( EgovClntInfo.getClntIP(request)); |
|
| 1598 |
+ hackIpService.insertHackIp(hackIpVO); |
|
| 1599 |
+ if (loginVO.getBeforeUrl().toString().contains("/web/user/login/login.do")) {
|
|
| 1600 |
+ redirectAttributes.addFlashAttribute("fail", true);
|
|
| 1601 |
+ return "redirect:/web/user/login/login.do"; |
|
| 1602 |
+ } |
|
| 1603 |
+ |
|
| 1604 |
+ return goUserLoginPage(redirectAttributes, loginVO, request, model, alertMessage); |
|
| 1605 |
+ } else {
|
|
| 1606 |
+ if (passMissVO.getPassMiss() >= 5) {
|
|
| 1607 |
+ alertMessage = "패스워드가 5회 이상 틀려 로그인 할수 없습니다. 비밀번호를 재설정해주세요."; |
|
| 1608 |
+ return goUserPassMissPage(redirectAttributes, loginVO, request, model, alertMessage); |
|
| 1609 |
+ } /* |
|
| 1610 |
+ * else if("A".equals(resultVO.getEmplyrSttusCode())){ //신청상태 alertMessage =
|
|
| 1611 |
+ * "신청하신 아이디가 현제 승인대기 상" + "태입니다."; return goUserLoginPage(redirectAttributes, |
|
| 1612 |
+ * request, model, alertMessage); }else |
|
| 1613 |
+ * if("B".equals(resultVO.getEmplyrSttusCode())){ //신청상태 alertMessage =
|
|
| 1614 |
+ * "아이디가 차단상태가 되어 사용할수 없습니다."; return goUserLoginPage(redirectAttributes, |
|
| 1615 |
+ * request, model, alertMessage); } |
|
| 1616 |
+ */ |
|
| 1617 |
+ loginService.updatePassMissReset(loginVO); |
|
| 1618 |
+ } |
|
| 1619 |
+ } |
|
| 1620 |
+ //아이디 미존재 |
|
| 1621 |
+ else {
|
|
| 1622 |
+ alertMessage = egovMessageSource.getMessage("fail.common.login");
|
|
| 1623 |
+ |
|
| 1624 |
+ // 로그인 실패시 해킹의심 IP 테이블에 등록_아이디없고 비밀번호도 틀린상황 |
|
| 1625 |
+ /// HackIpVO hackIpVO = new HackIpVO(); |
|
| 1626 |
+ hackIpVO.setHackUserId(loginVO.getId()); |
|
| 1627 |
+ hackIpVO.setAccessIp(EgovClntInfo.getClntIP(request)); |
|
| 1628 |
+ hackIpService.insertHackIp(hackIpVO); |
|
| 1629 |
+ if (loginVO.getBeforeUrl().toString().contains("/web/user/login/login.do")) {
|
|
| 1630 |
+ redirectAttributes.addFlashAttribute("fail", true);
|
|
| 1631 |
+ return "redirect:/web/user/login/login.do"; |
|
| 1632 |
+ } |
|
| 1633 |
+ |
|
| 1634 |
+ return goUserLoginPage(redirectAttributes, loginVO, request, model, alertMessage); |
|
| 1635 |
+ } |
|
| 1636 |
+ } |
|
| 1637 |
+ |
|
| 1638 |
+ |
|
| 1639 |
+ /* 일시 : 2023.07.26 |
|
| 1640 |
+ * 내용 : 로그인시 휴먼고객 redirect 기능 추가 |
|
| 1641 |
+ * 작업자 : 원영현 과장 |
|
| 1642 |
+ */ |
|
| 1643 |
+ |
|
| 1644 |
+ if(resultVO.getDormantYn().equals("Y") || resultVO.getDormantYn() == "Y") {
|
|
| 1645 |
+ |
|
| 1646 |
+ return "redirect:/web/user/humanPage.do"; |
|
| 1647 |
+ } |
|
| 1648 |
+ |
|
| 1649 |
+ |
|
| 1650 |
+ |
|
| 1651 |
+ |
|
| 1652 |
+ boolean loginPolicyYn = true; |
|
| 1653 |
+ |
|
| 1654 |
+ // 접속IP |
|
| 1655 |
+ // userIp = EgovClntInfo.getClntIP(request); |
|
| 1656 |
+ |
|
| 1657 |
+ // resultVO.siteId 의 각 로그인 ip를 조회함 |
|
| 1658 |
+ if (resultVO != null && resultVO.getId() != null && !resultVO.getId().equals("") && loginPolicyYn) {
|
|
| 1659 |
+ // 세션에다 ip 등록 |
|
| 1660 |
+ resultVO.setIp(userIp); |
|
| 1661 |
+ // 2. spring security 연동 |
|
| 1662 |
+ request.getSession().setAttribute("LoginVO", resultVO);
|
|
| 1663 |
+ UsernamePasswordAuthenticationFilter springSecurity = null; |
|
| 1664 |
+ ApplicationContext act = WebApplicationContextUtils.getRequiredWebApplicationContext(request.getSession().getServletContext()); |
|
| 1665 |
+ Map<String, UsernamePasswordAuthenticationFilter> beans = act.getBeansOfType(UsernamePasswordAuthenticationFilter.class); |
|
| 1666 |
+ |
|
| 1667 |
+ if (beans.size() > 0) {
|
|
| 1668 |
+ springSecurity = (UsernamePasswordAuthenticationFilter) beans.values().toArray()[0]; |
|
| 1669 |
+ springSecurity.setUsernameParameter("egov_security_username");
|
|
| 1670 |
+ springSecurity.setPasswordParameter("egov_security_password");
|
|
| 1671 |
+ springSecurity.setRequiresAuthenticationRequestMatcher(new AntPathRequestMatcher(request.getServletContext().getContextPath() + "/egov_security_login", "POST")); |
|
| 1672 |
+ } else {
|
|
| 1673 |
+ throw new IllegalStateException("No AuthenticationProcessingFilter");
|
|
| 1674 |
+ } |
|
| 1675 |
+ |
|
| 1676 |
+ springSecurity.doFilter(new RequestWrapperForSecurity(request, resultVO.getUserSe() + resultVO.getId(), resultVO.getUniqId()), response, null); |
|
| 1677 |
+ { // 관리자 로그인 log 저장
|
|
| 1678 |
+ String uniqId = ""; |
|
| 1679 |
+ String ip = ""; |
|
| 1680 |
+ |
|
| 1681 |
+ /* Authenticated */ |
|
| 1682 |
+ LoginLog loginLog = new LoginLog(); |
|
| 1683 |
+ Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); |
|
| 1684 |
+ if (isAuthenticated.booleanValue()) {
|
|
| 1685 |
+ LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); |
|
| 1686 |
+ uniqId = user.getUniqId(); |
|
| 1687 |
+ ip = EgovClntInfo.getClntIP(request); |
|
| 1688 |
+ |
|
| 1689 |
+ HttpSession httpSession = request.getSession(true); |
|
| 1690 |
+ {
|
|
| 1691 |
+ List<SiteManagerVO> siteManageList = new ArrayList<SiteManagerVO>(); |
|
| 1692 |
+ SiteManagerVO siteManagerVO = new SiteManagerVO(); |
|
| 1693 |
+ siteManagerVO.setFirstIndex(0); |
|
| 1694 |
+ siteManagerVO.setRecordCountPerPage(100); |
|
| 1695 |
+ siteManageList = egovSiteManagerService.selectSiteManagerList(siteManagerVO); |
|
| 1696 |
+ httpSession.setAttribute("siteManageList", siteManageList);
|
|
| 1697 |
+ httpSession.setAttribute("loginId", user.getId()); // 자동완성 공통으로 쓰기위해
|
|
| 1698 |
+ httpSession.setAttribute("esntlId", user.getPassword());
|
|
| 1699 |
+ |
|
| 1700 |
+ // 최근검색어 조회 후 세션에 넣어줌 |
|
| 1701 |
+ /* |
|
| 1702 |
+ * UserManageVO tempUserManageVO = new UserManageVO(); |
|
| 1703 |
+ * tempUserManageVO.setEmplyrId(user.getId()); tempUserManageVO = |
|
| 1704 |
+ * userManageService.selectRecentSearchWord(tempUserManageVO); |
|
| 1705 |
+ * |
|
| 1706 |
+ * List<String> lisRecentSearch = new ArrayList<String>(); if(null != |
|
| 1707 |
+ * tempUserManageVO){ //ArrayList 로 세션 저장
|
|
| 1708 |
+ * Collections.addAll(lisRecentSearch,tempUserManageVO.getSearchWord().split(","
|
|
| 1709 |
+ * )) ; } httpSession.setAttribute("recentSearch", lisRecentSearch) ;
|
|
| 1710 |
+ */ |
|
| 1711 |
+ } |
|
| 1712 |
+ } |
|
| 1713 |
+ /* |
|
| 1714 |
+ * loginLog.setLoginId(uniqId); loginLog.setLoginIp(ip); |
|
| 1715 |
+ * loginLog.setLoginMthd("I"); // 로그인:I, 로그아웃:O loginLog.setErrOccrrAt("N");
|
|
| 1716 |
+ * loginLog.setErrorCode(""); //로그인은 관리자, PC만 됨 loginLog.setUserAt("U"); //사용자
|
|
| 1717 |
+ * loginLog.setDeviceType("P"); //PC loginLog.setProgrmFileNm("adminLogin");
|
|
| 1718 |
+ * loginLog.setMenuNm("관리자로그인"); loginLogService.logInsertLoginLog(loginLog);
|
|
| 1719 |
+ */ |
|
| 1720 |
+ |
|
| 1721 |
+ loginVO.getId(); |
|
| 1722 |
+ loginVO.getIp(); |
|
| 1723 |
+ loginVO.setMessage("로그인 성공되었습니다.");
|
|
| 1724 |
+ loginVO.setLoginYn("Y");
|
|
| 1725 |
+ loginService.insertActionLoginLog(loginVO); |
|
| 1726 |
+ } |
|
| 1727 |
+ |
|
| 1728 |
+ // 등급제 Start |
|
| 1729 |
+ // 회원별 등급 적용 |
|
| 1730 |
+ MberGrdVO mberGrdVO = new MberGrdVO(); |
|
| 1731 |
+ mberGrdVO.setMberId(loginVO.getId()); |
|
| 1732 |
+ mberGrdVO.setAmt("0");
|
|
| 1733 |
+ mberGrdVO.setMoid("");
|
|
| 1734 |
+ mberGrdService.mberGrdSaveByUserNoHist(mberGrdVO); |
|
| 1735 |
+ // End |
|
| 1736 |
+ |
|
| 1737 |
+ // 이벤트 결제 바로가기 로직 체크 Start |
|
| 1738 |
+ String goEventPay = (String) commandMap.get("goEventPay");
|
|
| 1739 |
+ System.out.println("goEventPay : " + goEventPay);
|
|
| 1740 |
+ if (null != goEventPay && goEventPay.equals("Y")) {
|
|
| 1741 |
+ // 이벤트 결제 바로가기 |
|
| 1742 |
+ if (goEventPay(loginVO) == true) {
|
|
| 1743 |
+ loginVO.setBeforeUrl("/web/event/member/pay/PayView.do");
|
|
| 1744 |
+ } |
|
| 1745 |
+ } |
|
| 1746 |
+ // End |
|
| 1747 |
+ |
|
| 1748 |
+ String beforeUrl = (String) commandMap.get("beforeUrl");
|
|
| 1749 |
+ |
|
| 1750 |
+ // 로그인 전 URL 호출 시 |
|
| 1751 |
+ if (loginVO.getBeforeUrl() != null && !("").equals(loginVO.getBeforeUrl())) {
|
|
| 1752 |
+ request.getSession().setAttribute("usrBeforeUrl", loginVO.getBeforeUrl());
|
|
| 1753 |
+ // 회원가입 시 메세지 처리 |
|
| 1754 |
+ if (loginVO.getMessage() != null && !("").equals(loginVO.getMessage())) {
|
|
| 1755 |
+ request.getSession().setAttribute("registMessage", loginVO.getMessage());
|
|
| 1756 |
+ } |
|
| 1757 |
+ } |
|
| 1758 |
+ |
|
| 1759 |
+ // 개인키 삭제 |
|
| 1760 |
+ // 성공시 웹페이지 분기로 인해 session에 페이지 타입을 넣어준다. |
|
| 1761 |
+ request.getSession().setAttribute("pageType", "web");
|
|
| 1762 |
+ |
|
| 1763 |
+ return "blank"; // 성공 시 페이지.. (redirect 불가) |
|
| 1764 |
+ |
|
| 1765 |
+ // uat/uia/actionMain.do 실제 성공시 무조건 좌측 메소드로 감. |
|
| 1766 |
+ // return "forward:/web/main/mainPage.do"; |
|
| 1767 |
+ } else {
|
|
| 1768 |
+ String message = egovMessageSource.getMessage("fail.common.login");
|
|
| 1769 |
+ redirectAttributes.addFlashAttribute("beforeUrl", loginVO.getBeforeUrl());
|
|
| 1770 |
+ redirectAttributes.addFlashAttribute("message", message);
|
|
| 1771 |
+ return "redirect:/"; |
|
| 1772 |
+ } |
|
| 1773 |
+ } |
|
| 1774 |
+ |
|
| 1775 |
+ /** |
|
| 1776 |
+ * @Method Name : selectUserSttusAjax |
|
| 1777 |
+ * @작성일 : 2024. 3. 27. |
|
| 1778 |
+ * @작성자 : WYH |
|
| 1779 |
+ * @변경이력 : |
|
| 1780 |
+ * @Method 설명 : 회원상태 조회 (Y:일반회원, B:이용정지 회원, N:탈퇴회원) |
|
| 1781 |
+ */ |
|
| 1782 |
+ /* |
|
| 1783 |
+ @RequestMapping(value = { "/web/user/login/actionSecurityLoginAjax.do" })
|
|
| 1784 |
+ public ModelAndView actionSecurityLoginAjax(@ModelAttribute("loginVO") LoginVO loginVO, HttpServletResponse response,
|
|
| 1785 |
+ HttpServletRequest request, @RequestParam Map<String, Object> commandMap, ModelMap model, |
|
| 1786 |
+ HttpSession session, RedirectAttributes redirectAttributes) throws Exception {
|
|
| 1787 |
+ ModelAndView modelAndView = new ModelAndView(); |
|
| 1788 |
+ modelAndView.setViewName("jsonView");
|
|
| 1789 |
+ |
|
| 1790 |
+ String p_id = ""; |
|
| 1791 |
+ String p_pwd = ""; |
|
| 1792 |
+ |
|
| 1793 |
+ try {
|
|
| 1794 |
+ //id, pwd 로그인 하고 결과와 hp 번호를 돌려주면 됨 |
|
| 1795 |
+ p_id = request.getParameter("id");
|
|
| 1796 |
+ p_pwd = request.getParameter("password");
|
|
| 1797 |
+ |
|
| 1798 |
+ |
|
| 1799 |
+ |
|
| 1800 |
+ String userId = mjonMsgVO.getUserId(); |
|
| 1801 |
+ String userSttus = userManageService.selectUserStatusInfoCheck(userId); |
|
| 1802 |
+ |
|
| 1803 |
+ modelAndView.addObject("status", "success");
|
|
| 1804 |
+ modelAndView.addObject("userSttus", userSttus);
|
|
| 1805 |
+ |
|
| 1806 |
+ } catch (Exception e) {
|
|
| 1807 |
+ modelAndView.addObject("status", "fail");
|
|
| 1808 |
+ modelAndView.addObject("msg", "인증에 실패하였습니다.");
|
|
| 1809 |
+ } |
|
| 1810 |
+ |
|
| 1811 |
+ return modelAndView; |
|
| 1812 |
+ } |
|
| 1813 |
+ */ |
|
| 1814 |
+ |
|
| 1815 |
+ @RequestMapping(value = "/web/user/login/actionSecurityLoginBeforeHpAjax.do") |
|
| 1816 |
+ public ModelAndView selectActionSecurityLoginWebBeforeHp(@ModelAttribute("loginVO") LoginVO loginVO, HttpServletResponse response,
|
|
| 1817 |
+ HttpServletRequest request, @RequestParam Map<String, Object> commandMap, ModelMap model, |
|
| 1818 |
+ HttpSession session, RedirectAttributes redirectAttributes) throws Exception {
|
|
| 1819 |
+ |
|
| 1820 |
+ ModelAndView modelAndView = new ModelAndView(); |
|
| 1821 |
+ modelAndView.setViewName("jsonView");
|
|
| 1822 |
+ |
|
| 1823 |
+ String userIp = EgovClntInfo.getClntIP(request); |
|
| 1824 |
+ HackIpVO hackIpVO = new HackIpVO(); |
|
| 1825 |
+ hackIpVO.setAccessIp(userIp); |
|
| 1826 |
+ hackIpVO.setBlockYn("Y");
|
|
| 1827 |
+ if (null != hackIpService.selectHackIpVO(hackIpVO)) {
|
|
| 1828 |
+ String message = "차단된 아이피입니다. 관리자에게 문의해 주십시요."; |
|
| 1829 |
+ |
|
| 1830 |
+ modelAndView.addObject("status", "fail");
|
|
| 1831 |
+ modelAndView.addObject("msg", message);
|
|
| 1832 |
+ return modelAndView; |
|
| 1833 |
+ |
|
| 1834 |
+ } |
|
| 1835 |
+ |
|
| 1836 |
+ /*ScriptEngineManager engine = new ScriptEngineManager();*/ |
|
| 1837 |
+ |
|
| 1838 |
+ loginVO.setUserSe("USR");
|
|
| 1839 |
+ // 로그인 정보 check |
|
| 1840 |
+ |
|
| 1841 |
+ if (loginVO.getId() == null || loginVO.getPassword() == null) {
|
|
| 1842 |
+ // 회원가입 시 로그인 처리 |
|
| 1843 |
+ LoginVO pLoginVO = (LoginVO) request.getAttribute("pLoginVO");
|
|
| 1844 |
+ if (pLoginVO == null) {
|
|
| 1845 |
+ // RSA 키 생성 |
|
| 1846 |
+ initRsa(request); |
|
| 1847 |
+ /* return "redirect:/web/user/login/login.do"; */ |
|
| 1848 |
+ //return "redirect:/"; |
|
| 1849 |
+ |
|
| 1850 |
+ String message = "로그인 실패했습니다."; |
|
| 1851 |
+ |
|
| 1852 |
+ modelAndView.addObject("status", "fail");
|
|
| 1853 |
+ modelAndView.addObject("msg", message);
|
|
| 1854 |
+ return modelAndView; |
|
| 1855 |
+ |
|
| 1856 |
+ } else {
|
|
| 1857 |
+ loginVO.setId(pLoginVO.getId()); |
|
| 1858 |
+ loginVO.setPassword(pLoginVO.getPassword()); |
|
| 1859 |
+ loginVO.setBeforeUrl(pLoginVO.getBeforeUrl()); |
|
| 1860 |
+ loginVO.setMessage(pLoginVO.getMessage()); |
|
| 1861 |
+ } |
|
| 1862 |
+ } |
|
| 1863 |
+ |
|
| 1864 |
+ // 1. 일반 로그인 처리 |
|
| 1865 |
+ PrivateKey privateKey = (PrivateKey) session.getAttribute(EgovLoginController.RSA_WEB_KEY); |
|
| 1866 |
+ if (privateKey == null) {
|
|
| 1867 |
+ initRsa(request); |
|
| 1868 |
+ /*return "web/site/login/EgovLoginGnrlUsr";*/ |
|
| 1869 |
+ String message = "아이디와 비밀번호를 확인해주세요."; |
|
| 1870 |
+ redirectAttributes.addFlashAttribute("message", message);
|
|
| 1871 |
+ System.out.println("======================================================");
|
|
| 1872 |
+ System.out.println("= RSA privateKey is null =");
|
|
| 1873 |
+ System.out.println("======================================================");
|
|
| 1874 |
+ |
|
| 1875 |
+ modelAndView.addObject("status", "fail");
|
|
| 1876 |
+ modelAndView.addObject("msg", message);
|
|
| 1877 |
+ return modelAndView; |
|
| 1878 |
+ |
|
| 1879 |
+ } |
|
| 1880 |
+ |
|
| 1881 |
+ LoginVO resultVO; |
|
| 1882 |
+ // 복호화 |
|
| 1883 |
+ String id = ""; |
|
| 1884 |
+ try {
|
|
| 1885 |
+ //아이디 복호화 후 소문자 변환 |
|
| 1886 |
+ id = decryptRsa(privateKey, loginVO.getId()).toLowerCase(); |
|
| 1887 |
+ } catch (Exception e) {
|
|
| 1888 |
+ initRsa(request); |
|
| 1889 |
+ |
|
| 1890 |
+ String message = "로그인 실패했습니다."; |
|
| 1891 |
+ |
|
| 1892 |
+ modelAndView.addObject("status", "fail");
|
|
| 1893 |
+ modelAndView.addObject("msg", message);
|
|
| 1894 |
+ return modelAndView; |
|
| 1895 |
+ |
|
| 1896 |
+ } |
|
| 1897 |
+ String password = decryptRsa(privateKey, loginVO.getPassword()); |
|
| 1898 |
+ loginVO.setId(id); |
|
| 1899 |
+ loginVO.setIp(EgovClntInfo.getClntIP(request)); |
|
| 1900 |
+ loginVO.setPassword(password); |
|
| 1901 |
+ loginVO.setUserSe("GNR");
|
|
| 1902 |
+ loginVO.setStatusAll("Y"); // 신청대기중인 사용자까지 조회
|
|
| 1903 |
+ |
|
| 1904 |
+ //기업회원 가입중인지 체크 - 기존 로그인 select는 MBER_STTUS = 'Y'가 하드코딩이라 로그인 전 기업회원 가입중인지 선 체크 |
|
| 1905 |
+ //암호화 2번 방지를 위한 LoginVO 생성 |
|
| 1906 |
+ LoginVO loginCmpChkVO = new LoginVO(); |
|
| 1907 |
+ loginCmpChkVO.setId(id); |
|
| 1908 |
+ loginCmpChkVO.setIp(EgovClntInfo.getClntIP(request)); |
|
| 1909 |
+ loginCmpChkVO.setPassword(password); |
|
| 1910 |
+ loginCmpChkVO.setUserSe("GNR");
|
|
| 1911 |
+ loginCmpChkVO.setStatusAll("Y"); // 신청대기중인 사용자까지 조회
|
|
| 1912 |
+ loginCmpChkVO.setEmplyrSttusCode("A"); // 신청대기중인 사용자까지 조회
|
|
| 1913 |
+ LoginVO cmpHstResultVO = loginService.actionLoginCmpChk(loginCmpChkVO); |
|
| 1914 |
+ if(null != cmpHstResultVO.getId()) {
|
|
| 1915 |
+ //기업회원 정보 마지막 내역 조회 |
|
| 1916 |
+ MberManageVO mberManageVO = new MberManageVO(); |
|
| 1917 |
+ mberManageVO.setMberId(loginVO.getId()); |
|
| 1918 |
+ MberManageVO cmpChangeManageVO = mberManageService.selectCmpUsrHst(mberManageVO); |
|
| 1919 |
+ if(null != cmpChangeManageVO) {
|
|
| 1920 |
+ if("01".equals(cmpChangeManageVO.getHstType())) { //가장 마지막 내역이 기업회원 가입일 시
|
|
| 1921 |
+ if("01".equals(cmpChangeManageVO.getHstSttus()) || "03".equals(cmpChangeManageVO.getHstSttus()) ) { //가장 마지막 기업회원 가입이 신청 또는 반려 상태일 시
|
|
| 1922 |
+ |
|
| 1923 |
+ String message = "기업회원 신청 또는 반려상태입니다."; |
|
| 1924 |
+ |
|
| 1925 |
+ modelAndView.addObject("status", "fail");
|
|
| 1926 |
+ modelAndView.addObject("msg", message);
|
|
| 1927 |
+ return modelAndView; |
|
| 1928 |
+ |
|
| 1929 |
+ } |
|
| 1930 |
+ } |
|
| 1931 |
+ } |
|
| 1932 |
+ } |
|
| 1933 |
+ //스팸처리 회원인지 mj_spam_member_info 해당 ID의 최근 1개 데이터 조회 |
|
| 1934 |
+ LoginVO loginSmiChkVO = new LoginVO(); |
|
| 1935 |
+ loginSmiChkVO.setId(id); |
|
| 1936 |
+ loginSmiChkVO.setIp(EgovClntInfo.getClntIP(request)); |
|
| 1937 |
+ loginSmiChkVO.setPassword(password); |
|
| 1938 |
+ loginSmiChkVO.setUserSe("GNR");
|
|
| 1939 |
+ loginSmiChkVO.setStatusAll("Y"); // 신청대기중인 사용자까지 조회
|
|
| 1940 |
+ loginSmiChkVO.setEmplyrSttusCode("B"); // 신청대기중인 사용자까지 조회
|
|
| 1941 |
+ LoginVO smiResultVO = loginService.actionLoginCmpChk(loginSmiChkVO); |
|
| 1942 |
+ if(null != smiResultVO.getId()) {
|
|
| 1943 |
+ MberManageVO spamMberManageVO = new MberManageVO(); |
|
| 1944 |
+ spamMberManageVO.setMberId(loginVO.getId()); |
|
| 1945 |
+ MberManageVO spamMemberInfoVO = mberManageService.selectSpamMemberInfo(spamMberManageVO); |
|
| 1946 |
+ if(null != spamMemberInfoVO) {
|
|
| 1947 |
+ String message = "신청대기중인 상태입니다."; |
|
| 1948 |
+ |
|
| 1949 |
+ modelAndView.addObject("status", "fail");
|
|
| 1950 |
+ modelAndView.addObject("msg", message);
|
|
| 1951 |
+ return modelAndView; |
|
| 1952 |
+ } |
|
| 1953 |
+ } |
|
| 1954 |
+ resultVO = loginService.actionLogin(loginVO); |
|
| 1955 |
+ LoginVO passMissVO = loginService.selectPassMiss(loginVO); |
|
| 1956 |
+ |
|
| 1957 |
+ String alertMessage = ""; |
|
| 1958 |
+ if (!"admin".equals(loginVO.getId())) {
|
|
| 1959 |
+ //아이디가 존재 |
|
| 1960 |
+ if(passMissVO != null) {
|
|
| 1961 |
+ // 로그인 실패 ( |
|
| 1962 |
+ if (null == resultVO.getId() && passMissVO.getPassMiss() < 5 ) {
|
|
| 1963 |
+ loginService.updatePassMissPlus(loginVO); |
|
| 1964 |
+ alertMessage = egovMessageSource.getMessage("fail.common.login");
|
|
| 1965 |
+ |
|
| 1966 |
+ // 로그인 실패시 해킹의심 IP 테이블에 등록_아이디는 있지만 비밀번호가 틀린상황 |
|
| 1967 |
+ /// HackIpVO hackIpVO = new HackIpVO(); |
|
| 1968 |
+ hackIpVO.setHackUserId(loginVO.getId()); |
|
| 1969 |
+ hackIpVO.setAccessIp( EgovClntInfo.getClntIP(request)); |
|
| 1970 |
+ hackIpService.insertHackIp(hackIpVO); |
|
| 1971 |
+ if (loginVO.getBeforeUrl().toString().contains("/web/user/login/login.do")) {
|
|
| 1972 |
+ String message = "로그인 실패했습니다."; |
|
| 1973 |
+ |
|
| 1974 |
+ modelAndView.addObject("status", "fail");
|
|
| 1975 |
+ modelAndView.addObject("msg", message);
|
|
| 1976 |
+ return modelAndView; |
|
| 1977 |
+ } |
|
| 1978 |
+ |
|
| 1979 |
+ String message = "로그인 실패했습니다."; |
|
| 1980 |
+ |
|
| 1981 |
+ modelAndView.addObject("status", "fail");
|
|
| 1982 |
+ modelAndView.addObject("msg", message);
|
|
| 1983 |
+ return modelAndView; |
|
| 1984 |
+ |
|
| 1985 |
+ } else {
|
|
| 1986 |
+ if (passMissVO.getPassMiss() >= 5) {
|
|
| 1987 |
+ //alertMessage = "패스워드가 5회 이상 틀려 로그인 할수 없습니다. 비밀번호를 재설정해주세요."; |
|
| 1988 |
+ String message = "패스워드가 5회 이상 틀려 로그인 할수 없습니다. 비밀번호를 재설정해주세요."; |
|
| 1989 |
+ |
|
| 1990 |
+ modelAndView.addObject("status", "fail");
|
|
| 1991 |
+ modelAndView.addObject("msg", message);
|
|
| 1992 |
+ return modelAndView; |
|
| 1993 |
+ } /* |
|
| 1994 |
+ * else if("A".equals(resultVO.getEmplyrSttusCode())){ //신청상태 alertMessage =
|
|
| 1995 |
+ * "신청하신 아이디가 현제 승인대기 상" + "태입니다."; return goUserLoginPage(redirectAttributes, |
|
| 1996 |
+ * request, model, alertMessage); }else |
|
| 1997 |
+ * if("B".equals(resultVO.getEmplyrSttusCode())){ //신청상태 alertMessage =
|
|
| 1998 |
+ * "아이디가 차단상태가 되어 사용할수 없습니다."; return goUserLoginPage(redirectAttributes, |
|
| 1999 |
+ * request, model, alertMessage); } |
|
| 2000 |
+ */ |
|
| 2001 |
+ loginService.updatePassMissReset(loginVO); |
|
| 2002 |
+ } |
|
| 2003 |
+ } |
|
| 2004 |
+ //아이디 미존재 |
|
| 2005 |
+ else {
|
|
| 2006 |
+ alertMessage = egovMessageSource.getMessage("fail.common.login");
|
|
| 2007 |
+ |
|
| 2008 |
+ // 로그인 실패시 해킹의심 IP 테이블에 등록_아이디없고 비밀번호도 틀린상황 |
|
| 2009 |
+ /// HackIpVO hackIpVO = new HackIpVO(); |
|
| 2010 |
+ hackIpVO.setHackUserId(loginVO.getId()); |
|
| 2011 |
+ hackIpVO.setAccessIp(EgovClntInfo.getClntIP(request)); |
|
| 2012 |
+ hackIpService.insertHackIp(hackIpVO); |
|
| 2013 |
+ if (loginVO.getBeforeUrl().toString().contains("/web/user/login/login.do")) {
|
|
| 2014 |
+ String message = "로그인 실패했습니다."; |
|
| 2015 |
+ |
|
| 2016 |
+ modelAndView.addObject("status", "fail");
|
|
| 2017 |
+ modelAndView.addObject("msg", message);
|
|
| 2018 |
+ return modelAndView; |
|
| 2019 |
+ } |
|
| 2020 |
+ |
|
| 2021 |
+ String message = "로그인 실패했습니다."; |
|
| 2022 |
+ |
|
| 2023 |
+ modelAndView.addObject("status", "fail");
|
|
| 2024 |
+ modelAndView.addObject("msg", message);
|
|
| 2025 |
+ return modelAndView; |
|
| 2026 |
+ } |
|
| 2027 |
+ } |
|
| 2028 |
+ |
|
| 2029 |
+ |
|
| 2030 |
+ /* 일시 : 2023.07.26 |
|
| 2031 |
+ * 내용 : 로그인시 휴먼고객 redirect 기능 추가 |
|
| 2032 |
+ * 작업자 : 원영현 과장 |
|
| 2033 |
+ */ |
|
| 2034 |
+ |
|
| 2035 |
+ if(resultVO.getDormantYn().equals("Y") || resultVO.getDormantYn() == "Y") {
|
|
| 2036 |
+ |
|
| 2037 |
+ String message = "휴면계정입니다."; |
|
| 2038 |
+ |
|
| 2039 |
+ modelAndView.addObject("status", "fail");
|
|
| 2040 |
+ modelAndView.addObject("msg", message);
|
|
| 2041 |
+ return modelAndView; |
|
| 2042 |
+ } |
|
| 2043 |
+ |
|
| 2044 |
+ String message = "로그인 성공했습니다."; |
|
| 2045 |
+ |
|
| 2046 |
+ modelAndView.addObject("status", "success");
|
|
| 2047 |
+ modelAndView.addObject("msg", message);
|
|
| 2048 |
+ modelAndView.addObject("data", resultVO);
|
|
| 2049 |
+ |
|
| 2050 |
+ return modelAndView; |
|
| 2051 |
+ |
|
| 2052 |
+ |
|
| 2053 |
+ } |
|
| 2054 |
+ |
|
| 2055 |
+ @RequestMapping(value = "/web/user/login/actionSecurityLogin_ori_00.do") |
|
| 1467 | 2056 |
public String selectActionSecurityLoginWeb(@ModelAttribute("loginVO") LoginVO loginVO, HttpServletResponse response,
|
| 1468 | 2057 |
HttpServletRequest request, @RequestParam Map<String, Object> commandMap, ModelMap model, |
| 1469 | 2058 |
HttpSession session, RedirectAttributes redirectAttributes) throws Exception {
|
... | ... | @@ -1772,6 +2361,340 @@ |
| 1772 | 2361 |
} |
| 1773 | 2362 |
} |
| 1774 | 2363 |
|
| 2364 |
+ |
|
| 2365 |
+ |
|
| 2366 |
+ @RequestMapping(value = "/web/user/login/actionSecurityLoginAfterHp.do") |
|
| 2367 |
+ public String selectActionSecurityLoginWebAfterHp(@ModelAttribute("loginVO") LoginVO loginVO, HttpServletResponse response,
|
|
| 2368 |
+ HttpServletRequest request, @RequestParam Map<String, Object> commandMap, ModelMap model, |
|
| 2369 |
+ HttpSession session, RedirectAttributes redirectAttributes) throws Exception {
|
|
| 2370 |
+ |
|
| 2371 |
+ String userIp = EgovClntInfo.getClntIP(request); |
|
| 2372 |
+ HackIpVO hackIpVO = new HackIpVO(); |
|
| 2373 |
+ hackIpVO.setAccessIp(userIp); |
|
| 2374 |
+ hackIpVO.setBlockYn("Y");
|
|
| 2375 |
+ if (null != hackIpService.selectHackIpVO(hackIpVO)) {
|
|
| 2376 |
+ String message = "차단된 아이피입니다. 관리자에게 문의해 주십시요."; |
|
| 2377 |
+ redirectAttributes.addFlashAttribute("message", message);
|
|
| 2378 |
+ return "redirect:/"; |
|
| 2379 |
+ } |
|
| 2380 |
+ |
|
| 2381 |
+ /*ScriptEngineManager engine = new ScriptEngineManager();*/ |
|
| 2382 |
+ |
|
| 2383 |
+ loginVO.setUserSe("USR");
|
|
| 2384 |
+ // 로그인 정보 check |
|
| 2385 |
+ |
|
| 2386 |
+ if (loginVO.getId() == null || loginVO.getPassword() == null) {
|
|
| 2387 |
+ // 회원가입 시 로그인 처리 |
|
| 2388 |
+ LoginVO pLoginVO = (LoginVO) request.getAttribute("pLoginVO");
|
|
| 2389 |
+ if (pLoginVO == null) {
|
|
| 2390 |
+ // RSA 키 생성 |
|
| 2391 |
+ initRsa(request); |
|
| 2392 |
+ /* return "redirect:/web/user/login/login.do"; */ |
|
| 2393 |
+ return "redirect:/"; |
|
| 2394 |
+ } else {
|
|
| 2395 |
+ loginVO.setId(pLoginVO.getId()); |
|
| 2396 |
+ loginVO.setPassword(pLoginVO.getPassword()); |
|
| 2397 |
+ loginVO.setBeforeUrl(pLoginVO.getBeforeUrl()); |
|
| 2398 |
+ loginVO.setMessage(pLoginVO.getMessage()); |
|
| 2399 |
+ } |
|
| 2400 |
+ } |
|
| 2401 |
+ |
|
| 2402 |
+ // 1. 일반 로그인 처리 |
|
| 2403 |
+ PrivateKey privateKey = (PrivateKey) session.getAttribute(EgovLoginController.RSA_WEB_KEY); |
|
| 2404 |
+ if (privateKey == null) {
|
|
| 2405 |
+ initRsa(request); |
|
| 2406 |
+ /*return "web/site/login/EgovLoginGnrlUsr";*/ |
|
| 2407 |
+ String message = "아이디와 비밀번호를 확인해주세요."; |
|
| 2408 |
+ redirectAttributes.addFlashAttribute("message", message);
|
|
| 2409 |
+ System.out.println("======================================================");
|
|
| 2410 |
+ System.out.println("= RSA privateKey is null =");
|
|
| 2411 |
+ System.out.println("======================================================");
|
|
| 2412 |
+ return "redirect:/web/main/mainPage.do"; |
|
| 2413 |
+ } |
|
| 2414 |
+ |
|
| 2415 |
+ LoginVO resultVO; |
|
| 2416 |
+ // 복호화 |
|
| 2417 |
+ String id = ""; |
|
| 2418 |
+ try {
|
|
| 2419 |
+ //아이디 복호화 후 소문자 변환 |
|
| 2420 |
+ id = decryptRsa(privateKey, loginVO.getId()).toLowerCase(); |
|
| 2421 |
+ } catch (Exception e) {
|
|
| 2422 |
+ initRsa(request); |
|
| 2423 |
+ // return "redirect:/web/user/login/login.do"; |
|
| 2424 |
+ if (loginVO.getBeforeUrl().toString().contains("/web/user/login/login.do")) {
|
|
| 2425 |
+ redirectAttributes.addFlashAttribute("fail", true);
|
|
| 2426 |
+ return "redirect:/web/user/login/login.do"; |
|
| 2427 |
+ } |
|
| 2428 |
+ return "redirect:/"; |
|
| 2429 |
+ |
|
| 2430 |
+ } |
|
| 2431 |
+ |
|
| 2432 |
+ |
|
| 2433 |
+ //핸드폰 인증번호 확인 |
|
| 2434 |
+ String s_hp = request.getParameter("hp");
|
|
| 2435 |
+ String s_num = request.getParameter("num");
|
|
| 2436 |
+ |
|
| 2437 |
+ System.out.println(s_hp); |
|
| 2438 |
+ System.out.println(s_num); |
|
| 2439 |
+ System.out.println("s_num==============");
|
|
| 2440 |
+ |
|
| 2441 |
+ SendLogVO sendLogVO = new SendLogVO(); |
|
| 2442 |
+ sendLogVO.setSendId(id); |
|
| 2443 |
+ sendLogVO.setReceive(s_hp); |
|
| 2444 |
+ sendLogVO.setCheckNo(s_num); |
|
| 2445 |
+ |
|
| 2446 |
+ sendLogVO = mjonMsgDataService.selectSysMsgLogCheck(sendLogVO); |
|
| 2447 |
+ |
|
| 2448 |
+ if (sendLogVO==null) {
|
|
| 2449 |
+ redirectAttributes.addFlashAttribute("fail2", true);
|
|
| 2450 |
+ return "redirect:/web/user/login/login.do"; |
|
| 2451 |
+ } |
|
| 2452 |
+ |
|
| 2453 |
+ |
|
| 2454 |
+ String password = decryptRsa(privateKey, loginVO.getPassword()); |
|
| 2455 |
+ loginVO.setId(id); |
|
| 2456 |
+ loginVO.setIp(EgovClntInfo.getClntIP(request)); |
|
| 2457 |
+ loginVO.setPassword(password); |
|
| 2458 |
+ loginVO.setUserSe("GNR");
|
|
| 2459 |
+ loginVO.setStatusAll("Y"); // 신청대기중인 사용자까지 조회
|
|
| 2460 |
+ |
|
| 2461 |
+ //기업회원 가입중인지 체크 - 기존 로그인 select는 MBER_STTUS = 'Y'가 하드코딩이라 로그인 전 기업회원 가입중인지 선 체크 |
|
| 2462 |
+ //암호화 2번 방지를 위한 LoginVO 생성 |
|
| 2463 |
+ LoginVO loginCmpChkVO = new LoginVO(); |
|
| 2464 |
+ loginCmpChkVO.setId(id); |
|
| 2465 |
+ loginCmpChkVO.setIp(EgovClntInfo.getClntIP(request)); |
|
| 2466 |
+ loginCmpChkVO.setPassword(password); |
|
| 2467 |
+ loginCmpChkVO.setUserSe("GNR");
|
|
| 2468 |
+ loginCmpChkVO.setStatusAll("Y"); // 신청대기중인 사용자까지 조회
|
|
| 2469 |
+ loginCmpChkVO.setEmplyrSttusCode("A"); // 신청대기중인 사용자까지 조회
|
|
| 2470 |
+ LoginVO cmpHstResultVO = loginService.actionLoginCmpChk(loginCmpChkVO); |
|
| 2471 |
+ if(null != cmpHstResultVO.getId()) {
|
|
| 2472 |
+ //기업회원 정보 마지막 내역 조회 |
|
| 2473 |
+ MberManageVO mberManageVO = new MberManageVO(); |
|
| 2474 |
+ mberManageVO.setMberId(loginVO.getId()); |
|
| 2475 |
+ MberManageVO cmpChangeManageVO = mberManageService.selectCmpUsrHst(mberManageVO); |
|
| 2476 |
+ if(null != cmpChangeManageVO) {
|
|
| 2477 |
+ if("01".equals(cmpChangeManageVO.getHstType())) { //가장 마지막 내역이 기업회원 가입일 시
|
|
| 2478 |
+ if("01".equals(cmpChangeManageVO.getHstSttus()) || "03".equals(cmpChangeManageVO.getHstSttus()) ) { //가장 마지막 기업회원 가입이 신청 또는 반려 상태일 시
|
|
| 2479 |
+ redirectAttributes.addFlashAttribute("mberId", loginVO.getId());
|
|
| 2480 |
+ //addFlashAttribute 일회성으로 인하여 membershipAttachDocBefore.do 이동 후 |
|
| 2481 |
+ //membershipAttachDoc.do로 바로 submit하여 새로고침 시 정보 유지되게 끔 처리 |
|
| 2482 |
+ return "redirect:/web/user/login/membershipAttachDocBefore.do"; |
|
| 2483 |
+ } |
|
| 2484 |
+ } |
|
| 2485 |
+ } |
|
| 2486 |
+ } |
|
| 2487 |
+ //스팸처리 회원인지 mj_spam_member_info 해당 ID의 최근 1개 데이터 조회 |
|
| 2488 |
+ LoginVO loginSmiChkVO = new LoginVO(); |
|
| 2489 |
+ loginSmiChkVO.setId(id); |
|
| 2490 |
+ loginSmiChkVO.setIp(EgovClntInfo.getClntIP(request)); |
|
| 2491 |
+ loginSmiChkVO.setPassword(password); |
|
| 2492 |
+ loginSmiChkVO.setUserSe("GNR");
|
|
| 2493 |
+ loginSmiChkVO.setStatusAll("Y"); // 신청대기중인 사용자까지 조회
|
|
| 2494 |
+ loginSmiChkVO.setEmplyrSttusCode("B"); // 신청대기중인 사용자까지 조회
|
|
| 2495 |
+ LoginVO smiResultVO = loginService.actionLoginCmpChk(loginSmiChkVO); |
|
| 2496 |
+ if(null != smiResultVO.getId()) {
|
|
| 2497 |
+ MberManageVO spamMberManageVO = new MberManageVO(); |
|
| 2498 |
+ spamMberManageVO.setMberId(loginVO.getId()); |
|
| 2499 |
+ MberManageVO spamMemberInfoVO = mberManageService.selectSpamMemberInfo(spamMberManageVO); |
|
| 2500 |
+ if(null != spamMemberInfoVO) {
|
|
| 2501 |
+ redirectAttributes.addFlashAttribute("mberId", loginVO.getId());
|
|
| 2502 |
+ return "redirect:/web/user/login/loginRestrictionUseBefore.do"; |
|
| 2503 |
+ } |
|
| 2504 |
+ } |
|
| 2505 |
+ resultVO = loginService.actionLogin(loginVO); |
|
| 2506 |
+ LoginVO passMissVO = loginService.selectPassMiss(loginVO); |
|
| 2507 |
+ |
|
| 2508 |
+ String alertMessage = ""; |
|
| 2509 |
+ if (!"admin".equals(loginVO.getId())) {
|
|
| 2510 |
+ //아이디가 존재 |
|
| 2511 |
+ if(passMissVO != null) {
|
|
| 2512 |
+ // 로그인 실패 ( |
|
| 2513 |
+ if (null == resultVO.getId() && passMissVO.getPassMiss() < 5 ) {
|
|
| 2514 |
+ loginService.updatePassMissPlus(loginVO); |
|
| 2515 |
+ alertMessage = egovMessageSource.getMessage("fail.common.login");
|
|
| 2516 |
+ |
|
| 2517 |
+ // 로그인 실패시 해킹의심 IP 테이블에 등록_아이디는 있지만 비밀번호가 틀린상황 |
|
| 2518 |
+ /// HackIpVO hackIpVO = new HackIpVO(); |
|
| 2519 |
+ hackIpVO.setHackUserId(loginVO.getId()); |
|
| 2520 |
+ hackIpVO.setAccessIp( EgovClntInfo.getClntIP(request)); |
|
| 2521 |
+ hackIpService.insertHackIp(hackIpVO); |
|
| 2522 |
+ if (loginVO.getBeforeUrl().toString().contains("/web/user/login/login.do")) {
|
|
| 2523 |
+ redirectAttributes.addFlashAttribute("fail", true);
|
|
| 2524 |
+ return "redirect:/web/user/login/login.do"; |
|
| 2525 |
+ } |
|
| 2526 |
+ |
|
| 2527 |
+ return goUserLoginPage(redirectAttributes, loginVO, request, model, alertMessage); |
|
| 2528 |
+ } else {
|
|
| 2529 |
+ if (passMissVO.getPassMiss() >= 5) {
|
|
| 2530 |
+ alertMessage = "패스워드가 5회 이상 틀려 로그인 할수 없습니다. 비밀번호를 재설정해주세요."; |
|
| 2531 |
+ return goUserPassMissPage(redirectAttributes, loginVO, request, model, alertMessage); |
|
| 2532 |
+ } /* |
|
| 2533 |
+ * else if("A".equals(resultVO.getEmplyrSttusCode())){ //신청상태 alertMessage =
|
|
| 2534 |
+ * "신청하신 아이디가 현제 승인대기 상" + "태입니다."; return goUserLoginPage(redirectAttributes, |
|
| 2535 |
+ * request, model, alertMessage); }else |
|
| 2536 |
+ * if("B".equals(resultVO.getEmplyrSttusCode())){ //신청상태 alertMessage =
|
|
| 2537 |
+ * "아이디가 차단상태가 되어 사용할수 없습니다."; return goUserLoginPage(redirectAttributes, |
|
| 2538 |
+ * request, model, alertMessage); } |
|
| 2539 |
+ */ |
|
| 2540 |
+ loginService.updatePassMissReset(loginVO); |
|
| 2541 |
+ } |
|
| 2542 |
+ } |
|
| 2543 |
+ //아이디 미존재 |
|
| 2544 |
+ else {
|
|
| 2545 |
+ alertMessage = egovMessageSource.getMessage("fail.common.login");
|
|
| 2546 |
+ |
|
| 2547 |
+ // 로그인 실패시 해킹의심 IP 테이블에 등록_아이디없고 비밀번호도 틀린상황 |
|
| 2548 |
+ /// HackIpVO hackIpVO = new HackIpVO(); |
|
| 2549 |
+ hackIpVO.setHackUserId(loginVO.getId()); |
|
| 2550 |
+ hackIpVO.setAccessIp(EgovClntInfo.getClntIP(request)); |
|
| 2551 |
+ hackIpService.insertHackIp(hackIpVO); |
|
| 2552 |
+ if (loginVO.getBeforeUrl().toString().contains("/web/user/login/login.do")) {
|
|
| 2553 |
+ redirectAttributes.addFlashAttribute("fail", true);
|
|
| 2554 |
+ return "redirect:/web/user/login/login.do"; |
|
| 2555 |
+ } |
|
| 2556 |
+ |
|
| 2557 |
+ return goUserLoginPage(redirectAttributes, loginVO, request, model, alertMessage); |
|
| 2558 |
+ } |
|
| 2559 |
+ } |
|
| 2560 |
+ |
|
| 2561 |
+ |
|
| 2562 |
+ /* 일시 : 2023.07.26 |
|
| 2563 |
+ * 내용 : 로그인시 휴먼고객 redirect 기능 추가 |
|
| 2564 |
+ * 작업자 : 원영현 과장 |
|
| 2565 |
+ */ |
|
| 2566 |
+ |
|
| 2567 |
+ if(resultVO.getDormantYn().equals("Y") || resultVO.getDormantYn() == "Y") {
|
|
| 2568 |
+ |
|
| 2569 |
+ return "redirect:/web/user/humanPage.do"; |
|
| 2570 |
+ } |
|
| 2571 |
+ |
|
| 2572 |
+ |
|
| 2573 |
+ |
|
| 2574 |
+ |
|
| 2575 |
+ boolean loginPolicyYn = true; |
|
| 2576 |
+ |
|
| 2577 |
+ // 접속IP |
|
| 2578 |
+ // userIp = EgovClntInfo.getClntIP(request); |
|
| 2579 |
+ |
|
| 2580 |
+ // resultVO.siteId 의 각 로그인 ip를 조회함 |
|
| 2581 |
+ if (resultVO != null && resultVO.getId() != null && !resultVO.getId().equals("") && loginPolicyYn) {
|
|
| 2582 |
+ // 세션에다 ip 등록 |
|
| 2583 |
+ resultVO.setIp(userIp); |
|
| 2584 |
+ // 2. spring security 연동 |
|
| 2585 |
+ request.getSession().setAttribute("LoginVO", resultVO);
|
|
| 2586 |
+ UsernamePasswordAuthenticationFilter springSecurity = null; |
|
| 2587 |
+ ApplicationContext act = WebApplicationContextUtils.getRequiredWebApplicationContext(request.getSession().getServletContext()); |
|
| 2588 |
+ Map<String, UsernamePasswordAuthenticationFilter> beans = act.getBeansOfType(UsernamePasswordAuthenticationFilter.class); |
|
| 2589 |
+ |
|
| 2590 |
+ if (beans.size() > 0) {
|
|
| 2591 |
+ springSecurity = (UsernamePasswordAuthenticationFilter) beans.values().toArray()[0]; |
|
| 2592 |
+ springSecurity.setUsernameParameter("egov_security_username");
|
|
| 2593 |
+ springSecurity.setPasswordParameter("egov_security_password");
|
|
| 2594 |
+ springSecurity.setRequiresAuthenticationRequestMatcher(new AntPathRequestMatcher(request.getServletContext().getContextPath() + "/egov_security_login", "POST")); |
|
| 2595 |
+ } else {
|
|
| 2596 |
+ throw new IllegalStateException("No AuthenticationProcessingFilter");
|
|
| 2597 |
+ } |
|
| 2598 |
+ |
|
| 2599 |
+ springSecurity.doFilter(new RequestWrapperForSecurity(request, resultVO.getUserSe() + resultVO.getId(), resultVO.getUniqId()), response, null); |
|
| 2600 |
+ { // 관리자 로그인 log 저장
|
|
| 2601 |
+ String uniqId = ""; |
|
| 2602 |
+ String ip = ""; |
|
| 2603 |
+ |
|
| 2604 |
+ /* Authenticated */ |
|
| 2605 |
+ LoginLog loginLog = new LoginLog(); |
|
| 2606 |
+ Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated(); |
|
| 2607 |
+ if (isAuthenticated.booleanValue()) {
|
|
| 2608 |
+ LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); |
|
| 2609 |
+ uniqId = user.getUniqId(); |
|
| 2610 |
+ ip = EgovClntInfo.getClntIP(request); |
|
| 2611 |
+ |
|
| 2612 |
+ HttpSession httpSession = request.getSession(true); |
|
| 2613 |
+ {
|
|
| 2614 |
+ List<SiteManagerVO> siteManageList = new ArrayList<SiteManagerVO>(); |
|
| 2615 |
+ SiteManagerVO siteManagerVO = new SiteManagerVO(); |
|
| 2616 |
+ siteManagerVO.setFirstIndex(0); |
|
| 2617 |
+ siteManagerVO.setRecordCountPerPage(100); |
|
| 2618 |
+ siteManageList = egovSiteManagerService.selectSiteManagerList(siteManagerVO); |
|
| 2619 |
+ httpSession.setAttribute("siteManageList", siteManageList);
|
|
| 2620 |
+ httpSession.setAttribute("loginId", user.getId()); // 자동완성 공통으로 쓰기위해
|
|
| 2621 |
+ httpSession.setAttribute("esntlId", user.getPassword());
|
|
| 2622 |
+ |
|
| 2623 |
+ // 최근검색어 조회 후 세션에 넣어줌 |
|
| 2624 |
+ /* |
|
| 2625 |
+ * UserManageVO tempUserManageVO = new UserManageVO(); |
|
| 2626 |
+ * tempUserManageVO.setEmplyrId(user.getId()); tempUserManageVO = |
|
| 2627 |
+ * userManageService.selectRecentSearchWord(tempUserManageVO); |
|
| 2628 |
+ * |
|
| 2629 |
+ * List<String> lisRecentSearch = new ArrayList<String>(); if(null != |
|
| 2630 |
+ * tempUserManageVO){ //ArrayList 로 세션 저장
|
|
| 2631 |
+ * Collections.addAll(lisRecentSearch,tempUserManageVO.getSearchWord().split(","
|
|
| 2632 |
+ * )) ; } httpSession.setAttribute("recentSearch", lisRecentSearch) ;
|
|
| 2633 |
+ */ |
|
| 2634 |
+ } |
|
| 2635 |
+ } |
|
| 2636 |
+ /* |
|
| 2637 |
+ * loginLog.setLoginId(uniqId); loginLog.setLoginIp(ip); |
|
| 2638 |
+ * loginLog.setLoginMthd("I"); // 로그인:I, 로그아웃:O loginLog.setErrOccrrAt("N");
|
|
| 2639 |
+ * loginLog.setErrorCode(""); //로그인은 관리자, PC만 됨 loginLog.setUserAt("U"); //사용자
|
|
| 2640 |
+ * loginLog.setDeviceType("P"); //PC loginLog.setProgrmFileNm("adminLogin");
|
|
| 2641 |
+ * loginLog.setMenuNm("관리자로그인"); loginLogService.logInsertLoginLog(loginLog);
|
|
| 2642 |
+ */ |
|
| 2643 |
+ |
|
| 2644 |
+ loginVO.getId(); |
|
| 2645 |
+ loginVO.getIp(); |
|
| 2646 |
+ loginVO.setMessage("로그인 성공되었습니다.");
|
|
| 2647 |
+ loginVO.setLoginYn("Y");
|
|
| 2648 |
+ loginService.insertActionLoginLog(loginVO); |
|
| 2649 |
+ } |
|
| 2650 |
+ |
|
| 2651 |
+ // 등급제 Start |
|
| 2652 |
+ // 회원별 등급 적용 |
|
| 2653 |
+ MberGrdVO mberGrdVO = new MberGrdVO(); |
|
| 2654 |
+ mberGrdVO.setMberId(loginVO.getId()); |
|
| 2655 |
+ mberGrdVO.setAmt("0");
|
|
| 2656 |
+ mberGrdVO.setMoid("");
|
|
| 2657 |
+ mberGrdService.mberGrdSaveByUserNoHist(mberGrdVO); |
|
| 2658 |
+ // End |
|
| 2659 |
+ |
|
| 2660 |
+ // 이벤트 결제 바로가기 로직 체크 Start |
|
| 2661 |
+ String goEventPay = (String) commandMap.get("goEventPay");
|
|
| 2662 |
+ System.out.println("goEventPay : " + goEventPay);
|
|
| 2663 |
+ if (null != goEventPay && goEventPay.equals("Y")) {
|
|
| 2664 |
+ // 이벤트 결제 바로가기 |
|
| 2665 |
+ if (goEventPay(loginVO) == true) {
|
|
| 2666 |
+ loginVO.setBeforeUrl("/web/event/member/pay/PayView.do");
|
|
| 2667 |
+ } |
|
| 2668 |
+ } |
|
| 2669 |
+ // End |
|
| 2670 |
+ |
|
| 2671 |
+ String beforeUrl = (String) commandMap.get("beforeUrl");
|
|
| 2672 |
+ |
|
| 2673 |
+ // 로그인 전 URL 호출 시 |
|
| 2674 |
+ if (loginVO.getBeforeUrl() != null && !("").equals(loginVO.getBeforeUrl())) {
|
|
| 2675 |
+ request.getSession().setAttribute("usrBeforeUrl", loginVO.getBeforeUrl());
|
|
| 2676 |
+ // 회원가입 시 메세지 처리 |
|
| 2677 |
+ if (loginVO.getMessage() != null && !("").equals(loginVO.getMessage())) {
|
|
| 2678 |
+ request.getSession().setAttribute("registMessage", loginVO.getMessage());
|
|
| 2679 |
+ } |
|
| 2680 |
+ } |
|
| 2681 |
+ |
|
| 2682 |
+ // 개인키 삭제 |
|
| 2683 |
+ // 성공시 웹페이지 분기로 인해 session에 페이지 타입을 넣어준다. |
|
| 2684 |
+ request.getSession().setAttribute("pageType", "web");
|
|
| 2685 |
+ |
|
| 2686 |
+ return "blank"; // 성공 시 페이지.. (redirect 불가) |
|
| 2687 |
+ |
|
| 2688 |
+ // uat/uia/actionMain.do 실제 성공시 무조건 좌측 메소드로 감. |
|
| 2689 |
+ // return "forward:/web/main/mainPage.do"; |
|
| 2690 |
+ } else {
|
|
| 2691 |
+ String message = egovMessageSource.getMessage("fail.common.login");
|
|
| 2692 |
+ redirectAttributes.addFlashAttribute("beforeUrl", loginVO.getBeforeUrl());
|
|
| 2693 |
+ redirectAttributes.addFlashAttribute("message", message);
|
|
| 2694 |
+ return "redirect:/"; |
|
| 2695 |
+ } |
|
| 2696 |
+ } |
|
| 2697 |
+ |
|
| 1775 | 2698 |
// 이벤트 결제 바로가기 |
| 1776 | 2699 |
public boolean goEventPay(LoginVO loginVO) throws Exception {
|
| 1777 | 2700 |
boolean goEventPay = false; |
... | ... | @@ -2647,7 +3570,7 @@ |
| 2647 | 3570 |
String resultBlockSts = "0"; |
| 2648 | 3571 |
|
| 2649 | 3572 |
// 비밀번호 찾기 문자내용 |
| 2650 |
- String contents = "[문자온] 비밀번호 변경 인증번호 : %code%"; |
|
| 3573 |
+ String contents = "[문자온] 인증번호 : %code%"; |
|
| 2651 | 3574 |
String code = ""; |
| 2652 | 3575 |
long seed = System.currentTimeMillis(); |
| 2653 | 3576 |
Random random = new Random(seed); |
--- src/main/resources/egovframework/sqlmap/let/msg/MjonMsgData_SQL_mysql.xml
+++ src/main/resources/egovframework/sqlmap/let/msg/MjonMsgData_SQL_mysql.xml
... | ... | @@ -3702,6 +3702,26 @@ |
| 3702 | 3702 |
LIMIT 1 |
| 3703 | 3703 |
</select> |
| 3704 | 3704 |
|
| 3705 |
+ <select id="mjonMsgDAO.selectSysMsgLogCheck" parameterClass="SendLogVO" resultClass="SendLogVO"> |
|
| 3706 |
+ SELECT a.SEND_ID AS sendId, |
|
| 3707 |
+ a.SEND_TYPE AS sendType, |
|
| 3708 |
+ a.FRST_SEND_INFO AS frstSendInfo, |
|
| 3709 |
+ a.RECEIVE AS receive, |
|
| 3710 |
+ a.FRST_SEND_PNTTM AS frstSendPnttm, |
|
| 3711 |
+ a.CHECK_NO AS checkNo, |
|
| 3712 |
+ a.CONTENTS AS contents |
|
| 3713 |
+ FROM mj_system_send a |
|
| 3714 |
+ , lettngnrlmber b |
|
| 3715 |
+ WHERE 1 =1 |
|
| 3716 |
+ and b.MBER_ID = #sendId# |
|
| 3717 |
+ and b.MBTLNUM=#receive# |
|
| 3718 |
+ and b.MBTLNUM=a.RECEIVE |
|
| 3719 |
+ and a.CHECK_NO=#checkNo# |
|
| 3720 |
+ |
|
| 3721 |
+ ORDER BY a.FRST_SEND_PNTTM DESC, a.SEND_ID DESC |
|
| 3722 |
+ LIMIT 1 |
|
| 3723 |
+ </select> |
|
| 3724 |
+ |
|
| 3705 | 3725 |
<!-- 발신번호 등록 여부 조회 --> |
| 3706 | 3726 |
<select id="mjonMsgDAO.selectSendPhonNumCheck" parameterClass="mjonMsgVO" resultClass="int"> |
| 3707 | 3727 |
SELECT |
--- src/main/webapp/WEB-INF/jsp/web/com/webCommonHeader.jsp
+++ src/main/webapp/WEB-INF/jsp/web/com/webCommonHeader.jsp
... | ... | @@ -292,6 +292,8 @@ |
| 292 | 292 |
} |
| 293 | 293 |
|
| 294 | 294 |
function actionLogin() {
|
| 295 |
+ location.href="<c:url value='/web/user/login/login.do'/>"; |
|
| 296 |
+ /* |
|
| 295 | 297 |
// 아이디 공백 제거 |
| 296 | 298 |
document.loginForm.id_text.value = $.trim(document.loginForm.id_text.value); |
| 297 | 299 |
|
... | ... | @@ -328,6 +330,7 @@ |
| 328 | 330 |
}, 600); |
| 329 | 331 |
|
| 330 | 332 |
} |
| 333 |
+ */ |
|
| 331 | 334 |
} |
| 332 | 335 |
|
| 333 | 336 |
function saveid(form) {
|
--- src/main/webapp/WEB-INF/jsp/web/login/EgovLoginGnrlUsr.jsp
+++ src/main/webapp/WEB-INF/jsp/web/login/EgovLoginGnrlUsr.jsp
... | ... | @@ -138,6 +138,199 @@ |
| 138 | 138 |
} |
| 139 | 139 |
|
| 140 | 140 |
function actionLogin(){
|
| 141 |
+ |
|
| 142 |
+ setTimeout(function() {
|
|
| 143 |
+ if (isKoreaIpAddress == false) {
|
|
| 144 |
+ alert("해외 IP로 감지되어 로그인이 제한되었습니다.\n문자온 고객센터로 문의 바랍니다.");
|
|
| 145 |
+ location.href='/web/uat/uia/actionLogout.do'; |
|
| 146 |
+ return false; |
|
| 147 |
+ } |
|
| 148 |
+ |
|
| 149 |
+ // 로그인 START |
|
| 150 |
+ var rsa = new RSAKey(); |
|
| 151 |
+ rsa.setPublic($('#RSAModulus2').val(),$('#RSAExponent2').val());
|
|
| 152 |
+ /* rsa.setPublic(document.loginForm2.RSAModulus.value, document.loginForm2.RSAExponent.value); */ |
|
| 153 |
+ |
|
| 154 |
+ var id = $("#id_text2");
|
|
| 155 |
+ var pw = $("#password_text2");
|
|
| 156 |
+ |
|
| 157 |
+ /* var id = document.loginForm2.id_text; |
|
| 158 |
+ var pw = document.loginForm2.password_text; */ |
|
| 159 |
+ |
|
| 160 |
+ /* $("#id").val(rsa.encrypt(id.val())); */
|
|
| 161 |
+ /* $("#password").val(rsa.encrypt(pw.val())); */
|
|
| 162 |
+ document.loginForm2.id.value = rsa.encrypt(id.val().toLowerCase()); |
|
| 163 |
+ document.loginForm2.password.value = rsa.encrypt(pw.val()); |
|
| 164 |
+ |
|
| 165 |
+ //document.loginForm2.action="<c:url value='/web/user/login/actionSecurityLogin.do'/>"; |
|
| 166 |
+ saveid(document.loginForm2); |
|
| 167 |
+ //document.loginForm2.submit(); |
|
| 168 |
+ |
|
| 169 |
+ |
|
| 170 |
+ var checkForm = $("form[name=loginForm2]").serialize() ;
|
|
| 171 |
+ |
|
| 172 |
+ $.ajax({
|
|
| 173 |
+ type : "POST", |
|
| 174 |
+ async : false, |
|
| 175 |
+ url : "/web/user/login/actionSecurityLoginBeforeHpAjax.do", |
|
| 176 |
+ data : checkForm, |
|
| 177 |
+ dataType:'json', |
|
| 178 |
+ success : function(data) {
|
|
| 179 |
+ //alert(data.status); |
|
| 180 |
+ //alert(data.data.moblphonNo); |
|
| 181 |
+ |
|
| 182 |
+ if (data.status=="success"){
|
|
| 183 |
+ //번호인증팝업 띄우기 |
|
| 184 |
+ $("#input_list_item_1").hide();
|
|
| 185 |
+ $("#input_list_item_2").hide();
|
|
| 186 |
+ $("#input_list_item_3").hide();
|
|
| 187 |
+ $("#input_list_item_0").hide();
|
|
| 188 |
+ |
|
| 189 |
+ $("#input_list_item_4").show();
|
|
| 190 |
+ $("#input_list_item_5").show();
|
|
| 191 |
+ $("#input_list_item_6").show();
|
|
| 192 |
+ |
|
| 193 |
+ $("#hp_text2").val(data.data.moblphonNo);
|
|
| 194 |
+ |
|
| 195 |
+ |
|
| 196 |
+ |
|
| 197 |
+ }else if (data.status=="fail"){
|
|
| 198 |
+ $("#ret_msg").show();
|
|
| 199 |
+ $("#ret_msg_info").html('<i></i>'+data.msg);
|
|
| 200 |
+ } |
|
| 201 |
+ |
|
| 202 |
+ //alert(JSON.stringify(data)); |
|
| 203 |
+ console.log("sucess data1 : " + JSON.stringify(data));
|
|
| 204 |
+ if (data.isSuccess == true) {
|
|
| 205 |
+ console.log("fn_click_banner_add_stat sucess data2 : " + JSON.stringify(data));
|
|
| 206 |
+ } |
|
| 207 |
+ else {
|
|
| 208 |
+ console.log("data.isSuccess not true ");
|
|
| 209 |
+ console.log("sucess data.msg : " + data.msg);
|
|
| 210 |
+ console.log("sucess data1 : " + JSON.stringify(data));
|
|
| 211 |
+ } |
|
| 212 |
+ }, |
|
| 213 |
+ error : function(xhr, status, error) {
|
|
| 214 |
+ console.log("fn_click_banner_add_stat error : " + error);
|
|
| 215 |
+ console.log("fn_click_banner_add_stat xhr : " + JSON.stringify(xhr) + "\r\status : " + JSON.stringify(status) + "\r\error : " + JSON.stringify(error));
|
|
| 216 |
+ return false; |
|
| 217 |
+ } |
|
| 218 |
+ }); |
|
| 219 |
+ |
|
| 220 |
+ |
|
| 221 |
+ }, 600); |
|
| 222 |
+ |
|
| 223 |
+} |
|
| 224 |
+ |
|
| 225 |
+//아이디/휴대폰 번호 체크 |
|
| 226 |
+function actionLogin_end(){
|
|
| 227 |
+ |
|
| 228 |
+ |
|
| 229 |
+ if (isKoreaIpAddress == false) {
|
|
| 230 |
+ alert("해외 IP로 감지되어 로그인이 제한되었습니다.\n문자온 고객센터로 문의 바랍니다.");
|
|
| 231 |
+ location.href='/web/uat/uia/actionLogout.do'; |
|
| 232 |
+ return false; |
|
| 233 |
+ } |
|
| 234 |
+ |
|
| 235 |
+ // 로그인 START |
|
| 236 |
+ var rsa = new RSAKey(); |
|
| 237 |
+ rsa.setPublic($('#RSAModulus2').val(),$('#RSAExponent2').val());
|
|
| 238 |
+ /* rsa.setPublic(document.loginForm2.RSAModulus.value, document.loginForm2.RSAExponent.value); */ |
|
| 239 |
+ |
|
| 240 |
+ //var id = $("#id_text2");
|
|
| 241 |
+ //var pw = $("#password_text2");
|
|
| 242 |
+ var hp = $("#hp_text2").val();
|
|
| 243 |
+ var num = $("#num_text2").val();
|
|
| 244 |
+ |
|
| 245 |
+ /* var id = document.loginForm2.id_text; |
|
| 246 |
+ var pw = document.loginForm2.password_text; */ |
|
| 247 |
+ |
|
| 248 |
+ /* $("#id").val(rsa.encrypt(id.val())); */
|
|
| 249 |
+ /* $("#password").val(rsa.encrypt(pw.val())); */
|
|
| 250 |
+ //document.loginForm2.id.value = rsa.encrypt(id.val().toLowerCase()); |
|
| 251 |
+ //document.loginForm2.password.value = rsa.encrypt(pw.val()); |
|
| 252 |
+ document.loginForm2.hp.value = hp; |
|
| 253 |
+ document.loginForm2.num.value = num; |
|
| 254 |
+ |
|
| 255 |
+ document.loginForm2.action="<c:url value='/web/user/login/actionSecurityLoginAfterHp.do'/>"; |
|
| 256 |
+ saveid(document.loginForm2); |
|
| 257 |
+ document.loginForm2.submit(); |
|
| 258 |
+ |
|
| 259 |
+ |
|
| 260 |
+} |
|
| 261 |
+ |
|
| 262 |
+//아이디/휴대폰 번호 체크 |
|
| 263 |
+function step1IdCheck(){
|
|
| 264 |
+ |
|
| 265 |
+ document.checkForm.callTo.value = $('#hp_text2').val();
|
|
| 266 |
+ document.checkForm.userId.value = $('#id_text2').val().toLowerCase();
|
|
| 267 |
+ //document.checkForm.searchNm.value = $('#findPw_userNm').val();
|
|
| 268 |
+ |
|
| 269 |
+ if ($('#id_text2').val()==''){
|
|
| 270 |
+ alert("아이디를 입력해주세요.");
|
|
| 271 |
+ return; |
|
| 272 |
+ |
|
| 273 |
+ }else if ($('#hp_text2').val()==''){
|
|
| 274 |
+ alert("핸드폰번호를 입력해주세요.");
|
|
| 275 |
+ return; |
|
| 276 |
+ |
|
| 277 |
+ } |
|
| 278 |
+ |
|
| 279 |
+ var checkForm = $("form[name=checkForm]").serialize() ;
|
|
| 280 |
+ $.ajax({
|
|
| 281 |
+ url : "<c:url value='/web/user/sendSysMsgDataAjax.do' />", |
|
| 282 |
+ type : 'POST', |
|
| 283 |
+ data : checkForm, |
|
| 284 |
+ dataType:'json', |
|
| 285 |
+ success : function(returnData, status){
|
|
| 286 |
+ if(status == "success") {
|
|
| 287 |
+ alert(returnData.message); |
|
| 288 |
+ |
|
| 289 |
+ if(returnData.result == "success") {
|
|
| 290 |
+ timer(); |
|
| 291 |
+ |
|
| 292 |
+ } |
|
| 293 |
+ |
|
| 294 |
+ |
|
| 295 |
+ }else{ alert("실패");return;}
|
|
| 296 |
+ }, |
|
| 297 |
+ |
|
| 298 |
+ error : function(request , status, error){
|
|
| 299 |
+ alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
|
|
| 300 |
+ } |
|
| 301 |
+ }); |
|
| 302 |
+} |
|
| 303 |
+ |
|
| 304 |
+var time = 300; //기준시간 작성 |
|
| 305 |
+var min = ""; //분 |
|
| 306 |
+var sec = ""; //초 |
|
| 307 |
+ |
|
| 308 |
+//인증번호 타이머 |
|
| 309 |
+function timer(){
|
|
| 310 |
+ //setInterval(함수, 시간) : 주기적인 실행 |
|
| 311 |
+ var x = setInterval(function() {
|
|
| 312 |
+ //parseInt() : 정수를 반환 |
|
| 313 |
+ min = parseInt(time/60); |
|
| 314 |
+ sec = time%60; //나머지를 계산 |
|
| 315 |
+ |
|
| 316 |
+ document.getElementById("timer").innerHTML = min + "분" + sec + "초";
|
|
| 317 |
+ time--; |
|
| 318 |
+ |
|
| 319 |
+ //타임아웃 시 |
|
| 320 |
+ if (time < 0) {
|
|
| 321 |
+ clearInterval(x); //setInterval() 실행을 끝냄 |
|
| 322 |
+ document.getElementById("timer").innerHTML = "시간초과";
|
|
| 323 |
+ } |
|
| 324 |
+ |
|
| 325 |
+ }, 1000); |
|
| 326 |
+ |
|
| 327 |
+ if(time != 300){
|
|
| 328 |
+ time = 300; |
|
| 329 |
+ clearInterval(x); |
|
| 330 |
+ } |
|
| 331 |
+} |
|
| 332 |
+ |
|
| 333 |
+function actionLogin_bak(){
|
|
| 141 | 334 |
// Whois IP 국가코드 |
| 142 | 335 |
//whoisIpCountry(); |
| 143 | 336 |
setTimeout(function() {
|
... | ... | @@ -167,6 +360,39 @@ |
| 167 | 360 |
saveid(document.loginForm2); |
| 168 | 361 |
document.loginForm2.submit(); |
| 169 | 362 |
}, 600); |
| 363 |
+} |
|
| 364 |
+ |
|
| 365 |
+//인증번호 발송 1분마다 한번씩 보내기 |
|
| 366 |
+function sendMsgYn(){
|
|
| 367 |
+ |
|
| 368 |
+ document.checkForm.receive.value = $('#hp_text2').val();
|
|
| 369 |
+ |
|
| 370 |
+ if ($('#hp_text2').val()==''){
|
|
| 371 |
+ alert("휴대폰 번호를 입력해주세요.");
|
|
| 372 |
+ return; |
|
| 373 |
+ } |
|
| 374 |
+ |
|
| 375 |
+ var checkForm = $("form[name=checkForm]").serialize() ;
|
|
| 376 |
+ $.ajax({
|
|
| 377 |
+ url : "<c:url value='/web/user/sendSysMsgSelectAjax.do' />", |
|
| 378 |
+ type : 'POST', |
|
| 379 |
+ data : checkForm, |
|
| 380 |
+ dataType:'json', |
|
| 381 |
+ success : function(returnData, status){
|
|
| 382 |
+ if(status == "success") {
|
|
| 383 |
+ if(returnData.compare){
|
|
| 384 |
+ step1IdCheck(); |
|
| 385 |
+ }else{
|
|
| 386 |
+ alert("인증번호 발송은 1분마다 가능합니다.");
|
|
| 387 |
+ return; |
|
| 388 |
+ } |
|
| 389 |
+ }else{ alert("실패");return;}
|
|
| 390 |
+ }, |
|
| 391 |
+ |
|
| 392 |
+ error : function(request , status, error){
|
|
| 393 |
+ alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
|
|
| 394 |
+ } |
|
| 395 |
+ }); |
|
| 170 | 396 |
} |
| 171 | 397 |
|
| 172 | 398 |
function textClear(pram){
|
... | ... | @@ -284,6 +510,8 @@ |
| 284 | 510 |
<input type="hidden" id="id" name="id"> |
| 285 | 511 |
<input type="hidden" id="password" name="password"> |
| 286 | 512 |
<input type="hidden" name="goEventPay" value="${goEventPay}"/>
|
| 513 |
+ <input type="hidden" id="hp" name="hp"> |
|
| 514 |
+ <input type="hidden" id="num" name="num"> |
|
| 287 | 515 |
|
| 288 | 516 |
<div class="send_top"> |
| 289 | 517 |
<div class="mypage_content current"> |
... | ... | @@ -294,9 +522,9 @@ |
| 294 | 522 |
<div class="input_list"> |
| 295 | 523 |
<p class="welcome"> |
| 296 | 524 |
<span>문자온</span>에 오신것을 환영합니다.<br> |
| 297 |
- <span class="c_222 fwMd">로그인 </span>해주세요. |
|
| 525 |
+ <span class="c_222 fwMd">로그인1 </span>해주세요. |
|
| 298 | 526 |
</p> |
| 299 |
- <div class="input_list_item"> |
|
| 527 |
+ <div class="input_list_item" id="input_list_item_1"> |
|
| 300 | 528 |
<div class="input_left">아이디</div> |
| 301 | 529 |
<div class="input_right"> |
| 302 | 530 |
<label for="list_inputType1" class="label">아이디</label> |
... | ... | @@ -309,7 +537,7 @@ |
| 309 | 537 |
</button> |
| 310 | 538 |
</div> |
| 311 | 539 |
</div> |
| 312 |
- <div class="input_list_item"> |
|
| 540 |
+ <div class="input_list_item" id="input_list_item_2"> |
|
| 313 | 541 |
<div class="input_left">비밀번호</div> |
| 314 | 542 |
<div class="input_right"> |
| 315 | 543 |
<label for="list_inputType1" class="label">비밀번호 입력</label> |
... | ... | @@ -327,15 +555,61 @@ |
| 327 | 555 |
</div> |
| 328 | 556 |
</div> |
| 329 | 557 |
<c:if test="${fail}">
|
| 330 |
- <div class="pass_no2"> |
|
| 558 |
+ <div class="pass_no2" id="input_list_item_0"> |
|
| 331 | 559 |
<p> |
| 332 | 560 |
<i></i>아이디 또는 비밀번호가 일치하지 않습니다. |
| 333 | 561 |
</p> |
| 334 | 562 |
</div> |
| 335 | 563 |
</c:if> |
| 336 |
- <div class="mem_btnWrap2"> |
|
| 564 |
+ <c:if test="${fail2}">
|
|
| 565 |
+ <div class="pass_no2" id="input_list_item_0"> |
|
| 566 |
+ <p> |
|
| 567 |
+ <i></i>인증번호가 일치하지 않습니다. |
|
| 568 |
+ </p> |
|
| 569 |
+ </div> |
|
| 570 |
+ </c:if> |
|
| 571 |
+ <div class="pass_no2" style="display:none;" id="ret_msg"> |
|
| 572 |
+ <p id="ret_msg_info"> |
|
| 573 |
+ <i></i>아이디 또는 비밀번호가 일치하지 않습니다. |
|
| 574 |
+ </p> |
|
| 575 |
+ </div> |
|
| 576 |
+ <div class="mem_btnWrap2" id="input_list_item_3"> |
|
| 337 | 577 |
<button type="button" class="mem_btn5" onclick="javascript:actionLoginPage(); return false;">로그인</button> |
| 338 | 578 |
</div> |
| 579 |
+ |
|
| 580 |
+ <div class="input_list_item" id="input_list_item_4" style="display:none;"> |
|
| 581 |
+ <div class="input_left">휴대폰번호</div> |
|
| 582 |
+ <div class="input_right"> |
|
| 583 |
+ <label for="list_inputType1" class="label">휴대폰번호</label> |
|
| 584 |
+ <input type="text" id="hp_text2" class="list_inputType1" placeholder="가입휴대폰번호" style="width: 250px;" |
|
| 585 |
+ onfocus="this.placeholder=''" onblur="this.placeholder='가입휴대폰번호'" maxlength="20" readonly> |
|
| 586 |
+ </div> |
|
| 587 |
+ <div class="login_del"> |
|
| 588 |
+ |
|
| 589 |
+ |
|
| 590 |
+<button type="button" onclick="sendMsgYn();">인증번호 받기</button> |
|
| 591 |
+ |
|
| 592 |
+ |
|
| 593 |
+ </div> |
|
| 594 |
+ </div> |
|
| 595 |
+ <div class="input_list_item" id="input_list_item_5" style="display:none;"> |
|
| 596 |
+ <div class="input_left">인증번호 입력</div> |
|
| 597 |
+ <div class="input_right"> |
|
| 598 |
+ <label for="list_inputType1" class="label">인증번호 입력</label> |
|
| 599 |
+ <input type="text" id="num_text2" class="list_inputType1" placeholder="인증번호를 입력해주세요" maxlength="6" |
|
| 600 |
+ onfocus="this.placeholder=''" onblur="this.placeholder='인증번호를 입력해주세요'" onkeypress="if(event.keyCode==13) {return false;}">
|
|
| 601 |
+ </div> |
|
| 602 |
+ <div class="login_del"> |
|
| 603 |
+ <!-- <i class="password_protect"></i> --> |
|
| 604 |
+ <button type="button" onclick="textClear('num_text2')" tabindex="-1">
|
|
| 605 |
+ <img src="/publish/images/content/login_del.png" alt="입력 삭제"> |
|
| 606 |
+ </button> |
|
| 607 |
+ </div> |
|
| 608 |
+ </div> |
|
| 609 |
+ <div class="mem_btnWrap2" id="input_list_item_6" style="display:none;"> |
|
| 610 |
+ <button type="button" class="mem_btn5" onclick="javascript:actionLogin_end(); return false;">확인</button> |
|
| 611 |
+ </div> |
|
| 612 |
+ |
|
| 339 | 613 |
<div class="lgoin_bottom clearfix"> |
| 340 | 614 |
<div> |
| 341 | 615 |
<div class="checkbox_wrap"> |
... | ... | @@ -367,4 +641,10 @@ |
| 367 | 641 |
</div> |
| 368 | 642 |
<!--// 마이페이지 - 회원정보 변경 --> |
| 369 | 643 |
</form:form> |
| 644 |
+<form name="checkForm" id="checkForm" method="post" action="#"> |
|
| 645 |
+ <input type="hidden" name="searchNm" value=""/> |
|
| 646 |
+ <input type="hidden" name="userId" value=""/> |
|
| 647 |
+ <input type="hidden" name="callTo" value=""/> |
|
| 648 |
+ <input type="hidden" name="receive" value=""/> |
|
| 649 |
+</form> |
|
| 370 | 650 |
</div>(No newline at end of file) |
Add a comment
Delete comment
Once you delete this comment, you won't be able to recover it. Are you sure you want to delete this comment?