Авторизация в проекте ресторана: public partial class Autorization : Page { public Autorization() { InitializeComponent(); DataBase.tbE = new Entities22(); } private void btnBack_Click(object sender, RoutedEventArgs e) { FrameWork.MainFrame.Navigate(new FirstPage()); } private void btnAuth_Click(object sender, RoutedEventArgs e) { string p = Convert.ToString(tbpass.Password.GetHashCode()); Users users = DataBase.tbE.Users.FirstOrDefault(x => x.Login == tblog.Text && x.Password == p); if (users != null) { if (users.idRole == 1) { // admin - gerasimov 22!Aaaaa NavigationService.Navigate(new AdminPage2(users)); } else { MessageBox.Show($"Привет, {users.Name}!", "Успешная авторизация", MessageBoxButton.OK, MessageBoxImage.Information); NavigationService.Navigate(new ShowMenu(users.id_client)); NavigationService.Navigate(new PersonalAccount(users)); } } else { MessageBox.Show($"Введенный логин и/или пароль не существуют в системе", "Ошибка авторизации", MessageBoxButton.OK, MessageBoxImage.Error); ; } } private void btngoBack_Click(object sender, RoutedEventArgs e) { NavigationService.Navigate(new FirstPage()); } private void TextBlock_MouseDown(object sender, MouseButtonEventArgs e) { NavigationService.Navigate(new Registration()); } } регистрация 10. Предусмотрите вариант неправильно введенного (или несуществующего) логина или пароля. Также предусмотрите вариант, что у двух пользователей не может быть одного логина (пароли могут совпадать! ) . Введенный пароль должен удовлетворять следующим требованиям: не менее 1 заглавного латинского символа, не менее 3 строчных латинских символов, не менее 2 цифры и не менее 1 спец. символа. Общая длина пароля не менее 8 символов). Если пользователь ввел некорректный пароль, вывести сообщение, какое именно требование не выполнено. Для проверки удовлетворения пароля требованиям должно быть написано регулярное выражение. 11. После регистрации нового пользователя должно появиться уведомление об успешной регистрации public partial class Registration : Page { List countryList = DataBase.tbE.Country.ToList(); List cityList = DataBase.tbE.City.ToList(); List genderList = DataBase.tbE.GenderTable.ToList(); List users = DataBase.tbE.Users.ToList(); public Registration() { InitializeComponent(); DataBase.tbE = new Entities22(); cmb2.ItemsSource = cityList; cmb2.SelectedValuePath = "idCity"; cmb2.DisplayMemberPath = "nameCity"; cmb.ItemsSource = countryList; cmb.SelectedValuePath = "idCountry"; cmb.DisplayMemberPath = "nameCountry"; } private void btnReg_Click(object sender, RoutedEventArgs e) { try { if (checkPassword.IsChecked == true) { tbPassword.Password = tbPasswordTB.Text; } if (checkPassword.IsChecked == false) { tbPasswordTB.Text = tbPassword.Password; } if (checkPassword2.IsChecked == true) { tbPassword2.Password = tbPasswordTB1.Text; } if (checkPassword2.IsChecked == false) { tbPasswordTB1.Text = tbPassword2.Password; } int genderList = 0; if (rb1.IsChecked == true) { genderList = 1; } else if (rb2.IsChecked == true) { genderList = 2; } /// /// Проверка на заполненнсть /// if (!String.IsNullOrEmpty(tbName.Text) && !String.IsNullOrEmpty(tbSurname.Text) && !String.IsNullOrEmpty(tbPatronymic.Text) && !String.IsNullOrEmpty(tbLogin.Text) && !String.IsNullOrEmpty(tbPassword.Password) && !String.IsNullOrEmpty(tbPassword2.Password) && (cmb.SelectedItem != null) && (cmb2.SelectedItem != null) && (rb1.IsChecked == true || rb2.IsChecked == true)) /// /// Проверка на пробелы /// /// if (users.Where(x => x.Login.ToString() == tbLogin.Text).Count() == 0) if (!tbName.Text.Contains(" ") && !tbSurname.Text.Contains(" ") && !tbPatronymic.Text.Contains(" ") && !tbLogin.Text.Contains(" ") && !tbPassword.Password.Contains(" ") && !tbPassword2.Password.Contains(" ")) { // два рбаочих варианта регулярки на две цифры //if (Regex.IsMatch(tbPassword.Password, @"(?=.[0-9]){2,}")) if (Regex.IsMatch(tbPassword.Password, @"(?=.*[0-9].*[0-9])")) { if (Regex.IsMatch(tbPassword.Password, @"(?=.[A-Z]){1,}")) { if (Regex.IsMatch(tbPassword.Password, @"[a-z]+.*[a-z]+.*[a-z]")) { if (Regex.IsMatch(tbPassword.Password, @"\W")) { if (Regex.IsMatch(tbPassword.Password, @"(?=.*[^\w\s]).{8,}")) { if (tbPassword.Password.ToString() == tbPassword2.Password.ToString()) { Users users = new Users() { Name = tbName.Text, Surname = tbSurname.Text, Patronymic = tbPatronymic.Text, Login = tbLogin.Text, Password = tbPassword.Password.GetHashCode().ToString(), idCountry = cmb.SelectedIndex + 1, idCity = cmb2.SelectedIndex + 1, //Country = (Country)cmb.SelectedItem, //City = (City)cmb2.SelectedItem, IdGender = genderList, idRole = 2 }; DataBase.tbE.Users.Add(users); DataBase.tbE.SaveChanges(); MessageBox.Show("Успешная регистрация"); NavigationService.Navigate(new Autorization()); } else { MessageBox.Show("Пароли не совпадают", "Возникла какая-то ошибка", MessageBoxButton.OK, MessageBoxImage.Error); } } else { MessageBox.Show("Пароль должен состоять не менее восьми символов", "Возникла какая-то ошибка", MessageBoxButton.OK, MessageBoxImage.Error); } } else { MessageBox.Show("Пароль должен содержать не менее одного спец.символа", "Возникла какая-то ошибка", MessageBoxButton.OK, MessageBoxImage.Error); } } else { MessageBox.Show("В пароле должно находится не менее 3 строчных латинских символов", "Возникла какая-то ошибка", MessageBoxButton.OK, MessageBoxImage.Error); } } else { MessageBox.Show("В пароле должно находится не менее одного 1 заглавного символа", "Возникла какая-то ошибка", MessageBoxButton.OK, MessageBoxImage.Error); } } else { MessageBox.Show("В пароле содержатся менее двух цифр", "Возникла какая-то ошибка", MessageBoxButton.OK, MessageBoxImage.Error); } } else { MessageBox.Show("Проверьте, чтобы поля не содержали пробелы", "Возникла какая-то ошибка", MessageBoxButton.OK, MessageBoxImage.Error); } else { MessageBox.Show("Такой логин уже существует", "Возникла какая-то ошибка", MessageBoxButton.OK, MessageBoxImage.Error); } else { MessageBox.Show("Возможно не заполнено одно или несколько полей, а также не выбраны какие-то элементы", "Возникла какая-то ошибка", MessageBoxButton.OK, MessageBoxImage.Error); } } catch { MessageBox.Show("Непредвиденная ошибка, попробуйте еще раз", "Возникла какая-то ошибка", MessageBoxButton.OK, MessageBoxImage.Error); } } private void btnBack_Click(object sender, RoutedEventArgs e) { NavigationService.GoBack(); } private void checkPassword_Checked(object sender, RoutedEventArgs e) { if (checkPassword.IsChecked == true) { tbPasswordTB.Text = tbPassword.Password; tbPasswordTB.Visibility = Visibility.Visible; tbPassword.Visibility = Visibility.Collapsed; } } private void checkPassword_Unchecked(object sender, RoutedEventArgs e) { if (checkPassword.IsChecked == false) { tbPassword.Password = tbPasswordTB.Text; tbPasswordTB.Visibility = Visibility.Collapsed; tbPassword.Visibility = Visibility.Visible; } } private void checkPassword2_Checked_1(object sender, RoutedEventArgs e) { if (checkPassword2.IsChecked == true) { tbPasswordTB1.Text = tbPassword2.Password; tbPasswordTB1.Visibility = Visibility.Visible; tbPassword2.Visibility = Visibility.Collapsed; } } private void checkPassword2_Unchecked_1(object sender, RoutedEventArgs e) { if (checkPassword2.IsChecked == false) { tbPassword2.Password = tbPasswordTB1.Text; tbPasswordTB1.Visibility = Visibility.Collapsed; tbPassword2.Visibility = Visibility.Visible; } } private void TextBlock_MouseDown(object sender, MouseButtonEventArgs e) { NavigationService.Navigate(new Autorization()); } } ХЕШ ПАРОЛЯ РАСХЕШИРОВАНИЕ public partial class WindowChangePasswordLogin : Window { Users users; List user = DataBase.tbE.Users.ToList(); public WindowChangePasswordLogin(Users users) { InitializeComponent(); this.users = users; tbLogin.Text = users.Login; } private void Button_Click(object sender, RoutedEventArgs e) { this.Close(); } private void Button_Click_1(object sender, RoutedEventArgs e) { try { string a = tbOldPassword.Password.GetHashCode().ToString(); Users users1 = DataBase.tbE.Users.FirstOrDefault(x => x.Login == users.Login && x.Password == a); if(users1 == null) { MessageBox.Show("Старый пароль не соответствует действительности", "Возникла какая-то ошибка", MessageBoxButton.OK, MessageBoxImage.Error); } /// /// Проверка на заполненнсть /// if (!String.IsNullOrEmpty(tbLogin.Text) && !String.IsNullOrEmpty(tbOldPassword.Password) && !String.IsNullOrEmpty(tbNewPassword.Password) && !String.IsNullOrEmpty(tbNewNewPas.Password)) /// /// Проверка на пробелы /// /// if (user.Where(x => x.Login.ToString() == tbLogin.Text).Count() == 0) if (!tbLogin.Text.Contains(" ") && !tbOldPassword.Password.Contains(" ") && !tbNewPassword.Password.Contains(" ") && !tbNewNewPas.Password.Contains(" ") ) { // два рбаочих варианта регулярки на две цифры //if (Regex.IsMatch(tbPassword.Password, @"(?=.[0-9]){2,}")) if (Regex.IsMatch(tbNewNewPas.Password, @"(?=.*[0-9].*[0-9])") && Regex.IsMatch(tbNewPassword.Password, @"(?=.*[0-9].*[0-9])")) { if (Regex.IsMatch(tbNewNewPas.Password, @"(?=.[A-Z]){1,}") && Regex.IsMatch(tbNewPassword.Password, @"(?=.[A-Z]){1,}")) { if (Regex.IsMatch(tbNewNewPas.Password, @"[a-z]+.*[a-z]+.*[a-z]") && Regex.IsMatch(tbNewPassword.Password, @"[a-z]+.*[a-z]+.*[a-z]")) { if (Regex.IsMatch(tbNewNewPas.Password, @"\W") && Regex.IsMatch(tbNewPassword.Password, @"\W")) { if (Regex.IsMatch(tbNewNewPas.Password, @"(?=.*[^\w\s]).{8,}") && Regex.IsMatch(tbNewPassword.Password, @"(?=.*[^\w\s]).{8,}")) { if (tbNewNewPas.Password.ToString() == tbNewPassword.Password.ToString()) { users.Login = tbLogin.Text; users.Password = tbNewNewPas.GetHashCode().ToString(); DataBase.tbE.SaveChanges(); MessageBox.Show("Успешно"); this.Close(); } else { MessageBox.Show("Пароли не совпадают", "Возникла какая-то ошибка", MessageBoxButton.OK, MessageBoxImage.Error); } } else { MessageBox.Show("Пароль должен состоять не менее восьми символов", "Возникла какая-то ошибка", MessageBoxButton.OK, MessageBoxImage.Error); } } else { MessageBox.Show("Пароль должен содержать не менее одного спец.символа", "Возникла какая-то ошибка", MessageBoxButton.OK, MessageBoxImage.Error); } } else { MessageBox.Show("В пароле должно находится не менее 3 строчных латинских символов", "Возникла какая-то ошибка", MessageBoxButton.OK, MessageBoxImage.Error); } } else { MessageBox.Show("В пароле должно находится не менее одного 1 заглавного символа", "Возникла какая-то ошибка", MessageBoxButton.OK, MessageBoxImage.Error); } } else { MessageBox.Show("В пароле содержатся менее двух цифр", "Возникла какая-то ошибка", MessageBoxButton.OK, MessageBoxImage.Error); } } else { MessageBox.Show("Проверьте, чтобы поля не содержали пробелы", "Возникла какая-то ошибка", MessageBoxButton.OK, MessageBoxImage.Error); } else { MessageBox.Show("Такой логин уже существует", "Возникла какая-то ошибка", MessageBoxButton.OK, MessageBoxImage.Error); } else { MessageBox.Show("Возможно не заполнено одно или несколько полей, а также не выбраны какие-то элементы", "Возникла какая-то ошибка", MessageBoxButton.OK, MessageBoxImage.Error); } } catch { MessageBox.Show("Непредвиденная ошибка, попробуйте еще раз", "Возникла какая-то ошибка", MessageBoxButton.OK, MessageBoxImage.Error); } } }