|
|
|
|
@ -5,8 +5,10 @@ import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
|
|
import io.swagger.v3.oas.annotations.Parameter;
|
|
|
|
|
import jakarta.servlet.http.HttpServletRequest;
|
|
|
|
|
import jakarta.transaction.Transactional;
|
|
|
|
|
import jakarta.validation.Valid;
|
|
|
|
|
|
|
|
|
|
import kr.re.etri.autoflow.repository.UserProjectMapRepository;
|
|
|
|
|
import kr.re.etri.autoflow.service.AuthService;
|
|
|
|
|
import kr.re.etri.autoflow.service.UserService;
|
|
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
|
|
@ -61,6 +63,7 @@ public class AuthController {
|
|
|
|
|
RefreshTokenService refreshTokenService;
|
|
|
|
|
|
|
|
|
|
private final AuthService authService;
|
|
|
|
|
private final UserProjectMapRepository userProjectMapRepository;
|
|
|
|
|
private final UserService userService;
|
|
|
|
|
|
|
|
|
|
@Operation(summary = "로그인", description = "사용자 인증 후 JWT 및 리프레시 토큰 쿠키를 반환합니다.")
|
|
|
|
|
@ -75,11 +78,11 @@ public class AuthController {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Operation(summary = "회원가입", description = "새로운 사용자를 등록합니다.")
|
|
|
|
|
@ApiResponses({
|
|
|
|
|
@ApiResponses({
|
|
|
|
|
@ApiResponse(responseCode = "200", description = "회원가입 성공"),
|
|
|
|
|
@ApiResponse(responseCode = "400", description = "중복된 사용자명 또는 이메일")
|
|
|
|
|
})
|
|
|
|
|
@PostMapping("/signup")
|
|
|
|
|
})
|
|
|
|
|
@PostMapping("/signup")
|
|
|
|
|
public ResponseEntity<?> registerUser(@Valid @RequestBody SignupRequest signUpRequest) {
|
|
|
|
|
if (userRepository.existsByUsername(signUpRequest.getUsername())) {
|
|
|
|
|
return ResponseEntity.badRequest().body(new MessageResponse(false,"오류: 이미 사용 중인 사용자 이름입니다."));
|
|
|
|
|
@ -244,13 +247,22 @@ public class AuthController {
|
|
|
|
|
@ApiResponse(responseCode = "404", description = "해당 ID의 사용자를 찾을 수 없음")
|
|
|
|
|
})
|
|
|
|
|
@DeleteMapping("/users/{id}")
|
|
|
|
|
@Transactional
|
|
|
|
|
public ResponseEntity<MessageResponse> deleteUser(
|
|
|
|
|
@Parameter(description = "사용자 ID", example = "1") @PathVariable Long id) {
|
|
|
|
|
|
|
|
|
|
return userRepository.findById(id).map(user -> {
|
|
|
|
|
refreshTokenService.deleteByUserId(user.getId()); // 토큰 삭제
|
|
|
|
|
// 1. 리프레시 토큰 삭제
|
|
|
|
|
refreshTokenService.deleteByUserId(user.getId());
|
|
|
|
|
|
|
|
|
|
// 2. 사용자-프로젝트 맵 삭제
|
|
|
|
|
userProjectMapRepository.deleteAllByUserId(user.getId());
|
|
|
|
|
|
|
|
|
|
// 3. 사용자 삭제
|
|
|
|
|
userRepository.delete(user);
|
|
|
|
|
|
|
|
|
|
return ResponseEntity.ok(new MessageResponse(true, "사용자가 삭제되었습니다."));
|
|
|
|
|
}).orElse(ResponseEntity.notFound().build());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|