home.jsp 파일에 로그인이 되어 있는 상태에서만 할 수 있도록 회원 탈퇴 요청을 생성

<a href="user/secession"><h3 class="box-title">회원탈퇴</h3></a>

HomeController 클래스에 회원탈퇴 요청이 왔을 때 비밀번호 입력 페이지로 이동하는 메소드를 작성

    @RequestMapping(value = "user/secession", method = RequestMethod.GET)
    public String pwinput(Model model, HttpSession session) {
        if (session.getAttribute("user") == null) {
            return "redirect:user/login";
        } else {
            return "user/secession";
        }
    }

user 디렉토리에 비밀번호 입력 페이지(secession)를 생성하고 작성

 user 디렉토리에 비밀번호 입력 페이지(secession)를 생성하고 작성
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ include file="../include/header.jsp"%>
<div class="container">
    <div class="row">
        <div class="col-md-4"></div>
        <div class="col-md-4">
            <div class="login-box well">
                <form accept-charset="UTF-8" role="form" method="post"
                    action="secession">
                    <legend>비밀번호 입력</legend>
                    <div style='color: red'>${msg}</div>
                    <div class="form-group">
                        <label for="password">비밀번호 </label> <input type="password"
                            name="pw" id="pw" placeholder="비밀번호를 입력하세요" class="formcontrol" />
                    </div>
                    <div class="form-group">
                        <input type="submit"
                            class="btn btn-primary btn-login-submit btn-block m-t-md"
                            value="비밀번호 확인" />
                    </div>
                    <div class="form-group">
                        <a href="../" class="btn btn-success btn-block m-tmd">메인으로</a>
                    </div>
                </form>
            </div>
        </div>
        <div class="col-md-4"></div>
    </div>
</div>
<%@ include file="../include/footer.jsp"%>

user.xml 파일에 회원탈퇴 처리를 위한 SQL을 작성

    <!-- 회원탈퇴 처리를 위한 sql -->
    <delete id="secession" parameterType="java.lang.String">
        delete from springuser
        where email = #{email}
    </delete>

UserDao 클래스에 회원탈퇴 처리를 위한 메소드를 구현

    public int secession(String email) {
        return sqlSession.update("user.secession", email);
    }

UserService 인터페이스에 회원탈퇴 처리를 위한 메소드를 선언

    public int secession(HttpServletRequest request);

UserServiceImpl 클래스에 회원탈퇴 처리를 위한 메소드를 구현

    @Override
    public int secession(HttpServletRequest request) {
        int result = -1;
        String pw = request.getParameter("pw");
        HttpSession session = request.getSession();
        User user = (User) session.getAttribute("user");
        User loginUser = userDao.login(user);
        if (loginUser != null) {
            if (BCrypt.checkpw(pw, loginUser.getPw())) {
                loginUser.setPw(null);
            } else {
                loginUser = null;
            }
        }
        if (loginUser != null) {
            result = userDao.secession(user.getEmail());
        }
        return result;
    }

UserController 클래스에 회원탈퇴 처리를 위한 메소드를 구현


    @RequestMapping(value = "user/secession", method = RequestMethod.POST)
    public String secession(HttpServletRequest request, Model model, RedirectAttributes attr) {
        int r = userService.secession(request);
        if (r >= 0) {
            request.getSession().removeAttribute("user");
            attr.addFlashAttribute("secession", "success");
            return "redirect:/";
        } else {
            attr.addFlashAttribute("msg", "비밀번호가 잘못되었습니다.");
            return "redirect:secession";
        }
    }

home.jsp 파일에 회원탈퇴 처리 후 메시지를 출력하는 코드를 작성

<c:if test="${secession != null }">
    <link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
    <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
    <script>
        $(function() {
            $("#dialog-update").dialog({
                resizable : false,
                height : "auto",
                width : 400,
                modal : true,
                buttons : {
                    "닫기" : function() {
                        $(this).dialog("close");
                    },
                }
            });
        });
    </script>
</c:if>
<div id="dialog-update" title="회원탈퇴" style="display: none">
    <p>
        <span class="ui-icon ui-icon-alert" style="float: left; margin: 12px 12px 20px 0;"></span>
        회원 탈퇴에 성공하셨습니다.
    </p>
</div>

results matching ""

    No results matching ""