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); + } +}