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..535f992 --- /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 message) { + super(message);} +} 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..940f3c0 --- /dev/null +++ b/src/main/java/com/epam/izh/rd/online/exception/NotCorrectPasswordException.java @@ -0,0 +1,7 @@ +package com.epam.izh.rd.online.exception; + +public class NotCorrectPasswordException extends IllegalArgumentException { + public NotCorrectPasswordException(String message) { + super(message); + } +} 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..7c24753 --- /dev/null +++ b/src/main/java/com/epam/izh/rd/online/exception/SimplePasswordException.java @@ -0,0 +1,8 @@ +package com.epam.izh.rd.online.exception; + +public class SimplePasswordException extends Exception { + public SimplePasswordException(String message) { + super(message); + } + +} 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..1173d57 --- /dev/null +++ b/src/main/java/com/epam/izh/rd/online/exception/UserAlreadyRegisteredException.java @@ -0,0 +1,7 @@ +package com.epam.izh.rd.online.exception; + +public class UserAlreadyRegisteredException extends Exception{ + public UserAlreadyRegisteredException(String message) { + super(message); + } +} 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..2f298e4 --- /dev/null +++ b/src/main/java/com/epam/izh/rd/online/exception/UserNotFoundException.java @@ -0,0 +1,9 @@ +package com.epam.izh.rd.online.exception; + +public class UserNotFoundException extends IllegalArgumentException { + public UserNotFoundException(String message) { + super(message); + } + + +} 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..a92934c 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 @@ -9,7 +9,7 @@ /** * Готовый класс репозитория. - * Можно добавлять свои методы, принеобходимости, но нельзя исправлять текущие. + * Можно добавлять свои методы, при необходимости, но нельзя исправлять текущие. *
* Позволяет сохранять\обновлять пользователей. * Позволяет находить пользователя по логину. 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..11a1395 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,18 +1,21 @@ 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 { private IUserRepository userRepository; + public AuthenticationService(IUserRepository userRepository) { this.userRepository = userRepository; } /** - * Необходимо доработать данный метод следующим функционлом: + * Необходимо доработать данный метод следующим функционaлом: *
* 1) Необходимо проверять наличие авторизующегося пользователя в списке зарегистрированных пользователей. * Если пользователь не найден, необходимо выбрасывать проверяемое исключение с названием UserNotFoundException @@ -25,15 +28,15 @@ 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(!foundUser.getPassword().equals(user.getPassword())){ + throw new NotCorrectPasswordException("Пароль введен неверно!"); + } CurrentUserManager.setCurrentLoggedInUser(foundUser); return foundUser; diff --git a/src/main/java/com/epam/izh/rd/online/service/CurrentUserManager.java b/src/main/java/com/epam/izh/rd/online/service/CurrentUserManager.java index 90d8441..0f79e20 100644 --- a/src/main/java/com/epam/izh/rd/online/service/CurrentUserManager.java +++ b/src/main/java/com/epam/izh/rd/online/service/CurrentUserManager.java @@ -6,10 +6,10 @@ * Данный класс хранит информацию о текущем авторизованном пользователе (пользователе который вошел в систему). * Считаем, что в систему может войти только один пользователь. *
- * Псле вызова метода {@link AuthenticationService#login(User)}, если все проверки прошли успешно, + * После вызова метода {@link AuthenticationService#login(User)}, если все проверки прошли успешно, * пользователь устанавливается в данное поле. *
- * Поскольку методы статические и поле статическое, его можно доставать в других классх, если понадобится проверить, + * Поскольку методы статические и поле статическое, его можно доставать в других классах, если понадобится проверить, * какое пользователь сейчас находится в системе. *
* Это необходимо например при выполнении метода {@link com.epam.izh.rd.online.repository.UserRepository#deleteByLogin(String)} 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..82ece9b 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 IllegalAccessException, 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..20a976d 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,6 +1,9 @@ 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; @@ -13,7 +16,7 @@ public UserService(IUserRepository userRepository) { } /** - * Необходимо доработать данный метод следующим функционлом: + * Необходимо доработать данный метод следующим функционалом: *
* 1) Необходимо проверять наличие заполнения всех полей сущности User. Если же поле с логином или паролем не * заполнено или заполнено пустой строкой. Необходимо выбрасывать существующее непроверяемое исключение @@ -27,21 +30,28 @@ public UserService(IUserRepository userRepository) { * В случае, если это происходит (например пароль = "123432") необходимо выбрасывать * исключение с названием SimplePasswordException и текстом - "Пароль не соответствует требованиям безопасности" * - * @param user - даныне регистрирующегося пользователя + * @param user - данные регистрирующегося пользователя */ @Override - public User register(User user) { - - // - // Здесь необходимо реализовать перечисленные выше проверки - // - - // Если все проверки успешно пройдены, сохраняем пользователя в базу - return userRepository.save(user); + public User register(User user) throws IllegalArgumentException, UserAlreadyRegisteredException, SimplePasswordException { + String login = user.getLogin(); + String password = user.getPassword(); + if (login.equals("") || password.equals("")){ + throw new IllegalArgumentException("Ошибка в заполнении полей"); + } + if (userRepository.findByLogin(login) != null){ + throw new UserAlreadyRegisteredException("Пользователь с логином "+ login + " уже зарегистрирован"); + } + if (password.matches("\\d+")){ + throw new SimplePasswordException("Пароль не соответствует требованиям безопасности"); + } + { + return userRepository.save(user); + } } /** - * Необходимо доработать данный метод следующим функционлом: + * Необходимо доработать данный метод следующим функционалом: *
* Если мы попытаемся вызвать метод удаления {@link UserRepository#deleteByLogin(String)}
* пользователем не админом (считаем, что админ имеет логин Admin), то будет выброшено исключение
@@ -58,14 +68,13 @@ public User register(User user) {
*
* @param login
*/
- public void delete(String login) {
-
- // Здесь необходимо сделать доработку метод
-
- userRepository.deleteByLogin(login);
-
- // Здесь необходимо сделать доработку метода
+ public void delete(String login) throws NotAccessException {
+try {
+ userRepository.deleteByLogin(login);
+} catch (UnsupportedOperationException e){
+ throw new NotAccessException("Недостаточно прав для выполнения операции");
+}
}
}
diff --git a/src/test/java/com/epam/izh/rd/online/Assert.java b/src/test/java/com/epam/izh/rd/online/Assert.java
index 49c60d5..d451f0d 100644
--- a/src/test/java/com/epam/izh/rd/online/Assert.java
+++ b/src/test/java/com/epam/izh/rd/online/Assert.java
@@ -7,12 +7,12 @@
public class Assert