public static String GetPassword() // ПАРОЛЬ-ВВОД { String Password = ""; ConsoleKeyInfo key; do { key = Console.ReadKey(true); // Ignore any key out of range. if (((int)key.Key) >= 65 && ((int)key.Key <= 90) || ((int)key.Key) >= 48 && ((int)key.Key <= 57)) { // Append the character to the password. Password += key.KeyChar; ColorTextOut.DarkCyanText("*"); } if (((int)key.Key) == 8 && Password.Length != 0) { Password = Password.Remove(Password.Length - 1); ColorTextOut.DarkCyanText(key.KeyChar.ToString() + " " + key.KeyChar.ToString()); } if (Password.Length > 15) { ColorTextOut.RedText("\t\t(допустимый разер пароля не больше 15 символов)"); break; } // Exit if Enter key is pressed. } while (key.Key != ConsoleKey.Enter); System.Threading.Thread.Sleep(500); Console.WriteLine(); return(Password); }
public static void ShowUsers() // ПОКАЗ / ПОДСЧЁТ ПОЛЬЗОВАТЕЛЕЙ { ColorTextOut.GreenText("Показ пльзователей\n\n"); try { FileStream fs = new FileStream("Users.txt", FileMode.Open); BinaryFormatter formatter = new BinaryFormatter(); Users user = (Users)formatter.Deserialize(fs); ColorTextOut.DarkCyanText("Количество пользователей: "); ColorTextOut.RedText(user.Logins.Count + "\n\n"); fs.Close(); for (int i = 0; i < user.Logins.Count; i++) // Ищем пользователя и проверяем правильность пароля. { Console.Write("Пользователь [" + i + "]: "); ColorTextOut.CyanText(user.Logins[i]); if (i == 0) { ColorTextOut.RedText("\t{Admin} "); Console.WriteLine(); } else { Console.WriteLine(); } } Console.WriteLine(); } catch { Console.WriteLine("Данных нет"); } ColorTextOut.DarkCyanText("Для подолжения нажмите любую клавишу..."); }
public static String GetLogin() // ЛОГИН-ВВОД { String Loggin = ""; ConsoleKeyInfo key; do { key = Console.ReadKey(true); // Ignore any key out of range. if (((int)key.Key) >= 65 && ((int)key.Key <= 90)) { // Append the character to the password. Loggin += key.KeyChar; ColorTextOut.DarkCyanText(key.KeyChar.ToString()); } if (((int)key.Key) == 8 && Loggin.Length != 0) { Loggin = Loggin.Remove(Loggin.Length - 1); ColorTextOut.DarkCyanText(key.KeyChar.ToString() + " " + key.KeyChar.ToString()); } if (Loggin.Length > 15) { ColorTextOut.RedText("\t\t(допустимый разер логина не больше 15 символов)"); break; } // Exit if Enter key is pressed. } while (key.Key != ConsoleKey.Enter); Console.WriteLine(); return(Loggin); }
public static void AddUser() // ДОБАВЛЕНИЕ ПОЛЬЗОВАТЕЛЯ { if (Admin_Check()) { FileStream fs = new FileStream("Users.txt", FileMode.OpenOrCreate, FileAccess.ReadWrite); BinaryFormatter formatter = new BinaryFormatter(); Users user; try { user = (Users)formatter.Deserialize(fs); } catch { user = new Users(); } bool login_absent = true; ColorTextOut.GreenText("Добавление нового пользователя\n\n"); ColorTextOut.CyanText("Пользователь: "); string _login = LoginPasswordTextIn.GetLogin(); for (int i = 0; i < user.Logins.Count; i++) { if (_login == user.Logins[i]) { login_absent = false; break; } } if (login_absent) { ColorTextOut.CyanText("Пароль Пользователя: "); string _password = LoginPasswordTextIn.GetPassword(); if (_login == "" || _password == "") { Console.WriteLine("Не введен логин или пароль!"); } else { fs.SetLength(0); user.Logins.Add(_login); user.Passwords.Add(_password); formatter = new BinaryFormatter(); formatter.Serialize(fs, user); // Сериализуем класс. Logs.AddUser(_login); ColorTextOut.DarkCyanText("\nПользователь Добавлен! Для продолжения нажмите любую клавишу..."); } } else { ColorTextOut.DarkCyanText("\nТакой пользователь уже существует!\nДля продолжения нажмите любую клавишу..."); } fs.Close(); } }
public static int ReadOnlyInt(int a, int b) // ЦИФР-ВВОД { int value; bool ok = false; ConsoleKeyInfo key; do { ColorTextOut.CyanText("Введите значение: "); string buf = ""; do { key = Console.ReadKey(true); // Ignore any key out of range. if (((int)key.Key) >= 48 && ((int)key.Key <= 57)) { // Append the character to the password. buf += key.KeyChar; ColorTextOut.DarkCyanText(key.KeyChar.ToString()); } if (((int)key.Key) == 8 && buf.Length != 0) { buf = buf.Remove(buf.Length - 1); ColorTextOut.DarkCyanText(key.KeyChar.ToString() + " " + key.KeyChar.ToString()); } if (buf.Length > 5) { ColorTextOut.RedText("\t\t(допустимый разер не больше 5 символов)"); break; } // Exit if Enter key is pressed. } while (key.Key != ConsoleKey.Enter); ok = Int32.TryParse(buf, out value); if (value >= a && value <= b) { } else { ok = false; } if (ok == false) { ColorTextOut.DarkRedText("\nОшибка: "); ColorTextOut.RedText("Значение не правильно!!!"); Console.WriteLine(); Console.WriteLine(); } } while (ok == false); return(value); }
public static void ShowLogsUsers() // ЛОГИ ПОЛЬЗОВАТЕЛЕЙ { if (Admin_Check()) { ColorTextOut.GreenText("Показ логов пользователей\n\n"); EncryptDecrypt.Decrypt("LOGS.txt"); FileStream stream = new FileStream("LOGS.txt", FileMode.OpenOrCreate); StreamReader reader = new StreamReader(stream); string str = reader.ReadToEnd(); stream.Close(); EncryptDecrypt.Crypt("LOGS.txt"); ColorTextOut.CyanText(str + "\n\n"); ColorTextOut.DarkCyanText("Для продолжения нажмите любую клавишу..."); } }
private static void TheSystem() // СИСТЕМА ПОД ДАННОГО ПОЛЬЗОВАТЕЛЯ { int Choise_System; do { Console.Clear(); ColorTextOut.GreenText("Генерация кораблей стоящих в порту и их динамическое хранение\nв виде кортежей, списков и обобщенных коллекций\n\n"); ColorTextOut.DarkCyanText("Системное меню:\n1.Выполнение программы\n2.Управление пользователями\n0.Выход\n\n"); Choise_System = IntNumRangeIn.ReadOnlyInt(0, 2); switch (Choise_System) { case 1: { DefendedProgram.MainProg(); break; } case 2: { UsersConfig(); //проверка if (admin_changed == true) { Choise_System = 0; } break; } case 0: { Logs.LogOut(current_login, user_id); current_login = string.Empty; break; } } } while (Choise_System != 0); }
/// ВСПОМОГАТЕЛЬНАЯ ФУНКЦИЯ public static bool Admin_Check() // АДМИН-ПРИВЕЛЕГИИ { try { FileStream fs = new FileStream("Users.txt", FileMode.Open); BinaryFormatter formatter = new BinaryFormatter(); Users user = (Users)formatter.Deserialize(fs); fs.Close(); if (user.Logins[0] == Program.current_login && user.Passwords[0] == Program.current_password) { return(true); } else { ColorTextOut.RedText("Пользователь не является Администаратором и не может выполнить данное действие!\nДля продолжения нажмите любую клавишу..."); return(false); } } catch { ColorTextOut.RedText("Неизвестная ошибка, возможно нет пользователей!\nДля продолжения нажмите любую клавишу..."); return(false); } }
public static void DeleteUser() // УДАЛЕНИЕ ПОЛЬЗОВАТЕЛЯ { if (Admin_Check()) { ColorTextOut.GreenText("Удаление пользователя\n\n"); FileStream fs = new FileStream("Users.txt", FileMode.Open); BinaryFormatter formatter = new BinaryFormatter(); Users user = (Users)formatter.Deserialize(fs); if (user.Logins.Count == 1) { ColorTextOut.DarkRedText("Единственный пользователь не может быть удалён!\nДля прододжения нажмите любую клавишу..."); } else { ColorTextOut.CyanText("Пользователь: "); string _login = LoginPasswordTextIn.GetLogin(); ColorTextOut.CyanText("Пароль Пользователя: "); string _password = LoginPasswordTextIn.GetPassword(); if (Program.current_login == _login && Program.current_password == _password) { int Choise_Delete; ColorTextOut.RedText("\nВы уверены что хотите удалить Администатора?\nВ данном случае система перезапустится и роль администатора перейдёт следующему по спику пользователю\n\n"); ColorTextOut.CyanText("1.Да\n2.Нет\n\n"); Choise_Delete = IntNumRangeIn.ReadOnlyInt(1, 2); switch (Choise_Delete) { case 1: { fs.SetLength(0); Program.admin_changed = true; user.Logins.Remove(_login); user.Passwords.Remove(_password); formatter.Serialize(fs, user); // Сериализуем класс. ColorTextOut.DarkCyanText("\n\nУчётная запись Администратора удалёна! Данная роль перешла следующему по списку пользователю!\nДля продолжения нажмите любую клавишу..."); break; } case 2: { ColorTextOut.DarkCyanText("\n\nУчётная запись администратора не удалена!\n Для продолжения нажмите любую клавишу..."); break; } } } else { { try { bool user_absent = true; for (int i = 0; i < user.Logins.Count; i++) { if (_login == user.Logins[i] & _password == user.Passwords[i]) { user_absent = false; break; } } if (user_absent == true) { ColorTextOut.DarkRedText("\nПользователь или пароль не верны! Для продолжения нажмите любую клавишу..."); } else { fs.SetLength(0); user.Logins.Remove(_login); user.Passwords.Remove(_password); formatter.Serialize(fs, user); // Сериализуем класс. Logs.DeleteUser(_login); ColorTextOut.DarkCyanText("\nПользователь удалён! Для продолжения нажмите любую клавишу..."); } } catch { ColorTextOut.DarkRedText("\nПользователь не навйлен! Для продолжения нажмите любую клавишу..."); } } } } fs.Close(); } }
public static void AdminRightsTransfer() // ПЕРЕДАЧА ПРАВ { if (Admin_Check()) { ColorTextOut.GreenText("Передача прав Администрора\n\n"); FileStream fs = new FileStream("Users.txt", FileMode.Open); BinaryFormatter formatter = new BinaryFormatter(); Users user = (Users)formatter.Deserialize(fs); if (user.Logins.Count == 1) { ColorTextOut.DarkRedText("Единственный пользователь не может передать права!\nДля прододжения нажмите любую клавишу..."); } else { ColorTextOut.CyanText("Пользователь: "); string _login = LoginPasswordTextIn.GetLogin(); ColorTextOut.CyanText("Пароль Пользователя: "); string _password = LoginPasswordTextIn.GetPassword(); if (Program.current_login == _login && Program.current_password == _password) { ColorTextOut.RedText("\nВы уже являетесь администратором\nДля прододжения нажмите любую клавишу..."); } else { { try { bool user_absent = true; int NewAdmin = 0; for (int i = 0; i < user.Logins.Count; i++) { if (_login == user.Logins[i] & _password == user.Passwords[i]) { user_absent = false; NewAdmin = i; break; } } if (user_absent == true) { ColorTextOut.DarkRedText("\nЛогин пользователя или пароль не верны! Для продолжения нажмите любую клавишу..."); } else { fs.SetLength(0); user.Logins[0] = user.Logins[NewAdmin]; user.Passwords[0] = user.Passwords[NewAdmin]; user.Logins[NewAdmin] = Program.current_login; user.Passwords[NewAdmin] = Program.current_password; formatter.Serialize(fs, user); // Сериализуем класс. Logs.TransferRights(_login, Program.current_login); ColorTextOut.DarkCyanText("\nПрава Переданы! Для продолжения нажмите любую клавишу..."); } } catch { ColorTextOut.DarkRedText("\nПользователь не навйлен! Для продолжения нажмите любую клавишу..."); } } } } fs.Close(); } }
public static int user_id; //id ПОЛЬЗОВАТЕЛЯ private static void SystemLogin() // ВХОД В СИСТЕМУ { int Choise_Login; do { Console.Clear(); admin_changed = false; ColorTextOut.GreenText("Генерация кораблей стоящих в порту и их динамическое хранение \nв виде кортежей, списков и обобщенных коллекций\n\n"); ColorTextOut.YellowText("Войти в систему?\n\n1.Войти\n0.Завыршить работу\n\n"); Choise_Login = IntNumRangeIn.ReadOnlyInt(0, 1); switch (Choise_Login) { case 1: { try { Console.Clear(); ColorTextOut.GreenText("Генерация кораблей стоящих в порту и их динамическое хранение \nв виде кортежей, списков и обобщенных коллекций\n\n"); ColorTextOut.YellowText("Вход в систему\n\n"); FileStream fs = new FileStream("Users.txt", FileMode.Open); BinaryFormatter formatter = new BinaryFormatter(); Users user = (Users)formatter.Deserialize(fs); fs.Close(); ColorTextOut.CyanText("Пользователь: "); string _login = LoginPasswordTextIn.GetLogin(); ColorTextOut.CyanText("Пароль: "); string _password = LoginPasswordTextIn.GetPassword(); for (int i = 0; i < user.Logins.Count; i++) // Ищем пользователя и проверяем правильность пароля. { if (user.Logins[i] == _login && user.Passwords[i] == _password) { Console.WriteLine(); Console.Write("Вы вошли в систему!\nДля продолжения нажмите любую клавишу..."); current_login = user.Logins[i]; current_password = user.Passwords[i]; { // ЗАПИСЬ user_id = i; Logs.LogIn(current_login, user_id); } Console.ReadKey(); Console.Clear(); TheSystem(); break; } else if (user.Logins[i] == _login & _password != user.Passwords[i]) { ColorTextOut.RedText("\nНеверный пароль!\n"); int Counter_Wrong_Pass = 0; while (_password != user.Passwords[i]) { ColorTextOut.CyanText("Пароль: "); _password = LoginPasswordTextIn.GetPassword(); if (_password != user.Passwords[i]) { ColorTextOut.RedText("\nНеверный пароль!\n"); Counter_Wrong_Pass++; if (Counter_Wrong_Pass == 3) { ColorTextOut.RedText("\nВы ввели пароль неверно более 3 раз\nДля продолдения нажмите любую клавишу..."); Logs.InvalidPass(_login); Console.ReadKey(); break; } } else { Console.WriteLine(); Console.Write("Вы вошли в систему!\nДля продолжения нажмите любую клавишу..."); current_login = user.Logins[i]; current_password = user.Passwords[i]; { // ЗАПИСЬ user_id = i; Logs.LogIn(current_login, i); } Console.ReadKey(); Console.Clear(); TheSystem(); } } break; } else if (i == user.Logins.Count - 1) { Console.WriteLine(); ColorTextOut.RedText("Пользователь " + _login + " не найден!\nДля продолжения нажмите любую клавишу..."); Console.ReadKey(); } } } catch { Console.WriteLine("Error acquired!"); return; } break; } case 0: { Console.Write("\n\nДля продолжения нажмите любую клавишу..."); Console.ReadKey(); break; } } } while (Choise_Login != 0); }
private static void UsersConfig() // УПРАВЛЕНИЕ ПОЛЬЗОВАТЕЛЯМИ { int Choise_System_Config; do { Console.Clear(); ColorTextOut.GreenText("Выбор действий над пользователем\n\n"); ColorTextOut.DarkCyanText("Системное меню:\n1.Показать пользователей\n2.Добавление пользователя\n3.Удаление пользователя\n4.Просмотр логов пользователей\n5.Передача прав администрара\n0.Выход\n\n"); Choise_System_Config = IntNumRangeIn.ReadOnlyInt(0, 5); switch (Choise_System_Config) { case 1: { Console.Clear(); AccManagement.ShowUsers(); Console.ReadKey(); break; } case 2: { Console.Clear(); AccManagement.AddUser(); Console.ReadKey(); break; } case 3: { Console.Clear(); AccManagement.DeleteUser(); Console.ReadKey(); //проверка if (admin_changed == true) { Choise_System_Config = 0; } break; } case 4: { Console.Clear(); AccManagement.ShowLogsUsers(); Console.ReadKey(); break; } case 5: { Console.Clear(); AccManagement.AdminRightsTransfer(); Console.ReadKey(); break; } case 0: break; } } while (Choise_System_Config != 0); }