应用全局异常抛出

This commit is contained in:
2025-05-14 12:54:02 +09:00
parent 8535dce094
commit 6a579104ba
2 changed files with 20 additions and 26 deletions

View File

@ -38,39 +38,26 @@ public class UserController {
@PostMapping("/register")
public ResponseEntity<?> registerUser(@Valid @RequestBody RegistrationDto registrationDto) {
try {
UserEntity registeredUser = userService.registerNewUser(registrationDto);
UserEntity registeredUser = userService.registerNewUser(registrationDto);
return ResponseEntity.status(HttpStatus.CREATED).body(ApiResponse.success(registeredUser.getEmail()));
} catch (Exception e) {
return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(ApiResponse.fail(ResultCode.BAD_REQUEST,null));
}
return ResponseEntity.status(HttpStatus.CREATED).body(ApiResponse.success(registeredUser.getEmail()));
}
@PostMapping("/login")
public ResponseEntity<?> authenticateUser(@Valid @RequestBody LoginDto loginDto) {
try {
Authentication authentication = authenticationManager.authenticate(
new UsernamePasswordAuthenticationToken(loginDto.getEmail(), loginDto.getPassword())
);
SecurityContextHolder.getContext().setAuthentication(authentication);
UserDetails userDetails = (UserDetails) authentication.getPrincipal();
String jwtToken = jwtService.generateToken(userDetails);
Authentication authentication = authenticationManager.authenticate(
new UsernamePasswordAuthenticationToken(loginDto.getEmail(), loginDto.getPassword())
);
SecurityContextHolder.getContext().setAuthentication(authentication);
UserDetails userDetails = (UserDetails) authentication.getPrincipal();
Map<String, String> tokenResponse = new HashMap<>();
tokenResponse.put("token", jwtToken);
String jwtToken = jwtService.generateToken(userDetails);
return ResponseEntity.ok(ApiResponse.success(tokenResponse));
Map<String, String> tokenResponse = new HashMap<>();
tokenResponse.put("token", jwtToken);
} catch (BadCredentialsException e) {
return ResponseEntity.status(HttpStatus.UNAUTHORIZED).body(ApiResponse.fail(ResultCode.UNAUTHORIZED,null));
} catch (Exception e) {
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(ApiResponse.fail(ResultCode.SERVICE_UNAVAILABLE,null));
}
return ResponseEntity.ok(ApiResponse.success(tokenResponse));
}
}

View File

@ -3,6 +3,8 @@ package co.jp.app.service;
import java.util.Collection;
import java.util.Collections;
import co.jp.app.common.ResultCode;
import co.jp.app.exception.BusinessException;
import org.jetbrains.annotations.NotNull;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.authority.SimpleGrantedAuthority;
@ -30,10 +32,15 @@ public class UserService implements UserDetailsService {
}
@Transactional
public UserEntity registerNewUser(@NotNull RegistrationDto registrationDto) throws Exception {
public UserEntity registerNewUser(@NotNull RegistrationDto registrationDto) throws BusinessException {
if (userRepository.existsByEmail(registrationDto.getEmail())) {
throw new Exception("error: Email" + registrationDto.getEmail() + " had been used");
throw new BusinessException(ResultCode.USER_EMAIL_ALREADY_EXISTS,"error: Email" + registrationDto.getEmail() + " had been used");
}
//密码最短6位限制
if (registrationDto.getPassword() == null || registrationDto.getPassword().length() < 6) {
throw new BusinessException(ResultCode.USER_PASSWORD_TOO_SHORT);
}
UserEntity newUser = new UserEntity();