본문 바로가기
study/MVC

[MVC] 16. MVC Model1 방식 - 회원가입 (탈퇴, 강제탈퇴)

by 금이패런츠 2022. 4. 11.
728x90
반응형

   1. id 파라미터 저장하기
   2. login 여부 검증하기
            로그아웃상태인 경우 
                  로그인하세요.메세지 출력 후 loginForm.jsp 페이지로 이동
            관리자가 아니면서 id 파라미터 정보와 login 정보가 다른 경우
                  본인만 탈퇴 가능합니다. 메세지 출력 후 main.jsp 페이지로 이동      
   3. 현재 화면 출력하기 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%-- src/main/webapp/model1/member/deleteForm.jsp
   1. id 파라미터 저장하기
   2. login 여부 검증하기
            로그아웃상태인 경우 
                  로그인하세요.메세지 출력 후 loginForm.jsp 페이지로 이동
            관리자가 아니면서 id 파라미터 정보와 login 정보가 다른 경우
                  본인만 탈퇴 가능합니다. 메세지 출력 후 main.jsp 페이지로 이동      
   3. 현재 화면 출력하기           
--%>    
<%
	//1. id 파라미터 저장하기
	String id = request.getParameter("id"); //파라미터정보
	String login = (String)session.getAttribute("login"); //로그인정보
	// 2. login 여부 검증하기
	if(login == null ) { //로그아웃상태 %>
<script type="text/javascript">
	alert("로그인 하세요")
	location.href="loginForm.jsp"
</script>	
<% }
// 3. login 상태 검증 2
	else if (!login.equals("admin") && !id.equals(login)) { %>
<script type="text/javascript">
		alert("본인만 탈퇴 가능합니다.")
		location.href="main.jsp"
</script>
<% } else { %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>회원 탈퇴 비밀번호 입력</title>
<link rel="stylesheet" href="../../css/main.css" >
<script type="text/javascript">
   function inputcheck(f) {
	   if(f.pass.value == "") {
		   alert("비밀번호를 입력하세요")
		   f.pass.focus();
		   return false;
	   }
	   return true;
   }
</script></head><body>
<form action="delete.jsp" method="post"
                        onsubmit="return inputcheck(this)">
  <input type="hidden" name="id" value="<%=id%>" >
<table>
   <caption>회원비밀번호 입력</caption>
   <tr><th>비밀번호</th>
       <td><input type="password" name="pass" /></td></tr>
   <tr><td colspan="2">
       <input type="submit" value="탈퇴하기" /></td></tr>
</table></form></body></html>
<% } %>

  1. 로그아웃 상태 : "로그인하세요" 출력. loginForm.jsp 페이지 이동
   2. 일반사용자
       - id 파라미터 정보와, login 정보가 다른경우
         "본인만 탈퇴 가능합니다.". main.jsp 페이지 이동
   3. id가 관리자인 경우 탈퇴 불가. list.jsp  페이지 이동.
   4. 비밀번호 검증. 
             관리자가 강제 탈퇴인 경우 : 관리자 비밀번호로 검증.
             일반사용자의 탈퇴인 경우 : 본인 비밀번호로 검증 
             비밀번호 불일치 : "비밀번호가 틀림" 출력. deleteForm.jsp 페이지 이동.
             
   5. db에서 delete 실행 : 비밀번호 일치인 경우 
      int MemberDao.delete(id) 메서드 호출
            탈퇴 성공 : member db에서 delete 처리 완료
                          일반사용자 : 로그아웃 실행.  삭제 성공 메세지 출력. 
                                    loginForm.jsp 페이지 이동.
                           관리자 : 삭제 성공 메세지 출력. list.jsp 페이지 이동.           
            탈퇴 실패 : member db에서 delete 처리시 오류발생
                          일반사용자 : 탈퇴 실패 메세지 출력. info.jsp 페이지 이동.
                          관리자 : 삭제 실패 메세지 출력. list.jsp 페이지 이동.

<%@page import="model.MemberDao"%>
<%@page import="model.Member"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%-- src/main/webapp/model1/member/delete.jsp
   1. 로그아웃 상태 : "로그인하세요" 출력. loginForm.jsp 페이지 이동
   2. 일반사용자
       - id 파라미터 정보와, login 정보가 다른경우
         "본인만 탈퇴 가능합니다.". main.jsp 페이지 이동
   3. id가 관리자인 경우 탈퇴 불가. list.jsp  페이지 이동.
   4. 비밀번호 검증. 
             관리자가 강제 탈퇴인 경우 : 관리자 비밀번호로 검증.
             일반사용자의 탈퇴인 경우 : 본인 비밀번호로 검증 
             비밀번호 불일치 : "비밀번호가 틀림" 출력. deleteForm.jsp 페이지 이동.
             
   5. db에서 delete 실행 : 비밀번호 일치인 경우 
      int MemberDao.delete(id) 메서드 호출
            탈퇴 성공 : member db에서 delete 처리 완료
                          일반사용자 : 로그아웃 실행.  삭제 성공 메세지 출력. 
                                    loginForm.jsp 페이지 이동.
                           관리자 : 삭제 성공 메세지 출력. list.jsp 페이지 이동.           
            탈퇴 실패 : member db에서 delete 처리시 오류발생
                          일반사용자 : 탈퇴 실패 메세지 출력. info.jsp 페이지 이동.
                          관리자 : 삭제 실패 메세지 출력. list.jsp 페이지 이동.        
--%>    
<%
   String login = (String)session.getAttribute("login");
   String id = request.getParameter("id");
   String pass = request.getParameter("pass");
   String msg = null;
   String url = null;
   if(login == null ) {
      msg= "로그인이 필요합니다.";
      url = "loginForm.jsp";
   } else if(!login.equals(id) && !login.equals("admin")) {
	  msg= "본인만 탈퇴가 가능합니다.";
	  url = "main.jsp";
   } else if (id.equals("admin")) { //탈퇴 대상이 되는 회원은 관리자 안됨
	  msg= "관리자는 탈퇴할 수 없습니다.";
	  url = "list.jsp";
   } else {
	   MemberDao dao = new MemberDao();	   
	   Member dbmem = dao.selectOne(login);
	   //비밀번호 검증
	   if(pass.equals(dbmem.getPass())) { //비밀번호 일치
		    url = "list.jsp";
			if(dao.delete(id)) { //삭제성공
				if(login.equals("admin")) {
					msg =id + " 사용자를 강제 탈퇴 성공";
				} else {
					msg =id + "님의  회원 탈퇴가 완료되었습니다.";
				    session.invalidate(); //로그아웃
				    url = "loginForm.jsp";
				}
			} else { //삭제 실패
				msg = id +"님의 탈퇴시 오류 발생.";
				if(!login.equals("admin")) {
					url = "info.jsp?id="+id;
				}
			}
	   } else { //비밀번호 오류
		   msg = id + "님의 비밀번호가 틀립니다.";
		   url = "deleteForm.jsp?id=" + id;
	   }
   }
%>
<script>
	alert("<%=msg%>");
	location.href="<%=url%>";
</script>
728x90
반응형