[ADD] SWAGGER 수정

main
bjkim 10 months ago
parent 4bda28c8b6
commit 9298290e7e

@ -1,8 +1,6 @@
package kr.re.etri.autoflow.controllers; package kr.re.etri.autoflow.controllers;
import java.util.HashSet; import java.util.*;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Parameter;
@ -72,37 +70,45 @@ public class AuthController {
}) })
@PostMapping("/signin") @PostMapping("/signin")
public ResponseEntity<?> authenticateUser(@Valid @RequestBody LoginRequest loginRequest) { public ResponseEntity<?> authenticateUser(@Valid @RequestBody LoginRequest loginRequest) {
Authentication authentication = authenticationManager.authenticate( Authentication authentication = authenticationManager.authenticate(
new UsernamePasswordAuthenticationToken(loginRequest.getUsername(), loginRequest.getPassword()) new UsernamePasswordAuthenticationToken(loginRequest.getUsername(), loginRequest.getPassword())
); );
SecurityContextHolder.getContext().setAuthentication(authentication); SecurityContextHolder.getContext().setAuthentication(authentication);
UserDetailsImpl userDetails = (UserDetailsImpl) authentication.getPrincipal(); UserDetailsImpl userDetails = (UserDetailsImpl) authentication.getPrincipal();
// 기존 refresh token 제거 // 기존 refresh token 제거
refreshTokenService.deleteByUserId(userDetails.getId()); refreshTokenService.deleteByUserId(userDetails.getId());
// 새 JWT 및 RefreshToken 생성 // 새 JWT 및 RefreshToken 생성
ResponseCookie jwtCookie = jwtUtils.generateJwtCookie(userDetails); ResponseCookie jwtCookie = jwtUtils.generateJwtCookie(userDetails);
RefreshToken refreshToken = refreshTokenService.createRefreshToken(userDetails.getId()); RefreshToken refreshToken = refreshTokenService.createRefreshToken(userDetails.getId());
ResponseCookie jwtRefreshCookie = jwtUtils.generateRefreshJwtCookie(refreshToken.getToken()); ResponseCookie jwtRefreshCookie = jwtUtils.generateRefreshJwtCookie(refreshToken.getToken());
List<String> roles = userDetails.getAuthorities().stream() List<String> roles = userDetails.getAuthorities().stream()
.map(GrantedAuthority::getAuthority) .map(GrantedAuthority::getAuthority)
.collect(Collectors.toList()); .toList();
return ResponseEntity.ok() UserInfoResponse userInfo = new UserInfoResponse(
.header(HttpHeaders.SET_COOKIE, jwtCookie.toString()) userDetails.getId(),
.header(HttpHeaders.SET_COOKIE, jwtRefreshCookie.toString()) userDetails.getUsername(),
.body(new UserInfoResponse( userDetails.getEmail(),
userDetails.getId(), userDetails.getAuthorities().stream()
userDetails.getUsername(), .map(GrantedAuthority::getAuthority)
userDetails.getEmail(), .collect(Collectors.toList())
roles );
));
// 응답 바디에 userInfo와 쿠키 문자열 같이 넣기
Map<String, Object> 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({ @ApiResponses({
@ApiResponse(responseCode = "200", description = "회원가입 성공"), @ApiResponse(responseCode = "200", description = "회원가입 성공"),
@ApiResponse(responseCode = "400", description = "중복된 사용자명 또는 이메일") @ApiResponse(responseCode = "400", description = "중복된 사용자명 또는 이메일")

Loading…
Cancel
Save