📅2024. 02.20 49일차
댓글 수정/삭제
1.버튼 구현
로그인 한 경우에만 수정/삭제버튼이 나올 수 있게, 로그인 하지 않으면 수정/삭제버튼이 보이지 않도록 처리
문제상황:
댓글 작성자가 아니어도 수정/삭제 버튼이 표시 됨
그나마 다행인건, 해당 댓글 작성자가 아니면 삭제권한이 없다고 되돌려 보냄
<c:if test="${rq.isLogined() }">
<td><a class="btn btn-sm btn-outline" href="../reply/modify?id=${reply.id }">수정</a></td>
<td><a class="btn btn-sm btn-outline" onclick="if(confirm('정말 삭제하시겠습니까?') == false) return false;"
href="../reply/doDelete?relId=${reply.relId }&id=${reply.id }">삭제</a></td>
</c:if>
삭제 기능
reply컨트롤러에서 relId과 id와 함께 요청 보내서 reply레파지토리에서 쿼리스트링으로 db에서 삭제
@Delete("DELETE FROM reply WHERE id = #{id}")
public void deleteReply(int id);
로그인 체크 -> 유무 체크 -> 권한 체크 -> 삭제
public String doDelete(HttpServletRequest req, int relId, int id) {
Rq rq = (Rq) req.getAttribute("rq");
Reply reply = replyService.getReply(id);
if (reply == null) {
return Ut.jsHistoryBack("F-1", Ut.f("존재하지 않는 댓글입니다", id));
}
ResultData loginedMemberCanDeleteRd = replyService.userCanDelete(rq.getLoginedMemberId(), relId, reply);
if (loginedMemberCanDeleteRd.isSuccess()) {
replyService.deleteReply(id);
}
return Ut.jsReplace(loginedMemberCanDeleteRd.getResultCode(), loginedMemberCanDeleteRd.getMsg(),
"../article/detail?id=" + relId);
}