From 9298290e7e5b50517f01716e29201561ec9c7adf Mon Sep 17 00:00:00 2001 From: bjkim Date: Tue, 12 Aug 2025 13:15:15 +0900 Subject: [PATCH] =?UTF-8?q?[ADD]=20SWAGGER=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../autoflow/controllers/AuthController.java | 70 ++++++++++--------- 1 file changed, 38 insertions(+), 32 deletions(-) diff --git a/src/main/java/kr/re/etri/autoflow/controllers/AuthController.java b/src/main/java/kr/re/etri/autoflow/controllers/AuthController.java index 2ee0ca5..c58b44b 100644 --- a/src/main/java/kr/re/etri/autoflow/controllers/AuthController.java +++ b/src/main/java/kr/re/etri/autoflow/controllers/AuthController.java @@ -1,8 +1,6 @@ package kr.re.etri.autoflow.controllers; -import java.util.HashSet; -import java.util.List; -import java.util.Set; +import java.util.*; import java.util.stream.Collectors; import io.swagger.v3.oas.annotations.Parameter; @@ -72,37 +70,45 @@ public class AuthController { }) @PostMapping("/signin") public ResponseEntity authenticateUser(@Valid @RequestBody LoginRequest loginRequest) { - Authentication authentication = authenticationManager.authenticate( - new UsernamePasswordAuthenticationToken(loginRequest.getUsername(), loginRequest.getPassword()) - ); - - SecurityContextHolder.getContext().setAuthentication(authentication); - UserDetailsImpl userDetails = (UserDetailsImpl) authentication.getPrincipal(); - - // 기존 refresh token 제거 - refreshTokenService.deleteByUserId(userDetails.getId()); - - // 새 JWT 및 RefreshToken 생성 - ResponseCookie jwtCookie = jwtUtils.generateJwtCookie(userDetails); - RefreshToken refreshToken = refreshTokenService.createRefreshToken(userDetails.getId()); - ResponseCookie jwtRefreshCookie = jwtUtils.generateRefreshJwtCookie(refreshToken.getToken()); - - List roles = userDetails.getAuthorities().stream() - .map(GrantedAuthority::getAuthority) - .collect(Collectors.toList()); - - return ResponseEntity.ok() - .header(HttpHeaders.SET_COOKIE, jwtCookie.toString()) - .header(HttpHeaders.SET_COOKIE, jwtRefreshCookie.toString()) - .body(new UserInfoResponse( - userDetails.getId(), - userDetails.getUsername(), - userDetails.getEmail(), - roles - )); + Authentication authentication = authenticationManager.authenticate( + new UsernamePasswordAuthenticationToken(loginRequest.getUsername(), loginRequest.getPassword()) + ); + + SecurityContextHolder.getContext().setAuthentication(authentication); + UserDetailsImpl userDetails = (UserDetailsImpl) authentication.getPrincipal(); + + // 기존 refresh token 제거 + refreshTokenService.deleteByUserId(userDetails.getId()); + + // 새 JWT 및 RefreshToken 생성 + ResponseCookie jwtCookie = jwtUtils.generateJwtCookie(userDetails); + RefreshToken refreshToken = refreshTokenService.createRefreshToken(userDetails.getId()); + ResponseCookie jwtRefreshCookie = jwtUtils.generateRefreshJwtCookie(refreshToken.getToken()); + + List roles = userDetails.getAuthorities().stream() + .map(GrantedAuthority::getAuthority) + .toList(); + + UserInfoResponse userInfo = new UserInfoResponse( + userDetails.getId(), + userDetails.getUsername(), + userDetails.getEmail(), + userDetails.getAuthorities().stream() + .map(GrantedAuthority::getAuthority) + .collect(Collectors.toList()) + ); + + // 응답 바디에 userInfo와 쿠키 문자열 같이 넣기 + Map responseBody = new HashMap<>(); + responseBody.put("userInfo", userInfo); + responseBody.put("jwtCookie", jwtCookie.toString()); + responseBody.put("jwtRefreshCookie", jwtRefreshCookie.toString()); + + return ResponseEntity.ok(responseBody); } - @Operation(summary = "회원가입", description = "새로운 사용자를 등록합니다.") + + @Operation(summary = "회원가입", description = "새로운 사용자를 등록합니다.") @ApiResponses({ @ApiResponse(responseCode = "200", description = "회원가입 성공"), @ApiResponse(responseCode = "400", description = "중복된 사용자명 또는 이메일")