본문 바로가기
수업 문제(국비 지원)/JSP

[JSP] 2022.10.11 (회원탈퇴)

by byeolsub 2023. 4. 29.
/*
	 1. 파라미터 값을 변수에 저장
     2. method=POST 여부 확인.
     3. id가 관리자인 경우 탈퇴 불가. list.jsp 페이지로 이동
  == 추가++ : 로그인 여부(3-1), 본인 탈퇴 여부 검증(3-2). 
     4. 비밀번호 검증
        - 관리자가 강제 탈퇴인 경우 : 관리자 비밀번호
        - 본인 탈퇴인 경우 : 본인 비밀번호
        - 비밀번호 불일지 : 비밀번호 오류 메세지 출력 후 deleteForm.jsp 페이지 이동
     5. 비밀번호가 일치하는 경우
        boolean MemberDao().delete(id) 메서드 호출    
        - 회원 정보 삭제 성공 : 
             일반 사용자 :  로그아웃 실행.
                         탈퇴 성공 메세지 출력. loginForm.jsp페이지로 이동
             관리자 : 탈퇴 성공 메세지 출력. list.jsp 페이지로 이동
        - 회원 정보 삭제 실패 :
             일반 사용자 : 탈퇴 실패 메세지 출력. deleteForm.jsp 페이지로 이동
             관리자 : 탈퇴 실패 메세지 출력. list.jsp 페이지로이동   
	 */

 

  • MemberController.java - 내용 추가
@RequestMapping("delete")
	public String delete (HttpServletRequest request, HttpServletResponse response) {
		try {
			request.setCharacterEncoding("UTF-8");
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		} // Unhandled exception type UnsupportedEncodingException 예외처리 해줘야 한다
		//1. 파라미터 값을 변수에 저장
		 String id = request.getParameter("id");
		 String pass = request.getParameter("pass");
		 String login = (String)request.getSession().getAttribute("login");
		 String msg = null;
		 String url = null;
		 //2. method=POST 여부 확인.
		 if(!request.getMethod().equals("POST")) {
		    msg = "입력방식 오류입니다.";
		    url = "deleteForm?id=" + id;
		 } else if(id.equals("admin")) {
			 msg = "관리자는 탈퇴 불가능합니다.";
			 url = "list";
		 } else if(login == null) {
			 msg = "로그인 하세요.";
			 url = "loginForm";
		 } else if(!login.equals("admin") && !id.equals(login)) {
			 msg = "본인만 탈퇴 가능합니다.";
			 url = "main";
		 } else { //정상적으로 탈퇴 가능할 때
			 MemberDao dao = new MemberDao();
			 Member mem = dao.selectOne(login);
			 if(!pass.equals(mem.getPass())) { //비밀번호 오류
				 msg = "비밀번호 오류입니다.";
				 url = "deleteForm?id=" + id;
			 } else { //비밀번호 일치
				 if(dao.delete(id)) {
					 msg = id + "회원이 탈퇴 되었습니다.";
					 if(login.equals("admin")) {
						 url = "list";
					 } else { //일반 사용자
						 request.getSession().invalidate(); //로그아웃
						 url = "loginForm";
					 }
				 } else { //회원 정보 삭제시 db 오류 발생한 경우
					 msg = id + "회원 탈퇴 실패";
					 if(login.equals("admin")) { //관리자
						 url = "list";
					 } else {
						 request.getSession().invalidate(); //로그아웃
						 url = "deleteForm?id=" + id;
					 }
				 }
			 } //비밀번호 일치 if 끝
		 } 
		    request.setAttribute("msg", msg);
		    request.setAttribute("url", url);		
		    return "/view/alert.jsp";
	 }
}