From fadf7c57e699129a94cd2174317013081ebd21f9 Mon Sep 17 00:00:00 2001 From: Airat_Salikhov Date: Mon, 21 Sep 2020 14:50:53 +0400 Subject: [PATCH] airat commit --- .../online/exception/NotAccessException.java | 6 +++++ .../NotCorrectPasswordException.java | 6 +++++ .../exception/SimplePasswordException.java | 6 +++++ .../UserAlreadyRegisteredException.java | 6 +++++ .../exception/UserNotFoundException.java | 6 +++++ .../rd/online/repository/IUserRepository.java | 2 ++ .../rd/online/repository/UserRepository.java | 11 ++++++++ .../online/service/AuthenticationService.java | 11 ++++++-- .../service/IAuthenticationService.java | 4 ++- .../izh/rd/online/service/IUserService.java | 6 +++-- .../izh/rd/online/service/UserService.java | 25 +++++++++++++++---- 11 files changed, 79 insertions(+), 10 deletions(-) create mode 100644 src/main/java/com/epam/izh/rd/online/exception/NotAccessException.java create mode 100644 src/main/java/com/epam/izh/rd/online/exception/NotCorrectPasswordException.java create mode 100644 src/main/java/com/epam/izh/rd/online/exception/SimplePasswordException.java create mode 100644 src/main/java/com/epam/izh/rd/online/exception/UserAlreadyRegisteredException.java create mode 100644 src/main/java/com/epam/izh/rd/online/exception/UserNotFoundException.java 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..0b23507 --- /dev/null +++ b/src/main/java/com/epam/izh/rd/online/exception/NotAccessException.java @@ -0,0 +1,6 @@ +package com.epam.izh.rd.online.exception; + +public class NotAccessException extends Exception { + public NotAccessException(String s) { + } +} 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..40ce224 --- /dev/null +++ b/src/main/java/com/epam/izh/rd/online/exception/NotCorrectPasswordException.java @@ -0,0 +1,6 @@ +package com.epam.izh.rd.online.exception; + +public class NotCorrectPasswordException extends Exception { + public NotCorrectPasswordException(String s) { + } +} 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..85862d5 --- /dev/null +++ b/src/main/java/com/epam/izh/rd/online/exception/SimplePasswordException.java @@ -0,0 +1,6 @@ +package com.epam.izh.rd.online.exception; + +public class SimplePasswordException extends Exception { + public SimplePasswordException(String s) { + } +} 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..0597d70 --- /dev/null +++ b/src/main/java/com/epam/izh/rd/online/exception/UserAlreadyRegisteredException.java @@ -0,0 +1,6 @@ +package com.epam.izh.rd.online.exception; + +public class UserAlreadyRegisteredException extends Exception { + public UserAlreadyRegisteredException(String s) { + } +} 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..3c74af2 --- /dev/null +++ b/src/main/java/com/epam/izh/rd/online/exception/UserNotFoundException.java @@ -0,0 +1,6 @@ +package com.epam.izh.rd.online.exception; + +public class UserNotFoundException extends Exception { + public UserNotFoundException(String s) { + } +} diff --git a/src/main/java/com/epam/izh/rd/online/repository/IUserRepository.java b/src/main/java/com/epam/izh/rd/online/repository/IUserRepository.java index 0003397..bcb28e9 100644 --- a/src/main/java/com/epam/izh/rd/online/repository/IUserRepository.java +++ b/src/main/java/com/epam/izh/rd/online/repository/IUserRepository.java @@ -9,4 +9,6 @@ public interface IUserRepository { User findByLogin(String login); void deleteByLogin(String login); + + User findByPassword(String password); } 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..7430328 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 @@ -57,6 +57,8 @@ public User findByLogin(String login) { .findFirst().orElse(null); } + + /** * Метод удаления пользователя с определенным логином. *

@@ -75,4 +77,13 @@ public void deleteByLogin(String login) { userDatabase.removeIf(user -> user.getLogin().equalsIgnoreCase(login)); } + + @Override + public User findByPassword(String password) { + Objects.requireNonNull(password, "Отсутствует пароль"); + + return userDatabase.stream() + .filter(user -> user.getPassword().equalsIgnoreCase(password)) + .findFirst().orElse(null); + } } 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..628add3 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,10 +27,15 @@ public AuthenticationService(IUserRepository userRepository) { * @param user - пользователь проходящий авторизацию */ @Override - public User login(User user) { + public User login(User user) throws Exception { // Находим пользователя в базе User foundUser = userRepository.findByLogin(user.getLogin()); - + if (foundUser == null){ + throw new UserNotFoundException("Пользователь с таким логином не найден"); + } + if (!user.getPassword().equals(userRepository.findByPassword(user.getPassword()))){ + throw new NotCorrectPasswordException("Пароль введен неверно!"); + } // // Здесь необходимо реализовать перечисленные выше проверки // 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..483dd90 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, Exception; 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..d68694c 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,12 @@ 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.UserAlreadyRegisteredException; public interface IUserService { - User register(User user); + User register(User user) throws UserAlreadyRegisteredException, Exception; - void delete(String login); + void delete(String login) throws NotAccessException, Exception; } 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..1ef621f 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,12 +1,16 @@ 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; + public class UserService implements IUserService { - private IUserRepository userRepository; + private final IUserRepository userRepository; public UserService(IUserRepository userRepository) { this.userRepository = userRepository; @@ -30,12 +34,21 @@ public UserService(IUserRepository userRepository) { * @param user - даныне регистрирующегося пользователя */ @Override - public User register(User user) { + public User register(User user) throws Exception { // // Здесь необходимо реализовать перечисленные выше проверки // + if (user.getLogin().isEmpty() || user.getPassword().isEmpty()) { + throw new IllegalArgumentException("Ошибка в заполнении полей"); + } + if (userRepository.findByLogin(user.getLogin()) != null) { + throw new UserAlreadyRegisteredException("Пользователь с логином " + user.getLogin() + " уже зарегистрирован"); + } + if (user.getPassword().matches("\\d*")) { + throw new SimplePasswordException("Пароль не соответствует требованиям безопасности"); + } // Если все проверки успешно пройдены, сохраняем пользователя в базу return userRepository.save(user); } @@ -58,13 +71,15 @@ public User register(User user) { * * @param login */ - public void delete(String login) { + public void delete(String login) throws Exception { // Здесь необходимо сделать доработку метод + try { userRepository.deleteByLogin(login); - - // Здесь необходимо сделать доработку метода + } catch (Exception e) { + throw new NotAccessException("Недостаточно прав для выполнения операции"); + } }