diff --git a/src/main/java/com/epam/izh/rd/online/exception/NotAccessException.java b/src/main/java/com/epam/izh/rd/online/exception/NotAccessException.java new file mode 100644 index 0000000..96de048 --- /dev/null +++ b/src/main/java/com/epam/izh/rd/online/exception/NotAccessException.java @@ -0,0 +1,20 @@ +package com.epam.izh.rd.online.exception; + +public class NotAccessException extends Exception{ + public NotAccessException() { + } + + public NotAccessException(String message) { + System.out.print(message); + } + + public NotAccessException(String message, Throwable cause) { + super(message, cause); + } + + public NotAccessException(Throwable cause) { + super(cause); + } + + +} diff --git a/src/main/java/com/epam/izh/rd/online/exception/NotCorrectPasswordException.java b/src/main/java/com/epam/izh/rd/online/exception/NotCorrectPasswordException.java new file mode 100644 index 0000000..1748b30 --- /dev/null +++ b/src/main/java/com/epam/izh/rd/online/exception/NotCorrectPasswordException.java @@ -0,0 +1,21 @@ +package com.epam.izh.rd.online.exception; + +public class NotCorrectPasswordException extends Exception { + public NotCorrectPasswordException() { + } + + public NotCorrectPasswordException(String message) { + super(message); + System.out.print(message); + } + + public NotCorrectPasswordException(String message, Throwable cause) { + super(message, cause); + } + + public NotCorrectPasswordException(Throwable cause) { + super(cause); + } + + +} diff --git a/src/main/java/com/epam/izh/rd/online/exception/SimplePasswordException.java b/src/main/java/com/epam/izh/rd/online/exception/SimplePasswordException.java new file mode 100644 index 0000000..25e4985 --- /dev/null +++ b/src/main/java/com/epam/izh/rd/online/exception/SimplePasswordException.java @@ -0,0 +1,21 @@ +package com.epam.izh.rd.online.exception; + +public class SimplePasswordException extends Exception { + public SimplePasswordException() { + } + + public SimplePasswordException(String message) { + super(message); + System.out.print(message); + } + + public SimplePasswordException(String message, Throwable cause) { + super(message, cause); + } + + public SimplePasswordException(Throwable cause) { + super(cause); + } + + +} diff --git a/src/main/java/com/epam/izh/rd/online/exception/UserAlreadyRegisteredException.java b/src/main/java/com/epam/izh/rd/online/exception/UserAlreadyRegisteredException.java new file mode 100644 index 0000000..e809ccf --- /dev/null +++ b/src/main/java/com/epam/izh/rd/online/exception/UserAlreadyRegisteredException.java @@ -0,0 +1,20 @@ +package com.epam.izh.rd.online.exception; + +public class UserAlreadyRegisteredException extends Exception { + public UserAlreadyRegisteredException() { + } + + public UserAlreadyRegisteredException(String message) { + super(message); + System.out.print(message); + } + + public UserAlreadyRegisteredException(String message, Throwable cause) { + super(message, cause); + } + + public UserAlreadyRegisteredException(Throwable cause) { + super(cause); + } + +} diff --git a/src/main/java/com/epam/izh/rd/online/exception/UserNotFoundException.java b/src/main/java/com/epam/izh/rd/online/exception/UserNotFoundException.java new file mode 100644 index 0000000..be3c934 --- /dev/null +++ b/src/main/java/com/epam/izh/rd/online/exception/UserNotFoundException.java @@ -0,0 +1,19 @@ +package com.epam.izh.rd.online.exception; + +public class UserNotFoundException extends Exception { + public UserNotFoundException() { + } + + public UserNotFoundException(String message) { + super(message); + System.out.print(message); + } + + public UserNotFoundException(String message, Throwable cause) { + super(message, cause); + } + + public UserNotFoundException(Throwable cause) { + super(cause); + } +} diff --git a/src/main/java/com/epam/izh/rd/online/repository/UserRepository.java b/src/main/java/com/epam/izh/rd/online/repository/UserRepository.java index e81491d..5682b96 100644 --- a/src/main/java/com/epam/izh/rd/online/repository/UserRepository.java +++ b/src/main/java/com/epam/izh/rd/online/repository/UserRepository.java @@ -39,7 +39,6 @@ public User save(User user) { } else { userWithSameLogin.setPassword(user.getPassword()); } - return user; } @@ -75,4 +74,9 @@ public void deleteByLogin(String login) { userDatabase.removeIf(user -> user.getLogin().equalsIgnoreCase(login)); } + + @Override + public String toString() { + return " "+userDatabase; + } } diff --git a/src/main/java/com/epam/izh/rd/online/service/AuthenticationService.java b/src/main/java/com/epam/izh/rd/online/service/AuthenticationService.java index bcb09a7..77db13d 100644 --- a/src/main/java/com/epam/izh/rd/online/service/AuthenticationService.java +++ b/src/main/java/com/epam/izh/rd/online/service/AuthenticationService.java @@ -1,6 +1,8 @@ package com.epam.izh.rd.online.service; import com.epam.izh.rd.online.entity.User; +import com.epam.izh.rd.online.exception.NotCorrectPasswordException; +import com.epam.izh.rd.online.exception.UserNotFoundException; import com.epam.izh.rd.online.repository.IUserRepository; public class AuthenticationService implements IAuthenticationService { @@ -25,20 +27,27 @@ public AuthenticationService(IUserRepository userRepository) { * @param user - пользователь проходящий авторизацию */ @Override - public User login(User user) { + public User login(User user) throws UserNotFoundException, NotCorrectPasswordException { // Находим пользователя в базе User foundUser = userRepository.findByLogin(user.getLogin()); // // Здесь необходимо реализовать перечисленные выше проверки // - + if (foundUser == null){ + throw new UserNotFoundException("Пользователь с таким логином не найден"); + } + if ( !( user.getLogin().compareTo(foundUser.getPassword()) ==0 ) ){ + throw new NotCorrectPasswordException("Пароль введен неверно!"); + } // Устанавливаем найденного пользователя, который прошел все проверки, как вошедшего в систему. CurrentUserManager.setCurrentLoggedInUser(foundUser); return foundUser; } + + /** * Данный метод очищает данные о текущем (активном) пользователе. */ diff --git a/src/main/java/com/epam/izh/rd/online/service/IAuthenticationService.java b/src/main/java/com/epam/izh/rd/online/service/IAuthenticationService.java index 3f296c3..7840306 100644 --- a/src/main/java/com/epam/izh/rd/online/service/IAuthenticationService.java +++ b/src/main/java/com/epam/izh/rd/online/service/IAuthenticationService.java @@ -1,9 +1,11 @@ package com.epam.izh.rd.online.service; import com.epam.izh.rd.online.entity.User; +import com.epam.izh.rd.online.exception.NotCorrectPasswordException; +import com.epam.izh.rd.online.exception.UserNotFoundException; public interface IAuthenticationService { - User login(User user); + User login(User user) throws UserNotFoundException, NotCorrectPasswordException; void logout(); } diff --git a/src/main/java/com/epam/izh/rd/online/service/IUserService.java b/src/main/java/com/epam/izh/rd/online/service/IUserService.java index de62d43..5cc0fcb 100644 --- a/src/main/java/com/epam/izh/rd/online/service/IUserService.java +++ b/src/main/java/com/epam/izh/rd/online/service/IUserService.java @@ -1,10 +1,13 @@ package com.epam.izh.rd.online.service; import com.epam.izh.rd.online.entity.User; +import com.epam.izh.rd.online.exception.NotAccessException; +import com.epam.izh.rd.online.exception.SimplePasswordException; +import com.epam.izh.rd.online.exception.UserAlreadyRegisteredException; public interface IUserService { - User register(User user); + User register(User user) throws UserAlreadyRegisteredException, SimplePasswordException; - void delete(String login); + void delete(String login) throws NotAccessException; } diff --git a/src/main/java/com/epam/izh/rd/online/service/UserService.java b/src/main/java/com/epam/izh/rd/online/service/UserService.java index 78c39ed..f946934 100644 --- a/src/main/java/com/epam/izh/rd/online/service/UserService.java +++ b/src/main/java/com/epam/izh/rd/online/service/UserService.java @@ -1,9 +1,15 @@ package com.epam.izh.rd.online.service; import com.epam.izh.rd.online.entity.User; +import com.epam.izh.rd.online.exception.NotAccessException; +import com.epam.izh.rd.online.exception.SimplePasswordException; +import com.epam.izh.rd.online.exception.UserAlreadyRegisteredException; import com.epam.izh.rd.online.repository.IUserRepository; import com.epam.izh.rd.online.repository.UserRepository; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + public class UserService implements IUserService { private IUserRepository userRepository; @@ -30,12 +36,26 @@ public UserService(IUserRepository userRepository) { * @param user - даныне регистрирующегося пользователя */ @Override - public User register(User user) { + public User register(User user) throws UserAlreadyRegisteredException, SimplePasswordException { // // Здесь необходимо реализовать перечисленные выше проверки // + if(user.getLogin().isEmpty() || user.getPassword().isEmpty()){ + throw new IllegalArgumentException("Ошибка в заполнении полей"); + } + + System.out.println(user.getLogin()); + System.out.println(userRepository); + if( userRepository.findByLogin(user.getLogin()) != null){ + throw new UserAlreadyRegisteredException("Пользователь с логином '" + user.getLogin() + "' уже зарегистрирован"); + } + Pattern pattern = Pattern.compile("\\d+"); + Matcher matcher = pattern.matcher(user.getPassword()); + if (matcher.find()){ + throw new SimplePasswordException("Пароль не соответствует требованиям безопасности"); + } // Если все проверки успешно пройдены, сохраняем пользователя в базу return userRepository.save(user); } @@ -58,11 +78,14 @@ public User register(User user) { * * @param login */ - public void delete(String login) { + public void delete(String login) throws NotAccessException { // Здесь необходимо сделать доработку метод - + try { userRepository.deleteByLogin(login); + }catch (UnsupportedOperationException e){ + throw new NotAccessException("Недостаточно прав для выполнения операции"); + } // Здесь необходимо сделать доработку метода