From 8bebc7101b242f42480016cffa3ed0aa1a529d35 Mon Sep 17 00:00:00 2001 From: 3un0ia Date: Tue, 14 May 2024 20:44:40 +0900 Subject: [PATCH 1/5] =?UTF-8?q?feat=20:=20blog=20=EC=98=88=EC=99=B8?= =?UTF-8?q?=EC=B2=98=EB=A6=AC=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...nappropriateUserPostRelationException.java | 6 ++ .../exception/PageExceededDataException.java | 6 ++ .../exception/PathHasNoPostIdException.java | 6 ++ .../blog/exception/PostNotFoundException.java | 6 ++ .../UserIsNotPostWriterException.java | 6 ++ .../blog/exception/UserNotFoundException.java | 6 ++ .../exception/WrongPostRequestException.java | 6 ++ .../tgwing/tech/blog/service/PostService.java | 6 +- .../tech/blog/service/PostServiceImpl.java | 77 +++++++++++-------- .../common/exception/CommonException.java | 4 + .../common/exception/ExceptionMapper.java | 15 ++++ 11 files changed, 110 insertions(+), 34 deletions(-) create mode 100644 src/main/java/kr/tgwing/tech/blog/exception/InappropriateUserPostRelationException.java create mode 100644 src/main/java/kr/tgwing/tech/blog/exception/PageExceededDataException.java create mode 100644 src/main/java/kr/tgwing/tech/blog/exception/PathHasNoPostIdException.java create mode 100644 src/main/java/kr/tgwing/tech/blog/exception/PostNotFoundException.java create mode 100644 src/main/java/kr/tgwing/tech/blog/exception/UserIsNotPostWriterException.java create mode 100644 src/main/java/kr/tgwing/tech/blog/exception/UserNotFoundException.java create mode 100644 src/main/java/kr/tgwing/tech/blog/exception/WrongPostRequestException.java diff --git a/src/main/java/kr/tgwing/tech/blog/exception/InappropriateUserPostRelationException.java b/src/main/java/kr/tgwing/tech/blog/exception/InappropriateUserPostRelationException.java new file mode 100644 index 0000000..5324665 --- /dev/null +++ b/src/main/java/kr/tgwing/tech/blog/exception/InappropriateUserPostRelationException.java @@ -0,0 +1,6 @@ +package kr.tgwing.tech.blog.exception; + +import kr.tgwing.tech.common.exception.CommonException; + +public class InappropriateUserPostRelationException extends CommonException { +} diff --git a/src/main/java/kr/tgwing/tech/blog/exception/PageExceededDataException.java b/src/main/java/kr/tgwing/tech/blog/exception/PageExceededDataException.java new file mode 100644 index 0000000..255a167 --- /dev/null +++ b/src/main/java/kr/tgwing/tech/blog/exception/PageExceededDataException.java @@ -0,0 +1,6 @@ +package kr.tgwing.tech.blog.exception; + +import kr.tgwing.tech.common.exception.CommonException; + +public class PageExceededDataException extends CommonException { +} diff --git a/src/main/java/kr/tgwing/tech/blog/exception/PathHasNoPostIdException.java b/src/main/java/kr/tgwing/tech/blog/exception/PathHasNoPostIdException.java new file mode 100644 index 0000000..95f8e1e --- /dev/null +++ b/src/main/java/kr/tgwing/tech/blog/exception/PathHasNoPostIdException.java @@ -0,0 +1,6 @@ +package kr.tgwing.tech.blog.exception; + +import kr.tgwing.tech.common.exception.CommonException; + +public class PathHasNoPostIdException extends CommonException { +} diff --git a/src/main/java/kr/tgwing/tech/blog/exception/PostNotFoundException.java b/src/main/java/kr/tgwing/tech/blog/exception/PostNotFoundException.java new file mode 100644 index 0000000..1024731 --- /dev/null +++ b/src/main/java/kr/tgwing/tech/blog/exception/PostNotFoundException.java @@ -0,0 +1,6 @@ +package kr.tgwing.tech.blog.exception; + +import kr.tgwing.tech.common.exception.CommonException; + +public class PostNotFoundException extends CommonException { +} diff --git a/src/main/java/kr/tgwing/tech/blog/exception/UserIsNotPostWriterException.java b/src/main/java/kr/tgwing/tech/blog/exception/UserIsNotPostWriterException.java new file mode 100644 index 0000000..9ecbc75 --- /dev/null +++ b/src/main/java/kr/tgwing/tech/blog/exception/UserIsNotPostWriterException.java @@ -0,0 +1,6 @@ +package kr.tgwing.tech.blog.exception; + +import kr.tgwing.tech.common.exception.CommonException; + +public class UserIsNotPostWriterException extends CommonException { +} diff --git a/src/main/java/kr/tgwing/tech/blog/exception/UserNotFoundException.java b/src/main/java/kr/tgwing/tech/blog/exception/UserNotFoundException.java new file mode 100644 index 0000000..3373c20 --- /dev/null +++ b/src/main/java/kr/tgwing/tech/blog/exception/UserNotFoundException.java @@ -0,0 +1,6 @@ +package kr.tgwing.tech.blog.exception; + +import kr.tgwing.tech.common.exception.CommonException; + +public class UserNotFoundException extends CommonException { +} diff --git a/src/main/java/kr/tgwing/tech/blog/exception/WrongPostRequestException.java b/src/main/java/kr/tgwing/tech/blog/exception/WrongPostRequestException.java new file mode 100644 index 0000000..1f4613e --- /dev/null +++ b/src/main/java/kr/tgwing/tech/blog/exception/WrongPostRequestException.java @@ -0,0 +1,6 @@ +package kr.tgwing.tech.blog.exception; + +import kr.tgwing.tech.common.exception.CommonException; + +public class WrongPostRequestException extends CommonException { +} diff --git a/src/main/java/kr/tgwing/tech/blog/service/PostService.java b/src/main/java/kr/tgwing/tech/blog/service/PostService.java index 74c9932..8d29500 100644 --- a/src/main/java/kr/tgwing/tech/blog/service/PostService.java +++ b/src/main/java/kr/tgwing/tech/blog/service/PostService.java @@ -10,7 +10,7 @@ public interface PostService { public PostDto getPost(Long postId); public PostDto createPost(PostDto requestDto, String token); - public PostDto updatePost(PostDto postDto, Long userId, Long postId, String token); - public void deletePost(Long userId, Long postId); - public Page getPostsInPage(String text, int page, Pageable pageable); + public PostDto updatePost(PostDto postDto, Long postId, String utilStudentId); + public void deletePost(Long postId, String utilStudentId); + public Page getPostsInPage(String text, Pageable pageable); } diff --git a/src/main/java/kr/tgwing/tech/blog/service/PostServiceImpl.java b/src/main/java/kr/tgwing/tech/blog/service/PostServiceImpl.java index 609b6ee..d69b2ae 100644 --- a/src/main/java/kr/tgwing/tech/blog/service/PostServiceImpl.java +++ b/src/main/java/kr/tgwing/tech/blog/service/PostServiceImpl.java @@ -3,8 +3,15 @@ import kr.tgwing.tech.blog.dto.PostDto; import kr.tgwing.tech.blog.entity.PostEntity; +import kr.tgwing.tech.blog.exception.PostNotFoundException; +import kr.tgwing.tech.blog.exception.UserIsNotPostWriterException; +import kr.tgwing.tech.blog.exception.UserNotFoundException; +import kr.tgwing.tech.blog.exception.WrongPostRequestException; import kr.tgwing.tech.blog.repository.PostRepository; +import kr.tgwing.tech.user.entity.UserEntity; +import kr.tgwing.tech.user.repository.UserRepository; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageImpl; import org.springframework.data.domain.PageRequest; @@ -15,6 +22,7 @@ import org.springframework.web.server.ResponseStatusException; import java.util.List; +import java.util.Objects; import java.util.Optional; import java.util.stream.Collectors; @@ -24,18 +32,17 @@ @Service @Transactional @RequiredArgsConstructor +@Slf4j public class PostServiceImpl implements PostService { private final PostRepository postRepository; -// private final UserRepository userRepository; -// private final AuthService authService; + private final UserRepository userRepository; @Override public PostDto getPost(Long postId) // 특정 게시글 가져오기 { // 입력된 postId에 해당하는 글 찾기 - Optional postEntityInOp = postRepository.findById(postId); -// PostEntity postEntity = postEntityInOp.orElseThrow(PostNotFoundException::new); 예외처리 생략 - PostEntity postEntity = postEntityInOp.orElseThrow(); + Optional postEntityInOp = postRepository.findById(postId); // 없는 Id 입력 시 500error... 예외처리해결 + PostEntity postEntity = postEntityInOp.orElseThrow(PostNotFoundException::new); return toDto(postEntity); } @@ -50,15 +57,17 @@ private Page getAllPosts(PageRequest pageRequest) { // 모든 공지 } @Override - public PostDto createPost(PostDto requestDto, String token) // 공지 생성하기 + public PostDto createPost(PostDto requestDto, String utilStudentId) // 공지 생성하기 { // 글을 작성할 user 조회 -// Optional userById = userRepository.findById(requestDto.getWriter()); + Optional userById = userRepository.findById(requestDto.getWriter()); // // userEntity를 받아오지 못한 경우 - 회원을 찾을 수 없음 (Exception) -// UserEntity userEntity = userById.orElseThrow(UserNotFoundException::new); + UserEntity userEntity = userById.orElseThrow(UserNotFoundException::new); - String jwt = token.split(" ")[1]; -// String studentId = authService.extractStudentId(jwt); + // 현재 사용자와 요청 시 들어온 writer가 같은지 확인 + if (!Objects.equals(userEntity.getStudentId(), utilStudentId)) { + throw new WrongPostRequestException(); + } // entity에는 저장된 썸네일의 uri만 추가로 넣어서 저장 PostEntity postEntity = toEntity(requestDto); @@ -68,47 +77,53 @@ public PostDto createPost(PostDto requestDto, String token) // 공지 생성하 } @Override - public PostDto updatePost(PostDto postDto, Long userId, Long postId, String token) // 게시글 수정하기 + public PostDto updatePost(PostDto postDto, Long postId, String utilStudentId) // 게시글 수정하기 { Optional postById = postRepository.findById(postId); -// PostEntity postEntity = postById.orElseThrow(PostNotFoundException::new); - PostEntity postEntity = postById.orElseThrow(); - - String jwt = token.split(" ")[1]; + PostEntity postEntity = postById.orElseThrow(PostNotFoundException::new); // 해당 URL을 요청자 == 공지 작성자 일 때에만 수정 가능 // 수정 목록 : title, content, thumbnail + Optional userById = userRepository.findById(postEntity.getWriter()); + UserEntity userEntity = userById.orElseThrow(UserNotFoundException::new); // 유저 notfound 예외처리 + + // DB 내 게시글 작성자 - 요청된 유저 ID 동일 & DB 내 게시글 작성자 - 요청된 게시글 작성자 동일 - if(postEntity.getWriter() == userId && postEntity.getWriter() == postDto.getWriter()) { - System.out.println("유저 정보 일치"); -// postEntity.updateContent(postDto); // 수정 요 + if(!Objects.equals(userEntity.getStudentId(), utilStudentId)) { + log.info("학번 일치 - 작성자 확인"); + postEntity.updateContent(postDto); // entity 정보 수정 PostEntity savedEntity = postRepository.save(postEntity); return toDto(savedEntity); } else { // 공지 작성자가 아닌 경우 -- 수정 불가능 - System.out.println("유저 정보 불일치 - 작성자가 아니므로 수정 불가능"); - throw new ResponseStatusException(HttpStatus.FORBIDDEN); + log.info("학번 불일치 - 작성자가 아니므로 수정 불가능"); + throw new UserIsNotPostWriterException(); } } @Override - public void deletePost(Long userId, Long postId) // 게시글 삭제하기 + public void deletePost(Long postId, String utilStudentId) // 게시글 삭제하기 { Optional postById = postRepository.findById(postId); - PostEntity postEntity = postById.orElseThrow(); + PostEntity postEntity = postById.orElseThrow(PostNotFoundException::new); + + Optional userById = userRepository.findById(postEntity.getWriter()); + UserEntity userEntity = userById.orElseThrow(UserNotFoundException::new); // 해당 URL을 요청한 사람이 공지 작성자인 경우에만 삭제 가능 - if(postEntity.getWriter() == userId) { + if(!Objects.equals(userEntity.getStudentId(), utilStudentId)) { + log.info("학번 일치 - 작성자 확인"); postRepository.deleteById(postId); } else { - System.out.println("삭제 불가 - 작성자가 아님"); - throw new ResponseStatusException(HttpStatus.FORBIDDEN); } + log.info("학번 불일치 - 작성자가 아니므로 삭제 불가능"); + throw new UserIsNotPostWriterException(); } } @Override - public Page getPostsInPage(String text, int page, Pageable pageable) { + public Page getPostsInPage(String text, Pageable pageable) { int size = pageable.getPageSize(); + int page = pageable.getPageNumber(); long total = 0L; Page postPage = null; @@ -124,23 +139,23 @@ public Page getPostsInPage(String text, int page, Pageable pageable) { else { // - 파라미터로 검색된 블로그만 걸러서 반환 postPage = searchPosts(text, pageRequest); total = postRepository.countByTitleContains(text); - System.out.println("total = " + total); + log.info("total = " + total); } - if(!(total > page * size)) {throw new ResponseStatusException(HttpStatus.BAD_REQUEST); } + if(!(total > page * size)) {throw new WrongPostRequestException(); } // 이후 ExceptionHandler 정의 필요 if (postPage.isEmpty()) { - System.out.println("조회 불가능"); + log.info("page 조회 불가"); } // stream이 비어있는 경우 - postPage.stream().findFirst().orElseThrow(()-> new ResponseStatusException(HttpStatus.NO_CONTENT)); + postPage.stream().findFirst().orElseThrow(()-> new PostNotFoundException()); // page가 총 데이터 건수를 초과하는 경우 long totalCount = postPage.getTotalElements(); long requestCount = (postPage.getTotalPages() - 1) * postPage.getSize(); - if(!(totalCount > requestCount)) { throw new ResponseStatusException(HttpStatus.BAD_REQUEST); } + if(!(totalCount > requestCount)) { throw new WrongPostRequestException(); } // Entity -> Dto 변환 - Dto 담은 page 반환 List posts = postPage.getContent(); diff --git a/src/main/java/kr/tgwing/tech/common/exception/CommonException.java b/src/main/java/kr/tgwing/tech/common/exception/CommonException.java index a5107ed..db00422 100644 --- a/src/main/java/kr/tgwing/tech/common/exception/CommonException.java +++ b/src/main/java/kr/tgwing/tech/common/exception/CommonException.java @@ -12,4 +12,8 @@ protected CommonException(Exception e) { protected CommonException(String message) { super(message); } + + protected CommonException(Exception e, String msg) { + super(msg, e); + } } diff --git a/src/main/java/kr/tgwing/tech/common/exception/ExceptionMapper.java b/src/main/java/kr/tgwing/tech/common/exception/ExceptionMapper.java index 83ace99..31c19c5 100644 --- a/src/main/java/kr/tgwing/tech/common/exception/ExceptionMapper.java +++ b/src/main/java/kr/tgwing/tech/common/exception/ExceptionMapper.java @@ -1,5 +1,6 @@ package kr.tgwing.tech.common.exception; +import kr.tgwing.tech.blog.exception.*; import org.springframework.http.HttpStatus; import java.util.LinkedHashMap; @@ -19,6 +20,20 @@ private static void setUpUserException() { } private static void setUpPostException() { + mapper.put(PostNotFoundException.class, + ExceptionSituation.of("해당하는 블로그를 찾을 수 없습니다", HttpStatus.NOT_FOUND, 4400)); + mapper.put(PathHasNoPostIdException.class, + ExceptionSituation.of("경로에 적절한 블로그의 id가 필요합니다", HttpStatus.BAD_REQUEST, 4401)); + mapper.put(PageExceededDataException.class, + ExceptionSituation.of("데이터 갯수에 초과되는 페이지 수가 입력되었습니다", HttpStatus.BAD_REQUEST, 4402)); + mapper.put(InappropriateUserPostRelationException.class, + ExceptionSituation.of("블로그 작성자 정보가 서로 일치하지 않습니다", HttpStatus.CONFLICT, 4403)); + mapper.put(UserIsNotPostWriterException.class, + ExceptionSituation.of("블로그 수정(삭제) 권한이 존재하지 않습니다", HttpStatus.FORBIDDEN, 4404)); + mapper.put(UserNotFoundException.class, + ExceptionSituation.of("해당하는 유저를 찾을 수 없습니다", HttpStatus.NOT_FOUND, 4405)); + mapper.put(WrongPostRequestException.class, + ExceptionSituation.of("요청에 잘못된 정보가 포함되어 있습니다", HttpStatus.BAD_REQUEST, 4406)); } From 729fe5682a54dddb675158fb43417ae714d1d4b6 Mon Sep 17 00:00:00 2001 From: 3un0ia Date: Tue, 14 May 2024 20:45:19 +0900 Subject: [PATCH 2/5] =?UTF-8?q?fix=20:=20blog=20=EC=A0=90=EA=B2=80?= =?UTF-8?q?=EC=82=AC=ED=95=AD=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tech/blog/controller/PostController.java | 45 +++++++++++-------- .../java/kr/tgwing/tech/blog/dto/PostDto.java | 1 + .../tgwing/tech/blog/entity/PostEntity.java | 11 ++--- 3 files changed, 34 insertions(+), 23 deletions(-) diff --git a/src/main/java/kr/tgwing/tech/blog/controller/PostController.java b/src/main/java/kr/tgwing/tech/blog/controller/PostController.java index 551655b..6bd6886 100644 --- a/src/main/java/kr/tgwing/tech/blog/controller/PostController.java +++ b/src/main/java/kr/tgwing/tech/blog/controller/PostController.java @@ -1,7 +1,9 @@ package kr.tgwing.tech.blog.controller; import kr.tgwing.tech.blog.dto.PostDto; +import kr.tgwing.tech.blog.exception.PathHasNoPostIdException; import kr.tgwing.tech.blog.service.PostServiceImpl; +import kr.tgwing.tech.security.util.JwtUtil; import lombok.RequiredArgsConstructor; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; @@ -9,6 +11,9 @@ import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; +import java.security.Principal; +import java.util.Optional; + @RestController //@RequestMapping("/api") @RequiredArgsConstructor @@ -26,11 +31,10 @@ public class PostController { @GetMapping("/blog") // 블로그 전체 가져오기 - GET, /tgwing.kr/notice public ResponseEntity getAllPostswithSearch(@RequestParam(value = "text", required = false) String text, - @RequestParam int page, - @PageableDefault Pageable pageable) { + @PageableDefault Pageable pageable) { System.out.println("-- Retrieve All of Posts --"); - Page postsInPage = postService.getPostsInPage(text, page, pageable); + Page postsInPage = postService.getPostsInPage(text, pageable); return ResponseEntity.ok(postsInPage); } @@ -47,31 +51,34 @@ public ResponseEntity getAllPostswithSearch(@RequestParam(value = "text", // } @GetMapping("/blog/{postId}") // 특정 블로그 가져오기 - GET, /tgwing.kr/blog/{postId} - public ResponseEntity getPost(@PathVariable("postId") Long postId) { + public ResponseEntity getPost(@PathVariable(required = false, name = "postId") Optional optional) { System.out.println("-- Retreive Specific Post by Id --"); - // 특정 게시글 id에 대한 post 정보를 모아 반환 (id, title, description, writtenDate, ?조회수? + // 특정 게시글 id에 대한 post 정보를 모아 반환 + + Long postId = optional.orElseThrow(PathHasNoPostIdException::new); PostDto post = postService.getPost(postId); return ResponseEntity.ok(post); } - @PostMapping("/blog/post") // 블로그 작성 - POST, /tgwing.kr/blog/post + @PostMapping("/blog") // 블로그 작성 - POST, /tgwing.kr/blog/post public ResponseEntity post(@RequestBody PostDto requestDto, - @RequestHeader("authorization") String token) + Principal principal) { System.out.println("-- Post new post --"); System.out.println("Request Dto = " + requestDto); // RequestDTO : writer, title, content, thumbnailUri - PostDto responseDto = postService.createPost(requestDto, token); + String utilStudentId = principal.getName(); + + PostDto responseDto = postService.createPost(requestDto, utilStudentId); return ResponseEntity.ok(responseDto); } // @CrossOrigin - @PutMapping ("/blog/modify/{id}") // 블로그 수정 - PUT, /tgwing.kr/blog/modify/{id} + @PutMapping ("/blog/{postId}") // 블로그 수정 - PUT, /tgwing.kr/blog/modify/{id} public ResponseEntity modify(@RequestBody PostDto requestDto, - @RequestHeader("authorization") String token, - @RequestParam Long userId, - @PathVariable("id") Long id) + @PathVariable Long postId, + Principal principal) { System.out.println("-- Modify (title + content) of post --"); // repository에 대해서 해당 id를 가진 엔티티를 가져오고, @@ -79,18 +86,20 @@ public ResponseEntity modify(@RequestBody PostDto requestDto, System.out.println("Request Dto = " + requestDto); - PostDto responseDto = postService.updatePost(requestDto, userId, id, token); + String utilStudentId = principal.getName(); + PostDto responseDto = postService.updatePost(requestDto, postId, utilStudentId); return ResponseEntity.ok(responseDto); } - @DeleteMapping("/blog/delete/{id}") // 블로그 삭제 - DELETE, /tgwing.kr/blog/delete/{id} - public ResponseEntity delete(@PathVariable("id") Long postId, - @RequestParam Long userId) + @DeleteMapping("/blog/{postId}") // 블로그 삭제 - DELETE, /tgwing.kr/blog/delete/{id} + public ResponseEntity delete(@PathVariable Long postId, + Principal principal) { System.out.println("-- Delete Specific Post --"); - // 아이디에 해당하는 글 객체를 그냥 삭제 -> 응답 - postService.deletePost(userId, postId); + + String utilStudentId = principal.getName(); + postService.deletePost(postId, utilStudentId); return ResponseEntity.noContent().build(); } } diff --git a/src/main/java/kr/tgwing/tech/blog/dto/PostDto.java b/src/main/java/kr/tgwing/tech/blog/dto/PostDto.java index 6a2306b..4e2ad92 100644 --- a/src/main/java/kr/tgwing/tech/blog/dto/PostDto.java +++ b/src/main/java/kr/tgwing/tech/blog/dto/PostDto.java @@ -10,6 +10,7 @@ @Builder @AllArgsConstructor public class PostDto { + private Long id; private Long writer; private String title; private String content; diff --git a/src/main/java/kr/tgwing/tech/blog/entity/PostEntity.java b/src/main/java/kr/tgwing/tech/blog/entity/PostEntity.java index ff9965b..cee5180 100644 --- a/src/main/java/kr/tgwing/tech/blog/entity/PostEntity.java +++ b/src/main/java/kr/tgwing/tech/blog/entity/PostEntity.java @@ -41,15 +41,16 @@ public class PostEntity extends BaseEntity { public static PostDto toDto(PostEntity postEntity) { return PostDto.builder() + .id(postEntity.id) .writer(postEntity.writer) .title(postEntity.title) .content(postEntity.content) .thumbnail(postEntity.thumbnail).build(); } -// public void updateContent(PostDto postDto) { -// this.title = postDto.getTitle(); -// this.content = postDto.getContent(); -// this.thumbnail = postDto.getThumbnail(); -// } + public void updateContent(PostDto postDto) { + this.title = postDto.getTitle(); + this.content = postDto.getContent(); + this.thumbnail = postDto.getThumbnail(); + } } From 9cd396161ae60a6ab4813f5fe0cbd5abad441bbf Mon Sep 17 00:00:00 2001 From: 3un0ia Date: Tue, 14 May 2024 21:35:05 +0900 Subject: [PATCH 3/5] =?UTF-8?q?fix=20:=20blog=20=EC=98=A4=EB=A5=98=20?= =?UTF-8?q?=EC=A0=90=EA=B2=80=20=EB=B0=8F=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/kr/tgwing/tech/blog/service/PostServiceImpl.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/main/java/kr/tgwing/tech/blog/service/PostServiceImpl.java b/src/main/java/kr/tgwing/tech/blog/service/PostServiceImpl.java index d69b2ae..27626af 100644 --- a/src/main/java/kr/tgwing/tech/blog/service/PostServiceImpl.java +++ b/src/main/java/kr/tgwing/tech/blog/service/PostServiceImpl.java @@ -41,7 +41,7 @@ public class PostServiceImpl implements PostService { public PostDto getPost(Long postId) // 특정 게시글 가져오기 { // 입력된 postId에 해당하는 글 찾기 - Optional postEntityInOp = postRepository.findById(postId); // 없는 Id 입력 시 500error... 예외처리해결 + Optional postEntityInOp = postRepository.findById(postId); PostEntity postEntity = postEntityInOp.orElseThrow(PostNotFoundException::new); return toDto(postEntity); @@ -88,9 +88,11 @@ public PostDto updatePost(PostDto postDto, Long postId, String utilStudentId) // Optional userById = userRepository.findById(postEntity.getWriter()); UserEntity userEntity = userById.orElseThrow(UserNotFoundException::new); // 유저 notfound 예외처리 + log.info("util학번 = {}", utilStudentId); + log.info("user학번 = {}", userEntity.getStudentId()); // DB 내 게시글 작성자 - 요청된 유저 ID 동일 & DB 내 게시글 작성자 - 요청된 게시글 작성자 동일 - if(!Objects.equals(userEntity.getStudentId(), utilStudentId)) { + if(Objects.equals(userEntity.getStudentId(), utilStudentId)) { log.info("학번 일치 - 작성자 확인"); postEntity.updateContent(postDto); // entity 정보 수정 @@ -112,7 +114,7 @@ public void deletePost(Long postId, String utilStudentId) // 게시글 삭제하 UserEntity userEntity = userById.orElseThrow(UserNotFoundException::new); // 해당 URL을 요청한 사람이 공지 작성자인 경우에만 삭제 가능 - if(!Objects.equals(userEntity.getStudentId(), utilStudentId)) { + if(Objects.equals(userEntity.getStudentId(), utilStudentId)) { log.info("학번 일치 - 작성자 확인"); postRepository.deleteById(postId); } else { From 4a6568204069c80bd47b6ba73835b6046b3aed48 Mon Sep 17 00:00:00 2001 From: 3un0ia Date: Tue, 14 May 2024 21:49:49 +0900 Subject: [PATCH 4/5] style : properties --- src/main/resources/application.properties | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 622df2b..0d3e2f0 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -3,9 +3,9 @@ server.servlet.context-path=/api # Database connection spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver -spring.datasource.url=jdbc:mysql://localhost:3306/tgweb -spring.datasource.username=root -spring.datasource.password=00000000 +spring.datasource.url=jdbc:mysql://localhost:3306/tgwing +spring.datasource.username=tgwing +spring.datasource.password=tgwing spring.jpa.hibernate.naming.implicit-strategy=org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyJpaImpl @@ -18,6 +18,18 @@ spring.jpa.database-platform=org.hibernate.dialect.MySQLDialect spring.jwt.secretKey=2020105622thdtjdgnsdlaksemfdjTdmatlzbflxldjfudnj +spring.mail.host=smtp.gmail.com +spring.mail.port=587 +spring.mail.username=plmko0914@gmail.com +spring.mail.password=jdud mdff zuqd qkhd +spring.mail.properties.mail.smtp.auth=true +spring.mail.properties.mail.smtp.timeout=5000 +spring.mail.properties.mail.smtp.starttls.enable=true + # Web configurations spring.web.locale=ko_KR + +spring.data.redis.port=6379 +spring.data.redis.host=localhost +spring.data.redis.password=1234 From 3fba22246106b362f5729cbec91819b3b6085a53 Mon Sep 17 00:00:00 2001 From: 3un0ia Date: Tue, 14 May 2024 22:07:37 +0900 Subject: [PATCH 5/5] =?UTF-8?q?style=20:=20blog=20base=20uri=20=EC=82=AD?= =?UTF-8?q?=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/kr/tgwing/tech/blog/controller/PostController.java | 1 - src/main/java/kr/tgwing/tech/common/swagger/SwaggerConfig.java | 3 +-- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/src/main/java/kr/tgwing/tech/blog/controller/PostController.java b/src/main/java/kr/tgwing/tech/blog/controller/PostController.java index beafae3..5fa9b58 100644 --- a/src/main/java/kr/tgwing/tech/blog/controller/PostController.java +++ b/src/main/java/kr/tgwing/tech/blog/controller/PostController.java @@ -15,7 +15,6 @@ import java.util.Optional; @RestController -@RequestMapping("/admin") @RequiredArgsConstructor public class PostController { diff --git a/src/main/java/kr/tgwing/tech/common/swagger/SwaggerConfig.java b/src/main/java/kr/tgwing/tech/common/swagger/SwaggerConfig.java index cc6a2ba..b7bab69 100644 --- a/src/main/java/kr/tgwing/tech/common/swagger/SwaggerConfig.java +++ b/src/main/java/kr/tgwing/tech/common/swagger/SwaggerConfig.java @@ -27,8 +27,7 @@ public OpenAPI openAPI() { Server serverDev = new Server(); serverDev.setDescription("dev"); -// serverDev.setUrl("http://ec2-43-200-221-178.ap-northeast-2.compute.amazonaws.com/api"); - serverDev.setUrl("http://localhost:8080/api"); + serverDev.setUrl("http://ec2-43-200-221-178.ap-northeast-2.compute.amazonaws.com/api"); return new OpenAPI() .components(new Components().addSecuritySchemes("bearerAuth", securityScheme)) .security(Arrays.asList(securityRequirement))