diff --git a/src/main/java/pt/ua/deti/codespell/codespellbackend/exception/implementations/InvalidEmailException.java b/src/main/java/pt/ua/deti/codespell/codespellbackend/exception/implementations/InvalidEmailException.java new file mode 100644 index 0000000..55c95d7 --- /dev/null +++ b/src/main/java/pt/ua/deti/codespell/codespellbackend/exception/implementations/InvalidEmailException.java @@ -0,0 +1,7 @@ +package pt.ua.deti.codespell.codespellbackend.exception.implementations; + +public class InvalidEmailException extends RuntimeException{ + public InvalidEmailException(String message) { + super(message); + } +} diff --git a/src/main/java/pt/ua/deti/codespell/codespellbackend/exception/implementations/InvalidPasswordException.java b/src/main/java/pt/ua/deti/codespell/codespellbackend/exception/implementations/InvalidPasswordException.java new file mode 100644 index 0000000..8769ad8 --- /dev/null +++ b/src/main/java/pt/ua/deti/codespell/codespellbackend/exception/implementations/InvalidPasswordException.java @@ -0,0 +1,7 @@ +package pt.ua.deti.codespell.codespellbackend.exception.implementations; + +public class InvalidPasswordException extends RuntimeException{ + public InvalidPasswordException(String message) { + super(message); + } +} diff --git a/src/main/java/pt/ua/deti/codespell/codespellbackend/exception/implementations/InvalidUsernameException.java b/src/main/java/pt/ua/deti/codespell/codespellbackend/exception/implementations/InvalidUsernameException.java new file mode 100644 index 0000000..efe6d5c --- /dev/null +++ b/src/main/java/pt/ua/deti/codespell/codespellbackend/exception/implementations/InvalidUsernameException.java @@ -0,0 +1,7 @@ +package pt.ua.deti.codespell.codespellbackend.exception.implementations; + +public class InvalidUsernameException extends RuntimeException{ + public InvalidUsernameException(String message) { + super(message); + } +} diff --git a/src/main/java/pt/ua/deti/codespell/codespellbackend/service/UserService.java b/src/main/java/pt/ua/deti/codespell/codespellbackend/service/UserService.java index 13dd336..d51c752 100644 --- a/src/main/java/pt/ua/deti/codespell/codespellbackend/service/UserService.java +++ b/src/main/java/pt/ua/deti/codespell/codespellbackend/service/UserService.java @@ -1,9 +1,14 @@ package pt.ua.deti.codespell.codespellbackend.service; +import java.util.regex.Pattern; + import org.springframework.beans.factory.annotation.Autowired; import org.springframework.lang.NonNull; import org.springframework.stereotype.Service; import pt.ua.deti.codespell.codespellbackend.exception.implementations.ExistentUserException; +import pt.ua.deti.codespell.codespellbackend.exception.implementations.InvalidEmailException; +import pt.ua.deti.codespell.codespellbackend.exception.implementations.InvalidPasswordException; +import pt.ua.deti.codespell.codespellbackend.exception.implementations.InvalidUsernameException; import pt.ua.deti.codespell.codespellbackend.exception.implementations.UserNotFoundException; import pt.ua.deti.codespell.codespellbackend.model.User; import pt.ua.deti.codespell.codespellbackend.repository.UserRepository; @@ -37,11 +42,28 @@ public User findByEmail(String email) { } public void registerUser(User user) { + String emailRegex = "^[\\w!#$%&'*+/=?`{|}~^-]+(?:\\.[\\w!#$%&'*+/=?`{|}~^-]+)*@(?:[a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,6}$"; + boolean emailChecker = Pattern.matches(emailRegex, user.getEmail()); if (userRepository.existsByUsername(user.getUsername())) throw new ExistentUserException("The provided username is already taken."); + else if (userRepository.existsByEmail(user.getEmail())) + throw new ExistentUserException("The provided email is already taken."); + else if (!emailChecker) + throw new InvalidEmailException("The provided email is invalid."); + else if (user.getPassword().length() < 6 || user.getPassword() == null) + throw new InvalidPasswordException("The provided password is invalid."); + else if (user.getUsername().length() < 3 || user.getUsername() == null) + throw new InvalidUsernameException("The provided username is invalid."); userRepository.save(user); } + public void updateUser(User user) { + + if (!userRepository.existsByUsername(user.getUsername())) + throw new UserNotFoundException(String.format("The user %s could not be found.", user.getUsername())); + userRepository.save(user); + + } }