diff --git a/src/main/java/com/alibou/security/auth/AuthenticationService.java b/src/main/java/com/alibou/security/auth/AuthenticationService.java index 53193a7..63c224a 100644 --- a/src/main/java/com/alibou/security/auth/AuthenticationService.java +++ b/src/main/java/com/alibou/security/auth/AuthenticationService.java @@ -21,6 +21,7 @@ import org.springframework.stereotype.Service; import java.io.IOException; +import java.util.Optional; @Service @RequiredArgsConstructor @@ -32,17 +33,26 @@ public class AuthenticationService { private final AuthenticationManager authenticationManager; public AuthenticationResponse register(RegisterRequest request) { - var user = User.builder() - .firstname(request.getFirstname()) - .lastname(request.getLastname()) - .email(request.getEmail()) - .password(passwordEncoder.encode(request.getPassword())) - .role(request.getRole()) - .build(); - var savedUser = repository.save(user); + // Check if the given user exists in database + Optional userOptional = repository.findByEmail(request.getEmail()); + User user; + + if(userOptional.isPresent()) { + user = userOptional.get(); + } else { + user = User.builder() + .firstname(request.getFirstname()) + .lastname(request.getLastname()) + .email(request.getEmail()) + .password(passwordEncoder.encode(request.getPassword())) + .role(request.getRole()) + .build(); + repository.save(user); + } + var jwtToken = jwtService.generateToken(user); var refreshToken = jwtService.generateRefreshToken(user); - saveUserToken(savedUser, jwtToken); + saveUserToken(user, jwtToken); return AuthenticationResponse.builder() .accessToken(jwtToken) .refreshToken(refreshToken)