-
Notifications
You must be signed in to change notification settings - Fork 63
Expand file tree
/
Copy pathUserService.java
More file actions
80 lines (72 loc) · 4.96 KB
/
UserService.java
File metadata and controls
80 lines (72 loc) · 4.96 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
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;
public UserService(IUserRepository userRepository) {
this.userRepository = userRepository;
}
/**
* Необходимо доработать данный метод следующим функционалом:
* <p>
* 1) Необходимо проверять наличие заполнения всех полей сущности User. Если же поле с логином или паролем не
* заполнено или заполнено пустой строкой. Необходимо выбрасывать существующее непроверяемое исключение
* {@link IllegalArgumentException} с текстом "Ошибка в заполнении полей".
* <p>
* 2) Необходимо запрещать регистрацию пользователя, если другой пользователь с подобным логином уже
* зарегистрирован. Необходимо в таком случае выбрасывать проверяемое исключение с названием UserAlreadyRegisteredException
* и текстом - "Пользователь с логином 'login' уже зарегистрирован", где login - логин пользователя.
* <p>
* 3) Необходимо запрещать регистрацию пользователя, если он пытается установить пароль состоящий из цифр.
* В случае, если это происходит (например пароль = "123432") необходимо выбрасывать
* исключение с названием SimplePasswordException и текстом - "Пароль не соответствует требованиям безопасности"
*
* @param user - данные регистрирующегося пользователя
*/
@Override
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);
}
}
/**
* Необходимо доработать данный метод следующим функционалом:
* <p>
* Если мы попытаемся вызвать метод удаления {@link UserRepository#deleteByLogin(String)}
* пользователем не админом (считаем, что админ имеет логин Admin), то будет выброшено исключение
* {@link UnsupportedOperationException} из репозитория.
* <p>
* При этом, текст этого исключения выглядит очень непрезентабельно.
* <p>
* Поэтому, если мы не перехватим (через try-catch) это исключение, то оно уйдет пользователю с данным текстом.
* Нам необходимо это предотвратить, перехватив данное исключение и выбросив в ответ на него свое,
* но уже с понятным для пользователя сообщением.
* <p>
* Название вашего исключения должно быть следующее - NotAccessException и текст сообщения должен
* быть "Недостаточно прав для выполнения операции"
*
* @param login
*/
public void delete(String login) throws NotAccessException {
try {
userRepository.deleteByLogin(login);
} catch (UnsupportedOperationException e){
throw new NotAccessException("Недостаточно прав для выполнения операции");
}
}
}