From 6e734f2b92ae1b97c7b0f39e8805857d19b066a0 Mon Sep 17 00:00:00 2001 From: shindw Date: Tue, 24 Feb 2026 12:02:23 +0900 Subject: [PATCH] =?UTF-8?q?[api]=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EC=BB=A4?= =?UTF-8?q?=EB=B0=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle | 2 +- .../api/modules/auth/AuthController.java | 31 +++++++++++++++++++ .../api/modules/auth/form/TokenForm.java | 16 ++++++++++ .../com/alist/api/ApiApplicationTests.java | 2 ++ 4 files changed, 50 insertions(+), 1 deletion(-) create mode 100644 src/main/java/com/alist/api/modules/auth/AuthController.java create mode 100644 src/main/java/com/alist/api/modules/auth/form/TokenForm.java diff --git a/build.gradle b/build.gradle index 6c412ac..b27da4a 100644 --- a/build.gradle +++ b/build.gradle @@ -46,7 +46,7 @@ dependencies { implementation 'org.mariadb.jdbc:mariadb-java-client' // swagger - implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.6.0' + implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.8.0' // MyBatis (Boot 3 전용) implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:3.0.3' diff --git a/src/main/java/com/alist/api/modules/auth/AuthController.java b/src/main/java/com/alist/api/modules/auth/AuthController.java new file mode 100644 index 0000000..1fecc93 --- /dev/null +++ b/src/main/java/com/alist/api/modules/auth/AuthController.java @@ -0,0 +1,31 @@ +package com.alist.api.modules.auth; + +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import com.alist.api.common.response.ApiResponse; +import com.alist.api.common.response.ApiResponseCode; +import com.alist.api.config.jwt.JwtTokenProvider; +import com.alist.api.modules.auth.form.TokenForm; + +import jakarta.validation.Valid; + +@RestController +@RequestMapping("/auth") +public class AuthController { + private final JwtTokenProvider jwtTokenProvider; + + public AuthController(JwtTokenProvider jwtTokenProvider) { + this.jwtTokenProvider = jwtTokenProvider; + } + + @PostMapping("/token") + public ResponseEntity> token(@Valid @RequestBody TokenForm tokenForm) { + String accessToken = jwtTokenProvider.createToken(tokenForm.getUserId()); + + return ApiResponse.entity(accessToken, ApiResponseCode.CODE_2001, "엑세스 토큰"); + } +} diff --git a/src/main/java/com/alist/api/modules/auth/form/TokenForm.java b/src/main/java/com/alist/api/modules/auth/form/TokenForm.java new file mode 100644 index 0000000..a5573e7 --- /dev/null +++ b/src/main/java/com/alist/api/modules/auth/form/TokenForm.java @@ -0,0 +1,16 @@ +package com.alist.api.modules.auth.form; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@Schema(description = "토큰 요청 폼") +public class TokenForm { + + @NotBlank(message = "사용자명은 필수입니다.") + @Schema(description = "사용자명", example = "user123") + private String userId; +} \ No newline at end of file diff --git a/src/test/java/com/alist/api/ApiApplicationTests.java b/src/test/java/com/alist/api/ApiApplicationTests.java index 170e78d..bb6c87a 100644 --- a/src/test/java/com/alist/api/ApiApplicationTests.java +++ b/src/test/java/com/alist/api/ApiApplicationTests.java @@ -2,8 +2,10 @@ package com.alist.api; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.ActiveProfiles; @SpringBootTest +@ActiveProfiles("local") class ApiApplicationTests { @Test