1) ReplyController
@RequestMapping("/usr/reply/doModify")
@ResponseBody
public String doModify(int id, String body, String replaceUri) {
if (Ut.empty(id)) {
return rq.jsHistoryBack("id가 없습니다");
}
if (Ut.empty(body)) {
return rq.jsHistoryBack("내용을 입력해주세요");
}
Reply reply = replyService.getForPrintReply(rq.getLoginedMember(), id);
if (reply == null) {
return rq.jsHistoryBack(Ut.f("%d번 댓글은 존재하지 않습니다", id));
}
if (reply.isExtra__actorCanModify() == false) {
return rq.jsHistoryBack("해당 댓글을 삭제할 권한이 없습니다");
}
ResultData modifyReplyRd = replyService.modifyReply(id,body);
if (Ut.empty(replaceUri)) {
switch (reply.getRelTypeCode()) {
case "article":
replaceUri = Ut.f("../article/detail?id=%d", reply.getRelId());
break;
}
}
return rq.jsReplace(modifyReplyRd.getMsg(), replaceUri);
}
2) ReplyRepository
@Update("""
UPDATE reply
SET updateDate = NOW(),
`body` = #{body}
WHERE id = #{id}
""")
void modifyReply(int id, String body);
myPage.jsp
<section class="mt-8 text-xl">
<div class="container mx-auto px-3">
<div class="table-box-type-1">
<table>
~~~ 생략 ~~~
<th>이메일</th>
<td>${rq.loginedMember.email }</td>
</tr>
<tr>
<th></th>
<td>
<a href="../member/checkPassword" class="btn btn-active btn-ghost">회원정보 수정 </a>
<button class="btn-text-link btn btn-active btn-ghost" type="button" onclick="history.back();">뒤 로가기</button>
</td>
</tr>
</tbody>
../member/myPage
로 접근시 보여지는 뷰로 로그인된 회원의 정보를 보여줌NeedLoginInterceptor
에 위의 uri를 추가하여 로그인된 상태에서만 접근이 가능하게함수정 페이지로 이동
이 아닌 비밀번호를 확인하는 페이지
로 이동1) MyWebMvcConfigurer
registry.addPathPatterns("/usr/reactionPoint/doGoodReaction")
.addPathPatterns("/usr/reactionPoint/doBadReaction")
.addPathPatterns("/usr/reactionPoint/doCancelGoodReaction")
.addPathPatterns("/usr/reactionPoint/doCancelBadReaction")
.addPathPatterns("/usr/reply/doWrite")
.addPathPatterns("/usr/reply/doDelete")
.addPathPatterns("/usr/reply/modify")
.addPathPatterns("/usr/reply/doModify")
.addPathPatterns("/usr/member/myPage")
.addPathPatterns("/usr/member/doLogout");
registry.addInterceptor(needLogoutInterceptor)
.addPathPatterns("/usr/member/login")
.addPathPatterns("/usr/member/doLogin")
.addPathPatterns("/usr/member/doJoin");
2) 회원정보 수정 전 비밀번호 체크
@RequestMapping("/usr/member/checkPassword")
public String showCheckPassword() {
return "usr/member/checkPassword";
}
@RequestMapping("/usr/member/doCheckPassword")
public String doCheckPassword(String loginPw, String replaceUri) {
if(Ut.empty(loginPw)) {
return rq.jsHistoryBackOnView("비밀번호를 입력하세요.");
}
if(rq.getLoginedMember().getLoginPw().equals(loginPw)==false) {
return rq.jsHistoryBackOnView("비밀번호가 일치하지 않습니다.");
}
return "usr/member/modify";
}
myPage에서 회원 번호 수정버튼을 클릭시 /usr/member/checkPassword
로 이동하여 먼저 비밀번호 입력 뷰를 보여준다.
비밀번호 입력 뷰에서 입력된 비밀번호와 replaceUri를 /usr/member/doCheckPassword
로 전송하여 비밀번호 체크 후 회원정보 수정뷰로 이동