@Transient
private boolean isReplyOwner;
댓글 테이블에 이거 추가
보더 서비스에 추가
public Board findByJoinUser(Integer boardId, User sessionUser) {
Board board = boardJAPRepository.findByIdJoinUser(boardId)
.orElseThrow(() -> new Exception404("게시글을 찾을 수 없습니다"));
boolean isBoardOwner = false;
if(sessionUser != null){
if(sessionUser.getId() == board.getUser().getId()){
isBoardOwner = true;
}
}
board.setIsBoardOwner(isBoardOwner);
board.getReplies().forEach(reply -> {
boolean isReplyOwner = false;
if (sessionUser != null) {
if (reply.getUser().getId() == sessionUser.getId()) {
isReplyOwner = true;
}
}
reply.setReplyOwner(isReplyOwner);
});
return board;
}
머스테치 수정
{{> layout/header}}
<div class="container p-5">
<!-- 수정삭제버튼 -->
<div class="d-flex justify-content-end">
{{#board.isBoardOwner}}
<a href="/board/{{board.id}}/update-form" class="btn btn-warning me-1">수정</a>
<form action="/board/{{board.id}}/delete" method="post">
<button class="btn btn-danger">삭제</button>
</form>
{{/board.isBoardOwner}}
</div>
<div class="d-flex justify-content-end">
<b>작성자</b> : {{board.user.username}}
</div>
<!-- 게시글내용 -->
<div>
<h2><b>{{board.title}}</b></h2>
<hr />
<div class="m-4 p-2">
{{board.content}}
</div>
</div>
<!-- 댓글 -->
<div class="card mt-3">
<!-- 댓글등록 -->
<div class="card-body">
<form action="/reply/save" method="post">
<input type="hidden" name="boardId" value="{{board.id}}">
<textarea class="form-control" rows="2" name="comment"></textarea>
<div class="d-flex justify-content-end">
<button type="submit" class="btn btn-outline-primary mt-1">댓글등록</button>
</div>
</form>
</div>
<!-- 댓글목록 -->
<div class="card-footer">
<b>댓글리스트</b>
</div>
<div class="list-group">
<!-- 댓글아이템 -->
{{#board.replies}}
<div class="list-group-item d-flex justify-content-between align-items-center">
<div class="d-flex">
<div class="px-1 me-1 bg-primary text-white rounded">{{user.username}}</div>
<div>{{comment}}</div>
</div>
{{#replyOwner}}
<form action="/reply/{{id}}/delete" method="post">
<button class="btn">🗑</button>
</form>
{{/replyOwner}}
</div>
{{/board.replies}}
</div>
</div>
</div>
{{> layout/footer}}

머스테치 수정
{{#replyOwner}}
<form action="/reply/{{id}}/delete" method="post">
<input type="hidden" name="boardId" value="{{board.id}}">
<button class="btn">🗑</button>
</form>
{{/replyOwner}}
히든으로 보더 아이디를 넘겨줌
리플리 컨트롤러에 delete 추가
@PostMapping("/reply/{id}/delete")
public String delete(@PathVariable Integer id, @RequestParam("boardId") Integer boardId) {
User sessionUser = (User) session.getAttribute("sessionUser");
replyService.delete(id, sessionUser.getId());
return "redirect:/board/" + boardId;
}