diff --git a/.gitignore b/.gitignore
index f68d109..1a3879a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,5 @@
### IntelliJ IDEA ###
+.idea/
out/
!**/src/main/**/out/
!**/src/test/**/out/
diff --git a/.idea/.gitignore b/.idea/.gitignore
deleted file mode 100644
index 26d3352..0000000
--- a/.idea/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-# Default ignored files
-/shelf/
-/workspace.xml
diff --git a/.idea/misc.xml b/.idea/misc.xml
deleted file mode 100644
index 07115cd..0000000
--- a/.idea/misc.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
deleted file mode 100644
index 65e8411..0000000
--- a/.idea/modules.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
deleted file mode 100644
index 94a25f7..0000000
--- a/.idea/vcs.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/src/Account.java b/src/Account.java
new file mode 100644
index 0000000..9c96a10
--- /dev/null
+++ b/src/Account.java
@@ -0,0 +1,90 @@
+import java.util.regex.Pattern;
+
+public class Account {
+ static int counter =1;
+ private int id = counter;
+
+
+
+ private String name;
+
+ /**
+ * Конструктор по умолчанию
+ */
+ public Account(){
+ this.name = "user";
+ }
+
+ /**
+ * Конструктор с name
+ * @param name имя пользователя
+ */
+ public Account(String name) {
+ this.name = name;
+ }
+
+ /**
+ * Геттер ID
+ * @return ID пользователя
+ */
+ public int getId() {
+ return id;
+ }
+
+ /**
+ * Сетер
+ * @param name имя пользователя
+ */
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ /**
+ * Геттер
+ * @return имя пользователя
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * Функция Аунтификации пользователя
+ * @param login Длина должна быть меньше 20 символов и должен содержать только латинские буквы,
+ * цифры и знак подчеркивания.
+ * @param password Длина должна быть меньше 20 символов и должен содержать только латинские буквы,
+ * цифры и знак подчеркивания.
+ * @param confirmPassword Должен быть равен password и длина должна быть меньше 20 символов,
+ * должен содержать только латинские буквы, цифры и знак подчеркивания.
+ * @return Boolean состояние авторизации
+ * @throws WrongLoginException Выбрасывается если login длиннее 20 символов и содержит,
+ * что-то кроме латинских букв, цифр и знаков подчеркивания.
+ * @throws WrongPasswordException Выбрасывается если password и confirmPassword неравны и\или
+ * длиннее 20 символов, содержит, что-то кроме латинских букв,
+ * цифр и знаков подчеркивания.
+ */
+ public static boolean authentification(String login,String password, String confirmPassword) throws Exception{
+ boolean auth = false;
+ try {
+ boolean loginCheck = Pattern.compile("[A-Za-z0-9]+").matcher(login).find() && login.length()<20;
+ boolean passwordCheck = Pattern.compile("[A-Za-z0-9]+").matcher(password).find()
+ && login.length()<20 && (password.equals(confirmPassword));
+ if (loginCheck && passwordCheck) {
+ auth = true;
+ System.out.println("You authorizated!");
+ }
+ else if (!loginCheck) {
+ throw new WrongLoginException("Неверный логин!");
+ }
+ else if(!passwordCheck) {
+ throw new WrongPasswordException("Неверный пароль!");
+ }
+ }
+ catch (WrongLoginException | WrongPasswordException e){
+ auth = false;
+ System.out.println("ERR: "+ e.getMessage());
+ }
+ finally {
+ return auth;
+ }
+ }
+}
diff --git a/src/Main.java b/src/Main.java
index 7aeb918..f2e95a8 100644
--- a/src/Main.java
+++ b/src/Main.java
@@ -1,15 +1,26 @@
-//TIP To Run code, press or
-// click the icon in the gutter.
+/** Класс main
+ //✅ Создать статический метод который принимает на вход три параметра: login, password и confirmPassword.
+ //✅ Login должен содержать только латинские буквы, цифры и знак подчеркивания.
+ //✅ Длина login должна быть меньше 20 символов. Если login не соответствует этим требованиям, необходимо выбросить WrongLoginException.
+ //✅ Password должен содержать только латинские буквы, цифры и знак подчеркивания. Длина password должна быть меньше 20 символов.
+ Также password и confirmPassword должны быть равны. Если password не соответствует этим требованиям, необходимо выбросить
+ WrongPasswordException.
+ //✅ WrongPasswordException и WrongLoginException - пользовательские классы исключения с двумя конструкторами
+ //✅ один по умолчанию, второй принимает сообщение исключения и передает его в конструктор класса Exception.
+ //✅ Обработка исключений проводится внутри метода.
+ //✅ Используем multi-catch block.
+ //✅ Метод возвращает true, если значения верны или false в другом случае.
+ */
public class Main {
- public static void main(String[] args) {
- //TIP Press with your caret at the highlighted text
- // to see how IntelliJ IDEA suggests fixing it.
- System.out.printf("Hello and welcome!");
-
- for (int i = 1; i <= 5; i++) {
- //TIP Press to start debugging your code. We have set one breakpoint
- // for you, but you can always add more by pressing .
- System.out.println("i test git= " + i);
+ public static void main(String[] args) throws Exception {
+ String login = "Default_Login";
+ String password = "Default_Pыassword23";
+ String confirmPassword = "Default_Password123";
+ if (args.length == 3){
+ login = args[0];
+ password = args[1];
+ confirmPassword = args[2];
}
+ System.out.println("Состояние вашей авторизации: "+Account.authentification(login,password,confirmPassword));
}
-}
\ No newline at end of file
+}
diff --git a/src/WrongLoginException.java b/src/WrongLoginException.java
new file mode 100644
index 0000000..f9115ea
--- /dev/null
+++ b/src/WrongLoginException.java
@@ -0,0 +1,11 @@
+/**
+ * Пользовательский класс ошибки для обозначения неверного логина
+ */
+public class WrongLoginException extends Exception {
+ public WrongLoginException() {
+ super();
+ }
+ public WrongLoginException(String message) {
+ super(message);
+ }
+}
diff --git a/src/WrongPasswordException.java b/src/WrongPasswordException.java
new file mode 100644
index 0000000..bf2e662
--- /dev/null
+++ b/src/WrongPasswordException.java
@@ -0,0 +1,11 @@
+/**
+ * Пользовательский класс ошибки для обозначения неверного пароля
+ */
+public class WrongPasswordException extends Exception {
+ public WrongPasswordException() {
+ super();
+ }
+ public WrongPasswordException(String message) {
+ super(message);
+ }
+}