비밀번호 수정 다이어그램.drawio.png

비밀번호 수정 다이어그램.drawio

MemberController

// 비밀번호 수정
	@RequestMapping(value = "/updatePassword.do", method = RequestMethod.POST)
	public ResponseEntity updatePassword(@RequestParam("newMemberPw") String newPwd,
										 HttpSession session, HttpServletRequest requ) {
		
		ResponseEntity res = null;
	    MemberDomain memberDomain = (MemberDomain) session.getAttribute("member");
	    String memberId = memberDomain.getMemberId();
	    
	    System.out.println("memberIdCheck 들어옴? " + memberId);
	    System.out.println("newPwd 들어옴? " + newPwd);
	    
	    Map<String, String> updatePw = new HashMap<>();
	    
	    updatePw.put("memberId", memberId);
	    updatePw.put("newPwd", newPwd);
	    
	    try {
			memberService.updatePwd(updatePw);
			session.removeAttribute("member");
			session.removeAttribute("isLogOn");
			
			String msg = "<script>";
			msg += " alert('비밀번호가 수정되었습니다. 로그인 화면으로 이동합니다.');";
			msg += " opener.location.href ='" + requ.getContextPath() + "/member/loginForm.do'; ";
			msg += " window.close(); ";
			msg += " </script>";
			HttpHeaders responseHeaders = new HttpHeaders();
			responseHeaders.add("Content-Type", "text/html; charset=utf-8");
			res = new ResponseEntity(msg, responseHeaders, HttpStatus.CREATED);
			
		} catch (Exception e) {
			e.printStackTrace();
			String msg = "<script>";
			msg += " alert('비밀번호가 수정에 실패하였습니다. 다시 시도해 주세요.');";
			msg += " opener.location.href ='" + requ.getContextPath() + "/member/memberModifyForm.do'; ";
			msg += " window.close(); ";
			msg += " </script>";
			HttpHeaders responseHeaders = new HttpHeaders();
			responseHeaders.add("Content-Type", "text/html; charset=utf-8");
			res = new ResponseEntity(msg, responseHeaders, HttpStatus.CREATED);
		}
        
        return res;
	}

MemberServiceImpl

	// 비밀번호 수정
	@Override
	public void updatePwd(Map<String, String> updatePw) throws Exception {
		memberDAO.updatePwd(updatePw);
	}

MemberDAOImpl

// 비밀번호 수정
	@Override
	public void updatePwd(Map<String, String> updatePw) throws DataAccessException {
		sqlSession.update("mapper.member.updatePwd", updatePw);
	}

member.xml

  <!-- 비밀번호 수정 -->
    <update id="updatePwd" parameterType="Map">
   <![CDATA[
   	 update member
   	 set memberPw = #{newPwd}
   	 where memberid = #{memberId}
    ]]>
  </update>

changePassword.jsp

const memberPwd = `${member.memberPw}`;
const contextPath = `${contextPath}`;

$(document).ready(function() {
    $('#newPwd1, #newPwd2').on('input', function() {
        pwdCheck();
    });
});

function updatePassword() {
    var currentPwdInput = $('#currentPwd').val();
    var newPwdInput = $('#newPwd1').val();
    var newPwdConfirm = $('#newPwd2').val();

    if (newPwdInput === memberPwd) {
        alert("새 비밀번호는 기존 비밀번호와 같을 수 없습니다.");
        return false;
    }
    
    if (currentPwdInput === memberPwd && newPwdInput === newPwdConfirm && newPwdInput !== "") {
        return true; 
    } else if (currentPwdInput !== memberPwd) {
        alert("기존 비밀번호가 잘못되었습니다.");
        return false;
    } else {
        alert("새 비밀번호가 일치하지 않거나 비밀번호가 비어 있습니다.");
        return false;
    }
}

function pwdCheck() {
    var newPwdInput = $('#newPwd1').val();
    var newPwdConfirm = $('#newPwd2').val();
    var pwdMsg = $('#pwdMsg');
    var pwdLengthCheck = newPwdInput.length;

    // 비밀번호 길이 체크
    if (pwdLengthCheck < 4 || pwdLengthCheck > 16) {
        pwdMsg.text("비밀번호는 4~16자 입니다.");
        return;
    } else {
        pwdMsg.text("");
    }

    // 비밀번호 확인 체크
    if (newPwdConfirm !== newPwdInput) {
        pwdMsg.text("입력하신 비밀번호와 다릅니다.");
    } else if (newPwdInput === "" || newPwdConfirm === "") {
        pwdMsg.text("");
    } else {
        pwdMsg.text("");
    }
}