Skip to content

Commit

Permalink
Merge pull request #33 from ssu-student-union/feat/32-swagger
Browse files Browse the repository at this point in the history
[feat] #32 swagger setting
  • Loading branch information
chahyunsoo authored Jul 26, 2024
2 parents 0c966b5 + 7fc42a5 commit 0c5c5c8
Show file tree
Hide file tree
Showing 5 changed files with 69 additions and 3 deletions.
3 changes: 3 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -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'

Expand Down
Original file line number Diff line number Diff line change
@@ -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;
Expand All @@ -10,16 +12,29 @@
@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<Void> createPostReaction(@PathVariable(name = "postId") Long postId,
@RequestBody PostReactionCreateRequest postReactionCreateRequest) {
PostReactionResponse postReaction = postReactionService.createPostReaction(postId, postReactionCreateRequest);
return ApiResponse.onSuccess(null);
}

@Operation(summary = "게시물 반응 삭제 api", description = """
게시물 반응을 삭제하기 위한 api입니다.
요청 json으로 like 또는 unlike를 받습니다.
""")
@DeleteMapping("/boards/posts/{postId}/reactions")
public ApiResponse<Void> deletePostReaction(@PathVariable(name = "postId") Long postId,
@RequestBody PostReactionCreateRequest postReactionCreateRequest) {
Expand Down
Original file line number Diff line number Diff line change
@@ -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
Expand Down
11 changes: 9 additions & 2 deletions src/main/java/ussum/homepage/global/config/SecurityConfig.java
Original file line number Diff line number Diff line change
Expand Up @@ -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() {
Expand Down
42 changes: 42 additions & 0 deletions src/main/java/ussum/homepage/infra/config/SwaggerConfig.java
Original file line number Diff line number Diff line change
@@ -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);
}
}



0 comments on commit 0c5c5c8

Please sign in to comment.