From 481cf1567747cc4f9f9461c4641e9402f2fee684 Mon Sep 17 00:00:00 2001 From: eastmeet Date: Thu, 26 Jan 2023 21:47:21 +0900 Subject: [PATCH] refactor: security configure & pakage --- server/build.gradle | 1 - .../controller/AttractionController.java | 7 +- .../attraction/service/AttractionService.java | 6 +- .../hashtag/controller/HashTagController.java | 9 -- .../pikcha/domain/hashtag/dto/HashTagDto.java | 8 -- .../entity/AttractionImage.java | 2 +- .../entity/PostImage.java | 2 +- .../repository/AttractionImageRepository.java | 4 +- .../repository/PostImageRepository.java | 7 +- .../service/AttractionImageService.java | 6 +- .../service/PostImageService.java | 6 +- .../entity/AttractionLikes.java | 2 +- .../entity/PostLikes.java | 2 +- .../repository/AttractionLikesRepository.java | 4 +- .../repository/PostLikesRepository.java | 4 +- .../post/controller/PostController.java | 6 +- .../pikcha/domain/post/entity/Post.java | 2 +- .../pikcha/domain/post/mapper/PostMapper.java | 3 +- .../post/repository/PostRepository.java | 2 - .../domain/post/service/PostService.java | 11 +- .../post_hashtag/entity/PostHashTag.java | 31 ---- .../security/SecurityConfiguration.java | 118 +++++++++++++++ .../config/SecurityConfiguration.java | 136 ------------------ .../userdetails/MemberDetailsService.java | 75 ---------- server/src/main/resources/application.yml | 2 +- 25 files changed, 147 insertions(+), 309 deletions(-) delete mode 100644 server/src/main/java/com/main36/pikcha/domain/hashtag/controller/HashTagController.java delete mode 100644 server/src/main/java/com/main36/pikcha/domain/hashtag/dto/HashTagDto.java rename server/src/main/java/com/main36/pikcha/domain/{attraction_file => image}/entity/AttractionImage.java (87%) rename server/src/main/java/com/main36/pikcha/domain/{post_image => image}/entity/PostImage.java (88%) rename server/src/main/java/com/main36/pikcha/domain/{attraction_file => image}/repository/AttractionImageRepository.java (66%) rename server/src/main/java/com/main36/pikcha/domain/{post_image => image}/repository/PostImageRepository.java (57%) rename server/src/main/java/com/main36/pikcha/domain/{attraction_file => image}/service/AttractionImageService.java (94%) rename server/src/main/java/com/main36/pikcha/domain/{post_image => image}/service/PostImageService.java (93%) rename server/src/main/java/com/main36/pikcha/domain/{attraction_likes => like}/entity/AttractionLikes.java (93%) rename server/src/main/java/com/main36/pikcha/domain/{post_likes => like}/entity/PostLikes.java (92%) rename server/src/main/java/com/main36/pikcha/domain/{attraction_likes => like}/repository/AttractionLikesRepository.java (83%) rename server/src/main/java/com/main36/pikcha/domain/{post_likes => like}/repository/PostLikesRepository.java (83%) delete mode 100644 server/src/main/java/com/main36/pikcha/domain/post_hashtag/entity/PostHashTag.java create mode 100644 server/src/main/java/com/main36/pikcha/global/security/SecurityConfiguration.java delete mode 100644 server/src/main/java/com/main36/pikcha/global/security/config/SecurityConfiguration.java delete mode 100644 server/src/main/java/com/main36/pikcha/global/security/userdetails/MemberDetailsService.java diff --git a/server/build.gradle b/server/build.gradle index f212c00c..64f17995 100644 --- a/server/build.gradle +++ b/server/build.gradle @@ -25,7 +25,6 @@ dependencies { implementation 'org.springframework.boot:spring-boot-starter-validation' implementation 'org.springframework.boot:spring-boot-starter-jdbc' implementation 'org.springframework.boot:spring-boot-starter-data-jpa' - implementation 'org.springframework.boot:spring-boot-starter-data-redis' implementation 'com.google.code.gson:gson' diff --git a/server/src/main/java/com/main36/pikcha/domain/attraction/controller/AttractionController.java b/server/src/main/java/com/main36/pikcha/domain/attraction/controller/AttractionController.java index 391112de..2660589c 100644 --- a/server/src/main/java/com/main36/pikcha/domain/attraction/controller/AttractionController.java +++ b/server/src/main/java/com/main36/pikcha/domain/attraction/controller/AttractionController.java @@ -5,14 +5,12 @@ import com.main36.pikcha.domain.attraction.entity.Attraction; import com.main36.pikcha.domain.attraction.mapper.AttractionMapper; import com.main36.pikcha.domain.attraction.service.AttractionService; -import com.main36.pikcha.domain.attraction_file.service.AttractionImageService; import com.main36.pikcha.domain.member.entity.Member; import com.main36.pikcha.domain.member.service.MemberService; import com.main36.pikcha.domain.post.dto.PostResponseDto; import com.main36.pikcha.domain.post.entity.Post; import com.main36.pikcha.domain.post.service.PostService; import com.main36.pikcha.global.aop.LoginUser; -import com.main36.pikcha.global.security.jwt.JwtParser; import com.main36.pikcha.global.response.DataResponseDto; import com.main36.pikcha.global.response.MultiResponseDto; @@ -26,8 +24,6 @@ import org.springframework.web.bind.annotation.*; -import javax.servlet.http.Cookie; -import javax.servlet.http.HttpServletRequest; import javax.validation.constraints.Positive; import java.io.IOException; @@ -228,9 +224,8 @@ public ResponseEntity> getSearchedAttractions(@Positive @Req mapper.attractionsToAttractionResponseDtos(attractions), attractionPage), HttpStatus.OK); } - // 6. 명소를 아예 삭제하는 요청을 처리하는 핸들러 - @DeleteMapping("/{attraction-id}") + @DeleteMapping("/delete/{attraction-id}") public ResponseEntity deleteAttraction(@PathVariable("attraction-id") @Positive long attractionId) { attractionService.deleteAttraction(attractionId); diff --git a/server/src/main/java/com/main36/pikcha/domain/attraction/service/AttractionService.java b/server/src/main/java/com/main36/pikcha/domain/attraction/service/AttractionService.java index 475d8181..72a60d60 100644 --- a/server/src/main/java/com/main36/pikcha/domain/attraction/service/AttractionService.java +++ b/server/src/main/java/com/main36/pikcha/domain/attraction/service/AttractionService.java @@ -2,9 +2,9 @@ import com.main36.pikcha.domain.attraction.entity.Attraction; import com.main36.pikcha.domain.attraction.repository.AttractionRepository; -import com.main36.pikcha.domain.attraction_file.service.AttractionImageService; -import com.main36.pikcha.domain.attraction_likes.entity.AttractionLikes; -import com.main36.pikcha.domain.attraction_likes.repository.AttractionLikesRepository; +import com.main36.pikcha.domain.image.service.AttractionImageService; +import com.main36.pikcha.domain.like.entity.AttractionLikes; +import com.main36.pikcha.domain.like.repository.AttractionLikesRepository; import com.main36.pikcha.domain.member.entity.Member; import com.main36.pikcha.domain.save.entity.Save; import com.main36.pikcha.domain.save.repository.SaveRepository; diff --git a/server/src/main/java/com/main36/pikcha/domain/hashtag/controller/HashTagController.java b/server/src/main/java/com/main36/pikcha/domain/hashtag/controller/HashTagController.java deleted file mode 100644 index de50ebf2..00000000 --- a/server/src/main/java/com/main36/pikcha/domain/hashtag/controller/HashTagController.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.main36.pikcha.domain.hashtag.controller; - -import org.springframework.web.bind.annotation.RestController; - -@RestController -public class HashTagController { - - -} diff --git a/server/src/main/java/com/main36/pikcha/domain/hashtag/dto/HashTagDto.java b/server/src/main/java/com/main36/pikcha/domain/hashtag/dto/HashTagDto.java deleted file mode 100644 index 2797053b..00000000 --- a/server/src/main/java/com/main36/pikcha/domain/hashtag/dto/HashTagDto.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.main36.pikcha.domain.hashtag.dto; - - -import lombok.Data; - -@Data -public class HashTagDto { -} diff --git a/server/src/main/java/com/main36/pikcha/domain/attraction_file/entity/AttractionImage.java b/server/src/main/java/com/main36/pikcha/domain/image/entity/AttractionImage.java similarity index 87% rename from server/src/main/java/com/main36/pikcha/domain/attraction_file/entity/AttractionImage.java rename to server/src/main/java/com/main36/pikcha/domain/image/entity/AttractionImage.java index 24049f48..c4a53457 100644 --- a/server/src/main/java/com/main36/pikcha/domain/attraction_file/entity/AttractionImage.java +++ b/server/src/main/java/com/main36/pikcha/domain/image/entity/AttractionImage.java @@ -1,4 +1,4 @@ -package com.main36.pikcha.domain.attraction_file.entity; +package com.main36.pikcha.domain.image.entity; import lombok.*; diff --git a/server/src/main/java/com/main36/pikcha/domain/post_image/entity/PostImage.java b/server/src/main/java/com/main36/pikcha/domain/image/entity/PostImage.java similarity index 88% rename from server/src/main/java/com/main36/pikcha/domain/post_image/entity/PostImage.java rename to server/src/main/java/com/main36/pikcha/domain/image/entity/PostImage.java index c60d0dea..c52c8fab 100644 --- a/server/src/main/java/com/main36/pikcha/domain/post_image/entity/PostImage.java +++ b/server/src/main/java/com/main36/pikcha/domain/image/entity/PostImage.java @@ -1,4 +1,4 @@ -package com.main36.pikcha.domain.post_image.entity; +package com.main36.pikcha.domain.image.entity; import com.main36.pikcha.domain.post.entity.Post; import lombok.Getter; diff --git a/server/src/main/java/com/main36/pikcha/domain/attraction_file/repository/AttractionImageRepository.java b/server/src/main/java/com/main36/pikcha/domain/image/repository/AttractionImageRepository.java similarity index 66% rename from server/src/main/java/com/main36/pikcha/domain/attraction_file/repository/AttractionImageRepository.java rename to server/src/main/java/com/main36/pikcha/domain/image/repository/AttractionImageRepository.java index 5361e6cd..a54dbaea 100644 --- a/server/src/main/java/com/main36/pikcha/domain/attraction_file/repository/AttractionImageRepository.java +++ b/server/src/main/java/com/main36/pikcha/domain/image/repository/AttractionImageRepository.java @@ -1,6 +1,6 @@ -package com.main36.pikcha.domain.attraction_file.repository; +package com.main36.pikcha.domain.image.repository; -import com.main36.pikcha.domain.attraction_file.entity.AttractionImage; +import com.main36.pikcha.domain.image.entity.AttractionImage; import org.springframework.data.jpa.repository.JpaRepository; import java.util.Optional; diff --git a/server/src/main/java/com/main36/pikcha/domain/post_image/repository/PostImageRepository.java b/server/src/main/java/com/main36/pikcha/domain/image/repository/PostImageRepository.java similarity index 57% rename from server/src/main/java/com/main36/pikcha/domain/post_image/repository/PostImageRepository.java rename to server/src/main/java/com/main36/pikcha/domain/image/repository/PostImageRepository.java index aa8a9e8c..67f2d8cc 100644 --- a/server/src/main/java/com/main36/pikcha/domain/post_image/repository/PostImageRepository.java +++ b/server/src/main/java/com/main36/pikcha/domain/image/repository/PostImageRepository.java @@ -1,10 +1,7 @@ -package com.main36.pikcha.domain.post_image.repository; +package com.main36.pikcha.domain.image.repository; -import com.main36.pikcha.domain.post_image.entity.PostImage; +import com.main36.pikcha.domain.image.entity.PostImage; import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.data.jpa.repository.Query; - -import java.util.List; public interface PostImageRepository extends JpaRepository { diff --git a/server/src/main/java/com/main36/pikcha/domain/attraction_file/service/AttractionImageService.java b/server/src/main/java/com/main36/pikcha/domain/image/service/AttractionImageService.java similarity index 94% rename from server/src/main/java/com/main36/pikcha/domain/attraction_file/service/AttractionImageService.java rename to server/src/main/java/com/main36/pikcha/domain/image/service/AttractionImageService.java index 122abef3..86ebe779 100644 --- a/server/src/main/java/com/main36/pikcha/domain/attraction_file/service/AttractionImageService.java +++ b/server/src/main/java/com/main36/pikcha/domain/image/service/AttractionImageService.java @@ -1,7 +1,7 @@ -package com.main36.pikcha.domain.attraction_file.service; +package com.main36.pikcha.domain.image.service; -import com.main36.pikcha.domain.attraction_file.entity.AttractionImage; -import com.main36.pikcha.domain.attraction_file.repository.AttractionImageRepository; +import com.main36.pikcha.domain.image.entity.AttractionImage; +import com.main36.pikcha.domain.image.repository.AttractionImageRepository; import com.main36.pikcha.global.config.S3Service; import com.main36.pikcha.global.exception.BusinessLogicException; import com.main36.pikcha.global.exception.ExceptionCode; diff --git a/server/src/main/java/com/main36/pikcha/domain/post_image/service/PostImageService.java b/server/src/main/java/com/main36/pikcha/domain/image/service/PostImageService.java similarity index 93% rename from server/src/main/java/com/main36/pikcha/domain/post_image/service/PostImageService.java rename to server/src/main/java/com/main36/pikcha/domain/image/service/PostImageService.java index b6a79cb8..e299507a 100644 --- a/server/src/main/java/com/main36/pikcha/domain/post_image/service/PostImageService.java +++ b/server/src/main/java/com/main36/pikcha/domain/image/service/PostImageService.java @@ -1,7 +1,7 @@ -package com.main36.pikcha.domain.post_image.service; +package com.main36.pikcha.domain.image.service; -import com.main36.pikcha.domain.post_image.entity.PostImage; -import com.main36.pikcha.domain.post_image.repository.PostImageRepository; +import com.main36.pikcha.domain.image.entity.PostImage; +import com.main36.pikcha.domain.image.repository.PostImageRepository; import com.main36.pikcha.global.config.S3Service; import com.main36.pikcha.global.exception.BusinessLogicException; import com.main36.pikcha.global.exception.ExceptionCode; diff --git a/server/src/main/java/com/main36/pikcha/domain/attraction_likes/entity/AttractionLikes.java b/server/src/main/java/com/main36/pikcha/domain/like/entity/AttractionLikes.java similarity index 93% rename from server/src/main/java/com/main36/pikcha/domain/attraction_likes/entity/AttractionLikes.java rename to server/src/main/java/com/main36/pikcha/domain/like/entity/AttractionLikes.java index 557d5f0b..5de5ef4d 100644 --- a/server/src/main/java/com/main36/pikcha/domain/attraction_likes/entity/AttractionLikes.java +++ b/server/src/main/java/com/main36/pikcha/domain/like/entity/AttractionLikes.java @@ -1,4 +1,4 @@ -package com.main36.pikcha.domain.attraction_likes.entity; +package com.main36.pikcha.domain.like.entity; import com.main36.pikcha.domain.attraction.entity.Attraction; import com.main36.pikcha.domain.member.entity.Member; diff --git a/server/src/main/java/com/main36/pikcha/domain/post_likes/entity/PostLikes.java b/server/src/main/java/com/main36/pikcha/domain/like/entity/PostLikes.java similarity index 92% rename from server/src/main/java/com/main36/pikcha/domain/post_likes/entity/PostLikes.java rename to server/src/main/java/com/main36/pikcha/domain/like/entity/PostLikes.java index 7627c0d0..eee1c628 100644 --- a/server/src/main/java/com/main36/pikcha/domain/post_likes/entity/PostLikes.java +++ b/server/src/main/java/com/main36/pikcha/domain/like/entity/PostLikes.java @@ -1,4 +1,4 @@ -package com.main36.pikcha.domain.post_likes.entity; +package com.main36.pikcha.domain.like.entity; import com.main36.pikcha.domain.member.entity.Member; diff --git a/server/src/main/java/com/main36/pikcha/domain/attraction_likes/repository/AttractionLikesRepository.java b/server/src/main/java/com/main36/pikcha/domain/like/repository/AttractionLikesRepository.java similarity index 83% rename from server/src/main/java/com/main36/pikcha/domain/attraction_likes/repository/AttractionLikesRepository.java rename to server/src/main/java/com/main36/pikcha/domain/like/repository/AttractionLikesRepository.java index 361ed333..8dc312d8 100644 --- a/server/src/main/java/com/main36/pikcha/domain/attraction_likes/repository/AttractionLikesRepository.java +++ b/server/src/main/java/com/main36/pikcha/domain/like/repository/AttractionLikesRepository.java @@ -1,7 +1,7 @@ -package com.main36.pikcha.domain.attraction_likes.repository; +package com.main36.pikcha.domain.like.repository; import com.main36.pikcha.domain.attraction.entity.Attraction; -import com.main36.pikcha.domain.attraction_likes.entity.AttractionLikes; +import com.main36.pikcha.domain.like.entity.AttractionLikes; import com.main36.pikcha.domain.member.entity.Member; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; diff --git a/server/src/main/java/com/main36/pikcha/domain/post_likes/repository/PostLikesRepository.java b/server/src/main/java/com/main36/pikcha/domain/like/repository/PostLikesRepository.java similarity index 83% rename from server/src/main/java/com/main36/pikcha/domain/post_likes/repository/PostLikesRepository.java rename to server/src/main/java/com/main36/pikcha/domain/like/repository/PostLikesRepository.java index 980c9872..96905a8a 100644 --- a/server/src/main/java/com/main36/pikcha/domain/post_likes/repository/PostLikesRepository.java +++ b/server/src/main/java/com/main36/pikcha/domain/like/repository/PostLikesRepository.java @@ -1,8 +1,8 @@ -package com.main36.pikcha.domain.post_likes.repository; +package com.main36.pikcha.domain.like.repository; import com.main36.pikcha.domain.member.entity.Member; import com.main36.pikcha.domain.post.entity.Post; -import com.main36.pikcha.domain.post_likes.entity.PostLikes; +import com.main36.pikcha.domain.like.entity.PostLikes; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; diff --git a/server/src/main/java/com/main36/pikcha/domain/post/controller/PostController.java b/server/src/main/java/com/main36/pikcha/domain/post/controller/PostController.java index 45201996..efae65ce 100644 --- a/server/src/main/java/com/main36/pikcha/domain/post/controller/PostController.java +++ b/server/src/main/java/com/main36/pikcha/domain/post/controller/PostController.java @@ -15,10 +15,9 @@ import com.main36.pikcha.domain.post.service.PostService; -import com.main36.pikcha.domain.post_image.entity.PostImage; -import com.main36.pikcha.domain.post_image.service.PostImageService; +import com.main36.pikcha.domain.image.entity.PostImage; +import com.main36.pikcha.domain.image.service.PostImageService; import com.main36.pikcha.global.aop.LoginUser; -import com.main36.pikcha.global.config.S3Service; import com.main36.pikcha.global.exception.BusinessLogicException; @@ -35,7 +34,6 @@ import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletRequest; -import javax.validation.Valid; import javax.validation.constraints.Positive; import java.io.IOException; diff --git a/server/src/main/java/com/main36/pikcha/domain/post/entity/Post.java b/server/src/main/java/com/main36/pikcha/domain/post/entity/Post.java index de185f7b..b11998e3 100644 --- a/server/src/main/java/com/main36/pikcha/domain/post/entity/Post.java +++ b/server/src/main/java/com/main36/pikcha/domain/post/entity/Post.java @@ -4,7 +4,7 @@ import com.main36.pikcha.domain.comment.entity.Comment; import com.main36.pikcha.domain.hashtag.entity.HashTag; import com.main36.pikcha.domain.member.entity.Member; -import com.main36.pikcha.domain.post_image.entity.PostImage; +import com.main36.pikcha.domain.image.entity.PostImage; import com.main36.pikcha.global.audit.Auditable; import lombok.*; diff --git a/server/src/main/java/com/main36/pikcha/domain/post/mapper/PostMapper.java b/server/src/main/java/com/main36/pikcha/domain/post/mapper/PostMapper.java index a02afd65..c979a4ad 100644 --- a/server/src/main/java/com/main36/pikcha/domain/post/mapper/PostMapper.java +++ b/server/src/main/java/com/main36/pikcha/domain/post/mapper/PostMapper.java @@ -5,11 +5,10 @@ import com.main36.pikcha.domain.hashtag.entity.HashTag; import com.main36.pikcha.domain.post.dto.*; import com.main36.pikcha.domain.post.entity.Post; -import com.main36.pikcha.domain.post_image.entity.PostImage; +import com.main36.pikcha.domain.image.entity.PostImage; import org.mapstruct.Mapper; import org.mapstruct.MappingConstants; -import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; diff --git a/server/src/main/java/com/main36/pikcha/domain/post/repository/PostRepository.java b/server/src/main/java/com/main36/pikcha/domain/post/repository/PostRepository.java index dfdfa4d9..206d8e2e 100644 --- a/server/src/main/java/com/main36/pikcha/domain/post/repository/PostRepository.java +++ b/server/src/main/java/com/main36/pikcha/domain/post/repository/PostRepository.java @@ -1,8 +1,6 @@ package com.main36.pikcha.domain.post.repository; -import com.main36.pikcha.domain.attraction.entity.Attraction; import com.main36.pikcha.domain.post.entity.Post; -import com.main36.pikcha.domain.post_image.entity.PostImage; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.JpaRepository; diff --git a/server/src/main/java/com/main36/pikcha/domain/post/service/PostService.java b/server/src/main/java/com/main36/pikcha/domain/post/service/PostService.java index 2fe7ac0a..dbf5552a 100644 --- a/server/src/main/java/com/main36/pikcha/domain/post/service/PostService.java +++ b/server/src/main/java/com/main36/pikcha/domain/post/service/PostService.java @@ -1,19 +1,15 @@ package com.main36.pikcha.domain.post.service; -import com.amazonaws.AmazonServiceException; -import com.main36.pikcha.domain.hashtag.entity.HashTag; import com.main36.pikcha.domain.member.entity.Member; import com.main36.pikcha.domain.post.entity.Post; import com.main36.pikcha.domain.post.repository.PostRepository; -import com.main36.pikcha.domain.post_image.entity.PostImage; -import com.main36.pikcha.domain.post_likes.entity.PostLikes; -import com.main36.pikcha.domain.post_likes.repository.PostLikesRepository; +import com.main36.pikcha.domain.like.entity.PostLikes; +import com.main36.pikcha.domain.like.repository.PostLikesRepository; import com.main36.pikcha.global.exception.BusinessLogicException; import com.main36.pikcha.global.exception.ExceptionCode; -import com.main36.pikcha.global.response.MultiResponseDto; import lombok.RequiredArgsConstructor; import org.springframework.data.domain.Page; @@ -22,10 +18,7 @@ import org.springframework.data.domain.Sort; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import org.springframework.web.multipart.MultipartFile; -import java.io.IOException; -import java.util.ArrayList; import java.util.List; import java.util.Optional; diff --git a/server/src/main/java/com/main36/pikcha/domain/post_hashtag/entity/PostHashTag.java b/server/src/main/java/com/main36/pikcha/domain/post_hashtag/entity/PostHashTag.java deleted file mode 100644 index 7d142eea..00000000 --- a/server/src/main/java/com/main36/pikcha/domain/post_hashtag/entity/PostHashTag.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.main36.pikcha.domain.post_hashtag.entity; - - -import com.main36.pikcha.domain.hashtag.entity.HashTag; -import com.main36.pikcha.domain.post.entity.Post; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Getter; -import lombok.NoArgsConstructor; - -import javax.persistence.*; - -@Getter -@Builder -@NoArgsConstructor -@AllArgsConstructor -@Entity -public class PostHashTag { - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - private long postHashTagId; - - @ManyToOne - @JoinColumn(name = "hash_tag_id") - private HashTag hashTag; - - @ManyToOne - @JoinColumn(name = "post_id") - private Post post; -} diff --git a/server/src/main/java/com/main36/pikcha/global/security/SecurityConfiguration.java b/server/src/main/java/com/main36/pikcha/global/security/SecurityConfiguration.java new file mode 100644 index 00000000..5dcc1be9 --- /dev/null +++ b/server/src/main/java/com/main36/pikcha/global/security/SecurityConfiguration.java @@ -0,0 +1,118 @@ +package com.main36.pikcha.global.security; + + +import com.main36.pikcha.domain.member.repository.MemberRepository; +import com.main36.pikcha.domain.member.service.MemberService; +import com.main36.pikcha.global.security.filter.JwtAuthenticationFilter; +import com.main36.pikcha.global.security.filter.JwtVerificationFilter; +import com.main36.pikcha.global.security.jwt.JwtGenerator; +import com.main36.pikcha.global.security.handler.*; +import com.main36.pikcha.global.security.jwt.JwtParser; +import com.main36.pikcha.global.security.oauth.OAuth2MemberSuccessHandler; +import com.main36.pikcha.global.security.oauth.OauthService; +import com.main36.pikcha.global.utils.CustomAuthorityUtils; +import lombok.RequiredArgsConstructor; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.security.authentication.AuthenticationManager; +import org.springframework.security.config.annotation.web.builders.HttpSecurity; +import org.springframework.security.config.annotation.web.configurers.AbstractHttpConfigurer; +import org.springframework.security.config.http.SessionCreationPolicy; +import org.springframework.security.oauth2.client.web.OAuth2LoginAuthenticationFilter; +import org.springframework.security.web.SecurityFilterChain; +import org.springframework.web.cors.CorsConfiguration; +import org.springframework.web.cors.CorsConfigurationSource; +import org.springframework.web.cors.UrlBasedCorsConfigurationSource; + +import java.util.Arrays; +import java.util.List; + +import static org.springframework.boot.autoconfigure.security.servlet.PathRequest.toH2Console; + + +@Configuration +@RequiredArgsConstructor +public class SecurityConfiguration { + private final JwtParser jwtParser; + private final JwtGenerator jwtGenerator; + private final CustomAuthorityUtils customAuthorityUtils; + private final MemberService memberService; + private final OauthService oauthService; + + @Bean + public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { + http + + .httpBasic().disable() + .formLogin().disable() + .csrf().disable() + .headers().frameOptions().sameOrigin() + + .and() + .cors().configurationSource(corsConfigurationSource()) + + .and() + .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS) + + .and() + .exceptionHandling() + .authenticationEntryPoint(new MemberAuthenticationEntryPoint()) + .accessDeniedHandler(new MemberAccessDeniedHandler()) + + .and() + .apply(new CustomFilterConfigure()) + + .and() + .authorizeHttpRequests(authorize -> authorize + .requestMatchers(toH2Console()).permitAll() + .antMatchers("attractions/upload", "attractions/edit/**", "attractions/delete", "admin").hasRole("ADMIN") + .anyRequest().permitAll()) + + .oauth2Login(oauth2 -> oauth2 + .successHandler(new OAuth2MemberSuccessHandler(customAuthorityUtils, memberService, jwtGenerator)) + .userInfoEndpoint() + .userService(oauthService)); + + return http.build(); + } + + @Bean + CorsConfigurationSource corsConfigurationSource() { + CorsConfiguration configuration = new CorsConfiguration(); + configuration.setAllowedOrigins( + List.of( + "http://localhost:3000", + "http://pikcha36.o-r.kr/", + "https://pikcha36.o-r.kr/") + ); + configuration.setAllowCredentials(true); + configuration.addExposedHeader("Authorization"); + configuration.addAllowedHeader("*"); + configuration.setAllowedMethods(Arrays.asList("GET", "POST", "PATCH", "DELETE")); + + UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); + source.registerCorsConfiguration("/**", configuration); + + return source; + } + + public class CustomFilterConfigure extends AbstractHttpConfigurer { + @Override + public void configure(HttpSecurity builder) throws Exception { + AuthenticationManager authenticationManager = builder.getSharedObject(AuthenticationManager.class); + + JwtAuthenticationFilter jwtAuthenticationFilter = new JwtAuthenticationFilter(jwtGenerator, authenticationManager); + jwtAuthenticationFilter.setFilterProcessesUrl("/login"); + jwtAuthenticationFilter.setAuthenticationSuccessHandler(new MemberAuthenticationSuccessHandler()); + jwtAuthenticationFilter.setAuthenticationFailureHandler(new MemberAuthenticationFailureHandler()); + + JwtVerificationFilter jwtVerificationFilter = new JwtVerificationFilter(jwtGenerator, jwtParser); + + builder + .addFilter(jwtAuthenticationFilter) + .addFilterAfter(jwtVerificationFilter, OAuth2LoginAuthenticationFilter.class); + + } + } +} + diff --git a/server/src/main/java/com/main36/pikcha/global/security/config/SecurityConfiguration.java b/server/src/main/java/com/main36/pikcha/global/security/config/SecurityConfiguration.java deleted file mode 100644 index bca63654..00000000 --- a/server/src/main/java/com/main36/pikcha/global/security/config/SecurityConfiguration.java +++ /dev/null @@ -1,136 +0,0 @@ -package com.main36.pikcha.global.security.config; - - -import com.main36.pikcha.domain.member.repository.MemberRepository; -import com.main36.pikcha.domain.member.service.MemberService; -import com.main36.pikcha.global.security.filter.JwtAuthenticationFilter; -import com.main36.pikcha.global.security.filter.JwtVerificationFilter; -import com.main36.pikcha.global.security.jwt.JwtGenerator; -import com.main36.pikcha.global.security.handler.*; -import com.main36.pikcha.global.security.jwt.JwtParser; -import com.main36.pikcha.global.security.oauth.OAuth2MemberSuccessHandler; -import com.main36.pikcha.global.security.oauth.OauthService; -import com.main36.pikcha.global.utils.CustomAuthorityUtils; -import lombok.RequiredArgsConstructor; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.security.authentication.AuthenticationManager; -import org.springframework.security.config.annotation.web.builders.HttpSecurity; -import org.springframework.security.config.annotation.web.configurers.AbstractHttpConfigurer; -import org.springframework.security.config.http.SessionCreationPolicy; -import org.springframework.security.oauth2.client.web.OAuth2LoginAuthenticationFilter; -import org.springframework.security.web.SecurityFilterChain; -import org.springframework.web.cors.CorsConfiguration; -import org.springframework.web.cors.CorsConfigurationSource; -import org.springframework.web.cors.UrlBasedCorsConfigurationSource; - -import java.util.Arrays; -import java.util.List; - -import static org.springframework.boot.autoconfigure.security.servlet.PathRequest.toH2Console; - - -@Configuration -@RequiredArgsConstructor -public class SecurityConfiguration { - private final JwtParser jwtParser; - private final JwtGenerator jwtGenerator; - - private final CustomAuthorityUtils customAuthorityUtils; - private final MemberService memberService; - private final OauthService oauthService; - - @Bean - public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { - http - .httpBasic().disable() - .formLogin().disable() - .csrf().disable() - .headers().frameOptions().sameOrigin() -// .headers().frameOptions().disable() // h2 console 접속용 - .and() - .cors().configurationSource(corsConfigurationSource()) - - .and() - .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS) - - .and() - .exceptionHandling() - .authenticationEntryPoint(new MemberAuthenticationEntryPoint()) - .accessDeniedHandler(new MemberAccessDeniedHandler()) - - .and() - .apply(new CustomFilterConfigure()) - .and() - .authorizeHttpRequests(authorize -> authorize - .antMatchers( - "/", - "/signup", - "/login", - "/token/refresh/**", - "/token/refresh/*", - "/attractions", "/attractions/**", - "/posts", "/posts/*", "/posts/**", - "/comments", "/comments/*", - "/oauth2/authorization/*", - "/receive-token.html/**" - ).permitAll() - .antMatchers("admin").hasRole("ADMIN") - .requestMatchers(toH2Console()).permitAll() - .anyRequest().authenticated() - ) - .oauth2Login(oauth2 -> oauth2 - .successHandler(new OAuth2MemberSuccessHandler(customAuthorityUtils, memberService, jwtGenerator)) - .userInfoEndpoint() - .userService(oauthService)); - -// .successHandler(oAuth2AuthenticationSuccessHandler) -// .userInfoEndpoint() -// .userService(userOAuth2Service); -// .successHandler(new OAuth2MemberSuccessHandler(jwtProvider)) -// .userInfoEndpoint()); // OAuth2 로그인 성공 이후 사용자 정보를 가져올 때 설정 담당 - // OAuth2 로그인 설정 시작점 - - return http.build(); - } - - @Bean - CorsConfigurationSource corsConfigurationSource() { - CorsConfiguration configuration = new CorsConfiguration(); - configuration.setAllowedOrigins( - List.of( - "http://localhost:3000", - "https://pikcha36.o-r.kr/", - "http://pikcha36.o-r.kr/") - ); - configuration.setAllowCredentials(true); - configuration.addExposedHeader("Authorization"); - configuration.addAllowedHeader("*"); - configuration.setAllowedMethods(Arrays.asList("GET", "POST", "PATCH", "DELETE")); - - UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); - source.registerCorsConfiguration("/**", configuration); - - return source; - } - - public class CustomFilterConfigure extends AbstractHttpConfigurer { - @Override - public void configure(HttpSecurity builder) throws Exception { - AuthenticationManager authenticationManager = builder.getSharedObject(AuthenticationManager.class); - - JwtAuthenticationFilter jwtAuthenticationFilter = new JwtAuthenticationFilter(jwtGenerator, authenticationManager); - jwtAuthenticationFilter.setFilterProcessesUrl("/login"); - jwtAuthenticationFilter.setAuthenticationSuccessHandler(new MemberAuthenticationSuccessHandler()); - jwtAuthenticationFilter.setAuthenticationFailureHandler(new MemberAuthenticationFailureHandler()); - - JwtVerificationFilter jwtVerificationFilter = new JwtVerificationFilter(jwtGenerator, jwtParser); - - builder - .addFilter(jwtAuthenticationFilter) - .addFilterAfter(jwtVerificationFilter, OAuth2LoginAuthenticationFilter.class); - - } - } -} - diff --git a/server/src/main/java/com/main36/pikcha/global/security/userdetails/MemberDetailsService.java b/server/src/main/java/com/main36/pikcha/global/security/userdetails/MemberDetailsService.java deleted file mode 100644 index 8fcefc62..00000000 --- a/server/src/main/java/com/main36/pikcha/global/security/userdetails/MemberDetailsService.java +++ /dev/null @@ -1,75 +0,0 @@ -//package com.main36.picha.global.authorization.userdetails; -// -//import com.main36.picha.domain.member.entity.Member; -//import com.main36.picha.domain.member.repository.MemberRepository; -//import com.main36.picha.global.exception.BusinessLogicException; -// -//import com.main36.picha.global.exception.ExceptionCode; -//import com.main36.picha.global.utils.CustomAuthorityUtils; -//import lombok.RequiredArgsConstructor; -// -//import org.springframework.security.core.GrantedAuthority; -//import org.springframework.security.core.userdetails.UserDetails; -//import org.springframework.security.core.userdetails.UserDetailsService; -//import org.springframework.security.core.userdetails.UsernameNotFoundException; -//import org.springframework.stereotype.Component; -// -//import java.util.Collection; -//import java.util.Optional; -// -//@Component -//@RequiredArgsConstructor -//public class MemberDetailsService implements UserDetailsService { -// -// private final MemberRepository memberRepository; -// private final CustomAuthorityUtils authorityUtils; -// -// @Override -// public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { -// Optional optionalMember = memberRepository.findByEmail(username); -// Member findMember = optionalMember.orElseThrow( -// () -> new BusinessLogicException(ExceptionCode.MEMBER_NOT_FOUND)); -// return new MemberDetails(findMember); -// } -// -// private final class MemberDetails extends Member implements UserDetails { -// MemberDetails(Member member) { -// setMemberId(member.getMemberId()); -// setEmail(member.getEmail()); -// setPassword(member.getPassword()); -// setRoles(member.getRoles()); -// } -// -// @Override -// public Collection getAuthorities() { -// return authorityUtils.createAuthorities(this.getRoles()); -// } -// -// @Override -// public String getUsername() { -// return getEmail(); -// } -// -// @Override -// public boolean isAccountNonExpired() { -// return true; -// } -// -// @Override -// public boolean isAccountNonLocked() { -// return true; -// } -// -// @Override -// public boolean isCredentialsNonExpired() { -// return true; -// } -// -// @Override -// public boolean isEnabled() { -// return true; -// } -// } -// -// -//} diff --git a/server/src/main/resources/application.yml b/server/src/main/resources/application.yml index 03c30d37..d74c444c 100644 --- a/server/src/main/resources/application.yml +++ b/server/src/main/resources/application.yml @@ -1,3 +1,3 @@ spring: profiles: - active: test + active: local