|
@@ -0,0 +1,460 @@
|
|
|
+Авторизация в проекте ресторана:
|
|
|
+
|
|
|
+
|
|
|
+ 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<Country> countryList = DataBase.tbE.Country.ToList();
|
|
|
+ List<City> cityList = DataBase.tbE.City.ToList();
|
|
|
+ List<GenderTable> genderList = DataBase.tbE.GenderTable.ToList();
|
|
|
+ List<Users> 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; }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// Проверка на заполненнсть
|
|
|
+ /// </summary>
|
|
|
+ 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))
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// Проверка на пробелы
|
|
|
+ /// </summary>
|
|
|
+ ///
|
|
|
+ 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<Users> 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);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// Проверка на заполненнсть
|
|
|
+ /// </summary>
|
|
|
+ if (!String.IsNullOrEmpty(tbLogin.Text)
|
|
|
+ && !String.IsNullOrEmpty(tbOldPassword.Password)
|
|
|
+ && !String.IsNullOrEmpty(tbNewPassword.Password)
|
|
|
+ && !String.IsNullOrEmpty(tbNewNewPas.Password))
|
|
|
+
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// Проверка на пробелы
|
|
|
+ /// </summary>
|
|
|
+ ///
|
|
|
+
|
|
|
+ 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);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|