diff --git a/src/main/java/dev/gfxv/blps/controller/AuthController.java b/src/main/java/dev/gfxv/blps/controller/AuthController.java index 1f3d834..4a95611 100644 --- a/src/main/java/dev/gfxv/blps/controller/AuthController.java +++ b/src/main/java/dev/gfxv/blps/controller/AuthController.java @@ -23,22 +23,14 @@ public class AuthController { } @PostMapping("/register") - public ResponseEntity registerUser(@RequestBody RegisterRequest registerRequest) { - try { - String response = authService.registerUser(registerRequest); - return ResponseEntity.ok(response); - } catch (RuntimeException e) { - return ResponseEntity.badRequest().body(e.getMessage()); - } + public ResponseEntity registerUser(@RequestBody RegisterRequest request) { + String response = authService.registerUser(request); + return ResponseEntity.ok(response); } @PostMapping("/login") - public ResponseEntity authenticateUser(@RequestBody LoginRequest loginRequest) { - try { - JwtResponse jwtResponse = authService.authenticateUser(loginRequest); - return ResponseEntity.ok(jwtResponse); - } catch (RuntimeException e) { - return ResponseEntity.badRequest().body(e.getMessage()); - } + public ResponseEntity authenticateUser(@RequestBody LoginRequest request) { + JwtResponse jwtResponse = authService.authenticateUser(request); + return ResponseEntity.ok(jwtResponse); } } \ No newline at end of file diff --git a/src/main/java/dev/gfxv/blps/exception/EmailAlreadyExistsException.java b/src/main/java/dev/gfxv/blps/exception/EmailAlreadyExistsException.java new file mode 100644 index 0000000..f6b1b50 --- /dev/null +++ b/src/main/java/dev/gfxv/blps/exception/EmailAlreadyExistsException.java @@ -0,0 +1,7 @@ +package dev.gfxv.blps.exception; + +public class EmailAlreadyExistsException extends RuntimeException { + public EmailAlreadyExistsException(String message) { + super(message); + } +} \ No newline at end of file diff --git a/src/main/java/dev/gfxv/blps/exception/GlobalExceptionHandler.java b/src/main/java/dev/gfxv/blps/exception/GlobalExceptionHandler.java new file mode 100644 index 0000000..78a09b7 --- /dev/null +++ b/src/main/java/dev/gfxv/blps/exception/GlobalExceptionHandler.java @@ -0,0 +1,34 @@ +package dev.gfxv.blps.exception; + +import org.springframework.http.ResponseEntity; +import org.springframework.security.authentication.BadCredentialsException; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.RestControllerAdvice; + +@RestControllerAdvice +public class GlobalExceptionHandler { + + @ExceptionHandler({UsernameAlreadyExistsException.class, EmailAlreadyExistsException.class}) + public ResponseEntity handleAlreadyExists(UsernameAlreadyExistsException ex) { + System.out.println("triggered handleAlreadyExists"); + return ResponseEntity.badRequest().body(ex.getMessage()); + } + + @ExceptionHandler(RuntimeException.class) + public ResponseEntity handleRuntimeException(RuntimeException ex) { + System.out.println("triggered handleRuntimeException"); + System.out.println("AHTUNG AHTUNG:" + ex.getMessage()); + return ResponseEntity + .internalServerError() + .body("An unexpected error occurred"); + } + + @ExceptionHandler(BadCredentialsException.class) + public ResponseEntity handleBadCredentials(BadCredentialsException ex) { + System.out.println("triggered handleBadCredentials"); + // TODO: probably log? + return ResponseEntity + .unprocessableEntity() + .body("Invalid username or password"); + } +} \ No newline at end of file diff --git a/src/main/java/dev/gfxv/blps/exception/UsernameAlreadyExistsException.java b/src/main/java/dev/gfxv/blps/exception/UsernameAlreadyExistsException.java new file mode 100644 index 0000000..0a8716c --- /dev/null +++ b/src/main/java/dev/gfxv/blps/exception/UsernameAlreadyExistsException.java @@ -0,0 +1,7 @@ +package dev.gfxv.blps.exception; + +public class UsernameAlreadyExistsException extends RuntimeException { + public UsernameAlreadyExistsException(String message) { + super(message); + } +} diff --git a/src/main/java/dev/gfxv/blps/service/AuthService.java b/src/main/java/dev/gfxv/blps/service/AuthService.java index 0b50b3c..d348059 100644 --- a/src/main/java/dev/gfxv/blps/service/AuthService.java +++ b/src/main/java/dev/gfxv/blps/service/AuthService.java @@ -2,6 +2,8 @@ package dev.gfxv.blps.service; import dev.gfxv.blps.entity.Role; import dev.gfxv.blps.entity.User; +import dev.gfxv.blps.exception.EmailAlreadyExistsException; +import dev.gfxv.blps.exception.UsernameAlreadyExistsException; import dev.gfxv.blps.payload.request.LoginRequest; import dev.gfxv.blps.payload.request.RegisterRequest; import dev.gfxv.blps.payload.response.JwtResponse; @@ -48,11 +50,11 @@ public class AuthService { public String registerUser(RegisterRequest registerRequest) { if (userRepository.existsByUsername(registerRequest.getUsername())) { - throw new RuntimeException("Error: Username is already taken!"); + throw new UsernameAlreadyExistsException("Username is already taken!"); } if (userRepository.existsByEmail(registerRequest.getEmail())) { - throw new RuntimeException("Error: Email is already in use!"); + throw new EmailAlreadyExistsException("Email is already in use!"); } User user = new User();