/// <summary> ///Событие нажатия на кнопку окна "Вход" /// </summary> private void BtnLogin_Click(object sender, RoutedEventArgs e) { //Проверка корректности введеного логина if (!User.IsCorrectName(tbxUserName.Text, out string message)) { MessageBox.Show(message); tbxUserName.Focus(); } //Проверка введен ли пароль else if (string.IsNullOrEmpty(pbxPassword.Password)) { MessageBox.Show("Введите пароль!"); pbxPassword.Focus(); } else { //Проверка подключения к БД if (!SQLCon.ConnectToDatabase()) { Close(); } //Получим хэш-пароль, применив алгоритм ГОСТ 34.11-2012 byte[] password = Encoding.GetEncoding(1251).GetBytes(pbxPassword.Password); GOST o = new GOST(512 /*256*/); byte[] hash_code = o.H(password); string hashpassword = BitConverter.ToString(hash_code); //Получаем таблицу с учетными данными пользователя из БД, где найдутся такой логин и пароль в одной строке DataTable dateTable = SQLCon.GetDateTable($"SELECT * FROM tblAccounts WHERE UserName='******' AND Password='******';"); if (dateTable != null && dateTable.Rows.Count != 0) { User.Name = dateTable.Rows[0]["UserName"] as string; User.Password = dateTable.Rows[0]["Password"] as string; User.IsAdmin = (bool)dateTable.Rows[0]["IsAdmin"]; AccessWindow accessWindow = new AccessWindow(); Close(); accessWindow.ShowDialog(); //MessageBox.Show("Доступ разрешен."); } else { MessageBox.Show("Доступ запрещен. Введен невенрный логин или пароль."); } } }
//Обработчик события нажатия на кнопку "Зарегистрировать"/"Изменить пароль" private void BtnLogin_Click(object sender, RoutedEventArgs e) { object o; //Проверка на заполненость всех полей ввода if (!IsChangePassword && !User.IsCorrectName(tbxName.Text, out string message)) { MessageBox.Show(message); tbxName.Focus(); } else if (string.IsNullOrEmpty(pbxPassword1.Password)) { MessageBox.Show("Введите пароль!"); pbxPassword1.Focus(); } else if (string.IsNullOrEmpty(pbxPassword2.Password)) { MessageBox.Show("Повторите пароль!"); pbxPassword1.Focus(); } //Проверка на совпадение введенных паролей else if (pbxPassword1.Password != pbxPassword2.Password) { MessageBox.Show("Пароли не совпадают!"); pbxPassword1.Focus(); } //Если пройдены все предварительные проверки, выполнение регистрации else if (SQLCon.ExecuteScalar($"SELECT COUNT(*) FROM tblAccounts WHERE UserName='******'", out o)) { //Проверка на наличие в БД пользователя с таким же логином(по sql-запросу выше) if (!IsChangePassword && (int)o != 0) { MessageBox.Show("Пользователь с таким именем уже существует."); } else { //Получим хэш-пароль, применив алгоритм ГОСТ 34.11-2012 byte[] password = Encoding.GetEncoding(1251).GetBytes(pbxPassword1.Password); GOST g = new GOST(512 /*256*/); byte[] hash_code = g.H(password); string hashpassword = BitConverter.ToString(hash_code); //Запись учет.данных администратора/пользователя в таблицу БД if (!IsChangePassword && (int)o == 0) { if (SQLCon.ExecuteScalar($"INSERT INTO tblAccounts (UserName, Password, IsAdmin) VALUES ('{tbxName.Text}', '{hashpassword}', '{AsAdmin}')")) { MessageBox.Show("Регистрация успешно завершена."); Success = true; Close(); } } //Изменение хэш-кода пароля в БД на новый else if (IsChangePassword) { if (hashpassword == User.Password) { MessageBox.Show("Введенный пароль совпадает с текущим. Необходимо ввести новый пароль"); } else { SQLCon.ExecuteScalar(string.Format("UPDATE tblAccounts SET Password='******' WHERE [UserName]='{1}'", hashpassword, User.Name)); User.Password = hashpassword; MessageBox.Show("Пароль изменен."); Success = true; MainWindow mainWindow = new MainWindow(); Close(); mainWindow.Show(); } } } } }