diff --git a/java-exceptions-template.iml b/java-exceptions-template.iml
new file mode 100644
index 0000000..933182c
--- /dev/null
+++ b/java-exceptions-template.iml
@@ -0,0 +1,23 @@
+
+
* Позволяет сохранять\обновлять пользователей.
* Позволяет находить пользователя по логину.
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..838c324 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,22 @@ 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());
+ validateUserLoginAndPassword(user);
- //
- // Здесь необходимо реализовать перечисленные выше проверки
- //
-
- // Устанавливаем найденного пользователя, который прошел все проверки, как вошедшего в систему.
CurrentUserManager.setCurrentLoggedInUser(foundUser);
-
return foundUser;
}
+ private void validateUserLoginAndPassword(User user) throws UserNotFoundException,NotCorrectPasswordException {
+ if (userRepository.findByLogin(user.getLogin()) == null) {
+ throw new UserNotFoundException("Пользователь с таким логином не найден");
+ } else if (!userRepository.findByLogin(user.getLogin()).getPassword().equals(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..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..92905be 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;
@@ -30,14 +33,33 @@ public UserService(IUserRepository userRepository) {
* @param user - даныне регистрирующегося пользователя
*/
@Override
- public User register(User user) {
+ public User register(User user) throws UserAlreadyRegisteredException, SimplePasswordException {
+ validateUserData(user);
+ return userRepository.save(user);
+ }
- //
- // Здесь необходимо реализовать перечисленные выше проверки
- //
+ private void validateUserData(User user) throws UserAlreadyRegisteredException, SimplePasswordException {
+ isEmptyLoginOrPasswordUserValue(user);
+ isUserAlreadyRegistered(user);
+ isUserSimplePassword(user);
+ }
- // Если все проверки успешно пройдены, сохраняем пользователя в базу
- return userRepository.save(user);
+ private void isEmptyLoginOrPasswordUserValue(User user) {
+ if (user.getLogin().isEmpty() || user.getPassword().isEmpty()) {
+ throw new IllegalArgumentException("Ошибка в заполнении полей");
+ }
+ }
+
+ private void isUserSimplePassword(User user) throws UserAlreadyRegisteredException {
+ if (userRepository.findByLogin(user.getLogin()) != null) {
+ throw new UserAlreadyRegisteredException("Пользователь с логином " + user.getLogin() + " уже зарегистрирован");
+ }
+ }
+
+ private void isUserAlreadyRegistered(User user) throws SimplePasswordException {
+ if (user.getPassword().matches("\\d*")) {
+ throw new SimplePasswordException("Пароль не соответствует требованиям безопасности");
+ }
}
/**
@@ -58,14 +80,11 @@ 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("Недостаточно прав для выполнения операции");
+ }
}
-
}
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