From e6f90394e4d8af0f29cf1e5ab952b71d8e8bb05f Mon Sep 17 00:00:00 2001 From: seongjunkim Date: Wed, 21 Feb 2024 11:44:39 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20userId=EA=B0=80=20null=EC=9D=BC=EB=95=8C?= =?UTF-8?q?=20=EC=97=90=EB=9F=AC=EA=B0=80=20=EB=B0=9C=EC=83=9D=ED=95=98?= =?UTF-8?q?=EB=8D=98=20=EB=B6=80=EB=B6=84=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit userId가 null일 때, 에러가 발생하여 비로그인 상태에서 보드 조회가 실패하던 부분 수정. --- src/main/java/com/strcat/config/SecurityConfig.java | 2 +- src/main/java/com/strcat/controller/BoardController.java | 8 ++++++-- src/main/java/com/strcat/service/BoardService.java | 7 +++---- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/strcat/config/SecurityConfig.java b/src/main/java/com/strcat/config/SecurityConfig.java index f2e1d28..fe622fd 100644 --- a/src/main/java/com/strcat/config/SecurityConfig.java +++ b/src/main/java/com/strcat/config/SecurityConfig.java @@ -37,7 +37,7 @@ public class SecurityConfig { "favicon.ico", "v3/api-docs/**", "swagger-ui/**", - "boards/*", + "boards/{boardId}", "boards/*/summaries", "boards/*/contents", "boards/*/contents/pictures", diff --git a/src/main/java/com/strcat/controller/BoardController.java b/src/main/java/com/strcat/controller/BoardController.java index e8c990d..8ab7dc0 100644 --- a/src/main/java/com/strcat/controller/BoardController.java +++ b/src/main/java/com/strcat/controller/BoardController.java @@ -15,6 +15,7 @@ import io.swagger.v3.oas.annotations.responses.ApiResponses; import io.swagger.v3.oas.annotations.security.SecurityRequirement; import io.swagger.v3.oas.annotations.tags.Tag; +import java.util.Optional; import lombok.RequiredArgsConstructor; import org.springframework.http.HttpStatusCode; import org.springframework.security.core.Authentication; @@ -84,7 +85,8 @@ public String createPicture(@PathVariable(name = "boardId") String encryptedBoar @Operation(summary = "보드 조회", description = "보드에 대한 모든 정보와 보드 소유자 여부를 반환합니다.") public ReadBoardResDto readBoard(Authentication authentication, @PathVariable(name = "boardId") String encryptedBoardId) { - Long userId = (Long) authentication.getPrincipal(); + Long userId = authentication != null ? (Long) authentication.getPrincipal() : null; + return boardService.readBoard(encryptedBoardId, userId); } @@ -101,7 +103,9 @@ public ReadBoardSummaryResDto readSummary(@PathVariable(name = "boardId") String @Content(examples = {@ExampleObject("인증 실패")})}) public ReadBoardResDto deleteContents(@PathVariable(name = "boardId") String encryptedBoardId, @RequestBody DeleteContentReqDto dto, Authentication authentication) { - if (authentication == null) throw new ResponseStatusException(HttpStatusCode.valueOf(401)); + if (authentication == null) { + throw new ResponseStatusException(HttpStatusCode.valueOf(401)); + } User user = (User) authentication.getCredentials(); diff --git a/src/main/java/com/strcat/service/BoardService.java b/src/main/java/com/strcat/service/BoardService.java index 00d0b68..a39ac40 100644 --- a/src/main/java/com/strcat/service/BoardService.java +++ b/src/main/java/com/strcat/service/BoardService.java @@ -39,15 +39,14 @@ public String createBoard(CreateBoardReqDto dto, Long userId) { public ReadBoardResDto readBoard(String encryptedBoardId, Long userId) { Board board = boardRepository.findByEncryptedId(encryptedBoardId) .orElseThrow(() -> new NotAcceptableException("존재하지 않는 보드입니다.")); - - try { + if (userId != null) { recordHistoryUseCase.write(userId, List.of(new HistoryItem(encryptedBoardId, board.getTitle(), LocalDateTime.now()))); + Boolean isOwner = userId.equals(board.getUser().getId()); return board.toReadBoardResDto(isOwner); - } catch (NotAcceptableException e) { - return board.toReadBoardResDto(false); } + return board.toReadBoardResDto(false); } public ReadBoardSummaryResDto readSummary(String encryptedBoardId) {