diff --git a/src/main/java/wtf/beatrice/releasehive/resources/AuthResource.java b/src/main/java/wtf/beatrice/releasehive/resources/AuthResource.java index 2c85e51..df16dbe 100644 --- a/src/main/java/wtf/beatrice/releasehive/resources/AuthResource.java +++ b/src/main/java/wtf/beatrice/releasehive/resources/AuthResource.java @@ -39,9 +39,8 @@ public class AuthResource { @PostMapping( value="/login", produces="application/json") - public ResponseEntity login(@RequestBody LoginUserDto userDto) - { - User authenticatedUser = accountService.login(userDto); + public ResponseEntity login(@RequestBody LoginUserDto userDto) throws BadRequestException { + User authenticatedUser = accountService.authenticate(userDto); String jwtToken = jwtService.generateToken(authenticatedUser); diff --git a/src/main/java/wtf/beatrice/releasehive/services/AccountService.java b/src/main/java/wtf/beatrice/releasehive/services/AccountService.java index 2a2b3aa..2663426 100644 --- a/src/main/java/wtf/beatrice/releasehive/services/AccountService.java +++ b/src/main/java/wtf/beatrice/releasehive/services/AccountService.java @@ -10,5 +10,5 @@ public interface AccountService User register(RegisterUserDto user) throws BadRequestException; - User login(LoginUserDto user); + User authenticate(LoginUserDto user) throws BadRequestException; } diff --git a/src/main/java/wtf/beatrice/releasehive/services/AccountServiceImpl.java b/src/main/java/wtf/beatrice/releasehive/services/AccountServiceImpl.java index 4268e19..95a4633 100644 --- a/src/main/java/wtf/beatrice/releasehive/services/AccountServiceImpl.java +++ b/src/main/java/wtf/beatrice/releasehive/services/AccountServiceImpl.java @@ -71,15 +71,35 @@ public class AccountServiceImpl implements AccountService { } @Override - public User login(LoginUserDto user) { + public User authenticate(LoginUserDto userDto) throws BadRequestException { + + if (userDto.getEmail() == null || + userDto.getEmail().isEmpty() || + userDto.getPassword() == null || + userDto.getPassword().isEmpty()) { + + throw new BadRequestException("Please provide a valid email and password"); + } + + if(!userDto.getEmail().matches(InternalConfiguration.EMAIL_REGEX_RCF)) { + throw new BadRequestException("Invalid email format"); + } + + if(!userDto.getPassword().matches(InternalConfiguration.PASSWORD_REGEX)) { + throw new BadRequestException("Invalid password format"); + } + + if (!userRepository.findByEmail(userDto.getEmail()).isPresent()) { + throw new BadRequestException("No account registered with this email"); + } + authenticationManager.authenticate( new UsernamePasswordAuthenticationToken( - user.getEmail(), - user.getPassword())); + userDto.getEmail(), + userDto.getPassword())); - return userRepository.findByEmail(user.getEmail()) + return userRepository.findByEmail(userDto.getEmail()) .orElseThrow(); } - }