Spring - MyPage(3) 회원탈퇴

맑은 눈의 코드 👀·2023년 8월 16일
0

06_framework 이론

목록 보기
8/23
post-custom-banner

🍕MyPageController.java 클래스

// 회원탈퇴
	@PostMapping("/secession")
	public String secession(@SessionAttribute("loginMember") Member loginMember
							,String memberPw
							,RedirectAttributes ra
							,SessionStatus status
							,HttpServletResponse resp){
		
		//SessionStatust을 관리하는 객체 
		//HttpServletResponse 서버에서 클라이언트 응답하는 방법제공 객체
		//RedirectAttributes 리다이렉트 시 request 로 값을 전달하는 객체
		
		// 1. 로그인한 회원의 회원 번호 얻어오기
		int memberNo = loginMember.getMemberNo();
		
		// 2. 회원 탈퇴 서비스 호출
		int result = service.secession(memberNo, memberPw);
		
		// - 비밀번호가 일치하면 MEMBER_DEL_FL -> 'Y'바꾸고 1 반환
		// - 비밀번호가 일치하지 않으면 -> 0 반환
		String path = "redirect:";
		String message = null;
		if(result > 0 ) {
			// 3. 탈퇴 성공시 
			
			// - message : 탈퇴되었습니다.
			message ="탈퇴 되었습니다.";
			// - 메인페이지로 redirect
			path += "/";
			// - 로그아웃 
			status.isComplete();
			// - 쿠키 삭제 
			Cookie cookis = new Cookie("saveId", "");
			// 같은 쿠키가 이미 존재한다면 덮어쓰기 된다
			
			cookis.setMaxAge(0); // 0초 동안 생존 -> 삭제
			cookis.setPath("/"); // 요청시 쿠키가 첨부되는 경로 
			resp.addCookie(cookis); // 요청 객체를 통해 클라이언트에게 전달 
									//클라이언트 컴퓨터에 파일로 생성
			
			
			
		}else {
			// 4. 탈퇴 실패 시 
			// - message : 현재 비밀번호가 일치하지 않습니다. 
			// - 회원탈퇴 페이지로 리다이렉트 
			message = "현재 비밀번호가 일치하지 않습니다.";
			path += "secession";
		}
		
		ra.addFlashAttribute("message", message);
		return path;
		
	}	

🍕MyPageService.java 인터페이스

/** 회원 탈퇴 
	 * @param memberNo
	 * @param memberPw 
	 * @return result
	 */
	int secession(int memberNo, String memberPw)

🍕MyPageServiceImpl.java 클래스

// 회원탈퇴서비스
	@Transactional(rollbackFor = {Exception.class})
	@Override
	public int secession(int memberNo, String memberPw) {
		
		//1. 회원 번호가 일치하는 회원의 비밀번호 조회
		String encPw = dao.selectEncPw(memberNo);
		
		System.out.println(encPw);
		//2. 비밀번호가 일치하면 1반환
		if(bcrypt.matches(memberPw,encPw)) {
			//MEMBER_DEL_FL -> 'Y'로 바꾸고 1반환
			return dao.secession(memberNo);
		}
		
		//2. 비밀번호가 일치하지 않으면 0반환
		return 0;
	}

🍕MyPageDAO.java 클래스

/** 회원 탈퇴
	 * @param memberNo
	 * @return result
	 */
	public int secession(int memberNo) {
		
		//sqlSessionTemplate : 마이바티스 + DBCP + close자동 + 트렌젝션처리
		return sqlSession.update("myPageMapper.secession", memberNo);
	}

🍕myPage-mapper.xml

<!-- 회원탈퇴 -->
	<update id="secession" parameterType="_int">
		UPDATE MEMBER SET MEMBER_DEL_FL='Y' WHERE MEMBER_NO = #{memberNo}	
	</update>
profile
나를 죽이지 못하는 오류는 내 코드를 더 강하게 만들지ㅋ
post-custom-banner

0개의 댓글