|
|
|
|
@ -109,46 +109,44 @@ public class AuthController {
|
|
|
|
|
@PostMapping("/signup")
|
|
|
|
|
public ResponseEntity<?> registerUser(@Valid @RequestBody SignupRequest signUpRequest) {
|
|
|
|
|
if (userRepository.existsByUsername(signUpRequest.getUsername())) {
|
|
|
|
|
return ResponseEntity.badRequest().body(new MessageResponse("Error: Username is already taken!"));
|
|
|
|
|
return ResponseEntity.badRequest().body(new MessageResponse("오류: 이미 사용 중인 사용자 이름입니다."));
|
|
|
|
|
}
|
|
|
|
|
if (userRepository.existsByEmail(signUpRequest.getEmail())) {
|
|
|
|
|
return ResponseEntity.badRequest().body(new MessageResponse("Error: Email is already in use!"));
|
|
|
|
|
return ResponseEntity.badRequest().body(new MessageResponse("오류: 이미 사용 중인 이메일입니다."));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
User user = new User(signUpRequest.getUsername(), signUpRequest.getEmail(),
|
|
|
|
|
encoder.encode(signUpRequest.getPassword()));
|
|
|
|
|
User user = new User(
|
|
|
|
|
signUpRequest.getUsername(),
|
|
|
|
|
signUpRequest.getEmail(),
|
|
|
|
|
encoder.encode(signUpRequest.getPassword())
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
Set<String> strRoles = signUpRequest.getRole();
|
|
|
|
|
Set<Role> roles = new HashSet<>();
|
|
|
|
|
|
|
|
|
|
if (strRoles == null) {
|
|
|
|
|
Role userRole = roleRepository.findByName(ERole.ROLE_USER)
|
|
|
|
|
.orElseThrow(() -> new RuntimeException("Error: Role is not found."));
|
|
|
|
|
roles.add(userRole);
|
|
|
|
|
} else {
|
|
|
|
|
strRoles.forEach(role -> {
|
|
|
|
|
switch (role) {
|
|
|
|
|
case "admin":
|
|
|
|
|
roles.add(roleRepository.findByName(ERole.ROLE_ADMIN)
|
|
|
|
|
.orElseThrow(() -> new RuntimeException("Error: Role is not found.")));
|
|
|
|
|
break;
|
|
|
|
|
case "mod":
|
|
|
|
|
roles.add(roleRepository.findByName(ERole.ROLE_MODERATOR)
|
|
|
|
|
.orElseThrow(() -> new RuntimeException("Error: Role is not found.")));
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
roles.add(roleRepository.findByName(ERole.ROLE_USER)
|
|
|
|
|
.orElseThrow(() -> new RuntimeException("Error: Role is not found.")));
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
if (strRoles == null || strRoles.isEmpty()) {
|
|
|
|
|
strRoles = Set.of("ROLE_USER");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
for (String roleName : strRoles) {
|
|
|
|
|
try {
|
|
|
|
|
ERole eRole = ERole.valueOf(roleName);
|
|
|
|
|
Role role = roleRepository.findByName(eRole)
|
|
|
|
|
.orElseThrow(() -> new RuntimeException("오류: '" + roleName + "' 역할이 DB에 존재하지 않습니다."));
|
|
|
|
|
roles.add(role);
|
|
|
|
|
} catch (IllegalArgumentException e) {
|
|
|
|
|
return ResponseEntity.badRequest().body(new MessageResponse("오류: '" + roleName + "' 역할은 유효하지 않습니다."));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
user.setRoles(roles);
|
|
|
|
|
userRepository.save(user);
|
|
|
|
|
|
|
|
|
|
return ResponseEntity.ok(new MessageResponse("User registered successfully!"));
|
|
|
|
|
return ResponseEntity.ok(new MessageResponse("사용자 등록이 완료되었습니다."));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Operation(summary = "로그아웃", description = "현재 사용자를 로그아웃하고 쿠키 및 리프레시 토큰을 삭제합니다.")
|
|
|
|
|
@ApiResponses({
|
|
|
|
|
@ApiResponse(responseCode = "200", description = "로그아웃 성공")
|
|
|
|
|
|