SpringBoot Project

[SpringBoot] 게시물 수정, 삭제 작성자일 때만 가능하게 하기(thymeleaf 이용)

꿈꾸는야오옹 2023. 1. 29. 22:49

게시물을 작성하고 나서 작성자만 게시물을 수정, 삭제 버튼이 보이도록 구현을 하고자 한다.

또한, 삭제는 ADMIN(관리자) 권한이 있을때도 가능하게 하였다.

 

참고로 아래 코드의 detail은 Model에 저장된 데이터의 지정된 이름이다.

  • 우리의 프로젝트에는 principal이 writerId로 설정되어있다.
<div>
    <!-- 현재유저의 username = 작성자ID일치한 경우 수정버튼 활성화 -->
    <span th:if="${#authentication.name == detail.writerId}">
        <button class="edit_button" type="button" id="btn-edit">게시물 수정</button>
    </span>
</div>

thymeleaf  if문을 이용하여 조건에 맞을때만 수정버튼이 보이도록 해주었다.

 

 

아래는 삭제버튼을 구현한 부분이다.

<div>
    <th:block th:if="${#authentication.name == detail.writerId or #authorization.expression('hasRole(''ROLE_ADMIN'')')}">
        <form th:action="|/notice-boards/${detail.bno}|" method="post">
            <input type="hidden" name="_method" value="DELETE">
            <input type="hidden" name="rno" value="0">
            <button>게시물 삭제</button>
        </form>
    </th:block>
</div>

if문을 보면 수정버튼과 다르게  #authorization.expression('hasRole(''ROLE_ADMIN'')') 조건을 추가해줘서 관리자 Role이 부여되었을때 버튼이 보이게 해주었다.