From 19db6d669bddb240638580e566abcbba4db42e12 Mon Sep 17 00:00:00 2001 From: "coderabbitai[bot]" <136622811+coderabbitai[bot]@users.noreply.github.com> Date: Thu, 2 Jul 2026 18:03:32 +0000 Subject: [PATCH] =?UTF-8?q?=F0=9F=93=9D=20CodeRabbit=20Chat:=20AccessToken?= =?UTF-8?q?=20=EB=B0=9C=EA=B8=89=20=EC=97=94=EB=93=9C=ED=8F=AC=EC=9D=B8?= =?UTF-8?q?=ED=8A=B8=EB=A5=BC=20POST=EB=A1=9C=20=EB=B3=80=EA=B2=BD?= =?UTF-8?q?=ED=95=98=EA=B3=A0=20Swagger=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../auth/controller/AuthController.java | 37 ++++++++++++++++++- 1 file changed, 35 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/Timo/Timo/global/auth/controller/AuthController.java b/src/main/java/com/Timo/Timo/global/auth/controller/AuthController.java index aac9342..fc82e96 100644 --- a/src/main/java/com/Timo/Timo/global/auth/controller/AuthController.java +++ b/src/main/java/com/Timo/Timo/global/auth/controller/AuthController.java @@ -3,19 +3,28 @@ import com.Timo.Timo.global.auth.handler.AuthErrorResponseWriter; import com.Timo.Timo.global.auth.service.AuthCodeService; import com.Timo.Timo.global.exception.code.ErrorCode; +import com.Timo.Timo.global.exception.dto.ErrorDto; import com.Timo.Timo.global.jwt.provider.JwtTokenProvider; import com.fasterxml.jackson.databind.ObjectMapper; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.media.Content; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.responses.ApiResponse; +import io.swagger.v3.oas.annotations.responses.ApiResponses; +import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.Map; import lombok.RequiredArgsConstructor; import org.springframework.http.MediaType; -import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; +@Tag(name = "Auth", description = "인증 관련 API") @RestController @RequestMapping("/api/auth") @RequiredArgsConstructor @@ -26,8 +35,32 @@ public class AuthController { private final AuthErrorResponseWriter authErrorResponseWriter; private final ObjectMapper objectMapper; - @GetMapping("/token") + @Operation( + summary = "AccessToken 발급", + description = "소셜 로그인 성공 시 발급된 1회용 인증 코드(code)를 통해 AccessToken을 발급합니다. " + + "인증 코드는 1회 사용 후 즉시 만료됩니다." + ) + @ApiResponses({ + @ApiResponse( + responseCode = "200", + description = "AccessToken 발급 성공", + content = @Content( + mediaType = MediaType.APPLICATION_JSON_VALUE, + schema = @Schema(example = "{\"accessToken\": \"eyJhbGciOiJIUzI1NiJ9...\"}") + ) + ), + @ApiResponse( + responseCode = "401", + description = "유효하지 않거나 만료된 인증 코드", + content = @Content( + mediaType = MediaType.APPLICATION_JSON_VALUE, + schema = @Schema(implementation = ErrorDto.class) + ) + ) + }) + @PostMapping("/token") public void token( + @Parameter(description = "소셜 로그인 성공 시 발급된 1회용 인증 코드", required = true) @RequestParam String code, HttpServletRequest request, HttpServletResponse response