[홈페이지 제작] 게시판 만들기 3 - 수정,삭제 권한 부여

Feb 04, 2024
[홈페이지 제작] 게시판 만들기 3 - 수정,삭제 권한 부여
 
지난 블로그에서 게시글의 상세보기를 만들었다.
 
 
이번 블로그에서는 블로그에서는 게시글의 권한을 부여한다.
 
게시글에는 수정, 삭제 버튼이 있다. 하지만 수정 삭제 버튼은 권한이 존재한다.
먼저 로그인이 되어 있다면 비활성화 되어야 하고, 작성자 id 와 로그인된 id 가 일치해야만 활성화 되어야 한다.
 
페이지 넘기는 것과 비슷하게 boolean 타입을 만든다.
 
board/BoardController
boolean owner = false ;
 
이 코드를 통해 기본적으로 수정 삭제 권한은 비활성화 된다.
 
로그인 유무는 세션 정보를 확인한다.
 
board/BoardController
@GetMapping("/board/{id}") public String detail(@PathVariable int id, HttpServletRequest request) { // 1. 모델 진입 BoardResponse.DetailDTO responseDTO = boardRepository.findById(id); // 2. 세션 유져 = 게시글 쓴 유저 체크 boolean owner = false ; // 기본적으로 권한 없음. 로그인 하지 않으면 수정 삭제 비활성 int boardUserId = responseDTO.getUserId(); // DTO 의 유저 id User sessionUser = (User) session.getAttribute("sessionUser"); // 세션의 id if(sessionUser!=null){ // 세션의 값이 null 이 아니어야 로그인 상태 if(boardUserId==sessionUser.getId()){ 세션 id = 게시글 작성 id 비교 owner = true; // 일치하면 권한 활성 } request.setAttribute("owner",owner); // View 에 전달 } request.setAttribute("board", responseDTO); // 응답받은 DTO return "board/detail"; }
 
responseDTO 를 통해 게시글의 작성자 정보를 조회한다.
 
그리고 로그인 정보를 확인하기 위해 세션 정보를 확인한다. 세션은 userController의 login 메서드에서 접근한 적이 있다.
 
userController
session.setAttribute("sessionUser",user);
 
sessionUser 의 null 값을 확인해 로그인 여부를 확인하고, sessionUser 의 id 와 boardUserId 의 일치를 확인한다. 확인이 완료되면 request 객체를 통해 View에 전달한다.
 
detail.musthace
{{#owner}} <div class="d-flex justify-content-end"> <button class="btn btn-warning me-1">수정</button> <button class="btn btn-danger">삭제</button> </div> {{/owner}} <div class="d-flex justify-content-end mt-2"> <b>작성자</b> : {{board.username}} </div>
 
detail.musthace 의 수정 삭제 테이블을 {{#owner} {{/owner}} 로 감싼다. 만약 true 라면 해당 항목이 활성화 되고, false 라면 화면에서 비활성화된다.
 
notion image
 
 
로그인 상태가 아닐 때는 수정삭제 버튼이 비활성화된다.
 
notion image
notion image
 
아이디 ssar 로 로그인 했을 때 다른 유저가 작성한 글에는 권한이 없다.
 
notion image
 
작성자가 ssar 로 동일하면 수정 삭제 버튼이 활성화 된다.
Share article

{CODE-RYU};