From b8cae6cd38f6e1adf392e27f6653b1c1039127b7 Mon Sep 17 00:00:00 2001 From: chahyunsoo Date: Fri, 26 Jul 2024 15:53:59 +0900 Subject: [PATCH 1/4] =?UTF-8?q?[chore]=20swagger=20=EC=9D=98=EC=A1=B4?= =?UTF-8?q?=EC=84=B1=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle | 3 +++ 1 file changed, 3 insertions(+) diff --git a/build.gradle b/build.gradle index 9a358a68..39f8fcc3 100644 --- a/build.gradle +++ b/build.gradle @@ -62,6 +62,9 @@ dependencies { // runtimeOnly 'com.mysql:mysql-connector-j' runtimeOnly 'org.mariadb.jdbc:mariadb-java-client' + //swagger + implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.0.2' + testImplementation 'org.springframework.boot:spring-boot-starter-test' testImplementation 'org.springframework.security:spring-security-test' From 5ad74f3244afbcc0f3b6c5f6bb871752e4995ac8 Mon Sep 17 00:00:00 2001 From: chahyunsoo Date: Fri, 26 Jul 2024 17:28:34 +0900 Subject: [PATCH 2/4] =?UTF-8?q?[feat]=20SwaggerConfig=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../homepage/infra/config/SwaggerConfig.java | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 src/main/java/ussum/homepage/infra/config/SwaggerConfig.java diff --git a/src/main/java/ussum/homepage/infra/config/SwaggerConfig.java b/src/main/java/ussum/homepage/infra/config/SwaggerConfig.java new file mode 100644 index 00000000..84610255 --- /dev/null +++ b/src/main/java/ussum/homepage/infra/config/SwaggerConfig.java @@ -0,0 +1,42 @@ +package ussum.homepage.infra.config; + +import io.swagger.v3.oas.annotations.OpenAPIDefinition; +import io.swagger.v3.oas.models.Components; +import io.swagger.v3.oas.models.OpenAPI; +import io.swagger.v3.oas.models.info.Info; +import io.swagger.v3.oas.models.security.SecurityRequirement; +import io.swagger.v3.oas.models.security.SecurityScheme; +import io.swagger.v3.oas.models.servers.Server; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +@OpenAPIDefinition( + info = @io.swagger.v3.oas.annotations.info.Info( + title = "SoongSil University IT Support" + ,description = "숭실대학교 IT 지원 위원회" + , version = "v1") +) +public class SwaggerConfig { + private static final String BEARER_TOKEN_PREFIX = "Bearer"; + private static final String JWT = "JWT"; + @Bean + public OpenAPI openAPI() { + SecurityRequirement securityRequirement = new SecurityRequirement().addList(JWT); + Components components = new Components().addSecuritySchemes(JWT, new SecurityScheme() + .name(JWT) + .type(SecurityScheme.Type.HTTP) + .scheme(BEARER_TOKEN_PREFIX) + .bearerFormat(JWT) + ); + return new OpenAPI() + .addServersItem(new Server().url("/")) + .components(new Components()) + .info(new Info()) + .addSecurityItem(securityRequirement) + .components(components); + } +} + + + From 74258411f14c3179f1605fe47081a0ee68c80313 Mon Sep 17 00:00:00 2001 From: chahyunsoo Date: Fri, 26 Jul 2024 17:28:46 +0900 Subject: [PATCH 3/4] =?UTF-8?q?[feat]=20swagger=20=EA=B4=80=EB=A0=A8=20pat?= =?UTF-8?q?h=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ussum/homepage/global/config/SecurityConfig.java | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/main/java/ussum/homepage/global/config/SecurityConfig.java b/src/main/java/ussum/homepage/global/config/SecurityConfig.java index 1b32f8f1..b6961803 100644 --- a/src/main/java/ussum/homepage/global/config/SecurityConfig.java +++ b/src/main/java/ussum/homepage/global/config/SecurityConfig.java @@ -25,8 +25,15 @@ public class SecurityConfig { private final JwtAccessDeniedHandler jwtAccessDeniedHandler; private final JwtAuthenticationEntryPoint jwtAuthenticationEntryPoint; -// private static final String[] whiteList = {"/**"}; - private static final String[] whiteList = {"/auth/**", "/onboarding/**"}; + // private static final String[] whiteList = {"/**"}; + private static final String[] whiteList = { + "/auth/**", + "/onboarding/**", + "/swagger-ui/**", + "/swagger-resources/**", + "/v3/api-docs/**" + }; + @Bean public PasswordEncoder passwordEncoder() { From 7fc42a55eac25f0d6f2221020115db9e51d9b3bb Mon Sep 17 00:00:00 2001 From: chahyunsoo Date: Fri, 26 Jul 2024 17:29:19 +0900 Subject: [PATCH 4/4] =?UTF-8?q?[feat]=20post=5Freaction=20api=20swagger=20?= =?UTF-8?q?=EC=84=A4=EC=A0=95=20=EC=98=88=EC=8B=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/PostReactionController.java | 15 +++++++++++++++ .../dto/request/PostReactionCreateRequest.java | 1 - 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/main/java/ussum/homepage/application/reaction/controller/PostReactionController.java b/src/main/java/ussum/homepage/application/reaction/controller/PostReactionController.java index 4b94159a..1ce1e33a 100644 --- a/src/main/java/ussum/homepage/application/reaction/controller/PostReactionController.java +++ b/src/main/java/ussum/homepage/application/reaction/controller/PostReactionController.java @@ -1,5 +1,7 @@ package ussum.homepage.application.reaction.controller; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; import ussum.homepage.application.reaction.service.PostReactionService; @@ -10,9 +12,16 @@ @RequiredArgsConstructor @RequestMapping @RestController +@Tag(name = "post_reaction", description = "게시물 반응 api") public class PostReactionController { private final PostReactionService postReactionService; + @Operation(summary = "게시물 반응 생성 api", description = """ + 게시물 반응을 등록하기 위한 api입니다. + + 요청 json으로 like 또는 unlike를 받습니다. + + """) @PostMapping("/boards/posts/{postId}/reactions") public ApiResponse createPostReaction(@PathVariable(name = "postId") Long postId, @RequestBody PostReactionCreateRequest postReactionCreateRequest) { @@ -20,6 +29,12 @@ public ApiResponse createPostReaction(@PathVariable(name = "postId") Long return ApiResponse.onSuccess(null); } + @Operation(summary = "게시물 반응 삭제 api", description = """ + 게시물 반응을 삭제하기 위한 api입니다. + + 요청 json으로 like 또는 unlike를 받습니다. + + """) @DeleteMapping("/boards/posts/{postId}/reactions") public ApiResponse deletePostReaction(@PathVariable(name = "postId") Long postId, @RequestBody PostReactionCreateRequest postReactionCreateRequest) { diff --git a/src/main/java/ussum/homepage/application/reaction/service/dto/request/PostReactionCreateRequest.java b/src/main/java/ussum/homepage/application/reaction/service/dto/request/PostReactionCreateRequest.java index caec1f53..29d8170f 100644 --- a/src/main/java/ussum/homepage/application/reaction/service/dto/request/PostReactionCreateRequest.java +++ b/src/main/java/ussum/homepage/application/reaction/service/dto/request/PostReactionCreateRequest.java @@ -1,7 +1,6 @@ package ussum.homepage.application.reaction.service.dto.request; import ussum.homepage.domain.postlike.PostReaction; -import ussum.homepage.domain.reaction.PostCommentReaction; public record PostReactionCreateRequest( String reaction