//Обработчик события нажатия на кнопку "Удалить учетную запись" private void BtnRemove_Click(object sender, RoutedEventArgs e) { object o; //Проверка не выполнен ли выбор пользователь для удаления if (dgUsersAccounts.SelectedIndex == -1) { MessageBox.Show("Выберите пользователя для удаления"); } //Если пользователь выбран else if (SQLCon.ExecuteScalar("SELECT COUNT(*) FROM tblAccounts WHERE IsAdmin='True'", out o)) { //Если выбран-пользователь администратор для удаления и он один if (lstaccounts[dgUsersAccounts.SelectedIndex].Type == "Администратор" && (int)o == 1) { MessageBox.Show("Вы не можете удалить эту учетную запись, так как это единственная учетная запись администратора."); } //Если выбран пользователь или существует несколько администраторов else if (MessageBox.Show("Вы действительно хотите удалить эту учетную запись?", "Удаление", MessageBoxButton.YesNo) == MessageBoxResult.Yes) { //Удаление записи о пользователе в БД string userName = lstaccounts[dgUsersAccounts.SelectedIndex].Name; SQLCon.ExecuteScalar($"DELETE FROM tblAccounts WHERE UserName='******'"); //Удаление из списка lstaccounts пользователя lstaccounts.RemoveAt(dgUsersAccounts.SelectedIndex); dgUsersAccounts.Items.Refresh(); } } }
public MainWindow() { InitializeComponent(); if (!SQLCon.ConnectToDatabase()) { Close(); } //Если в таблице аккаунтов нет записей (т.е. самый первый вход), то переход на окно регистрации администратора //"SELECT COUNT(*) FROM tblAccounts"-запрос на количество всех записей в таблице if (SQLCon.ExecuteScalar("SELECT COUNT(*) FROM tblAccounts", out object o) && (int)o == 0) { Registration startWindow = new Registration(true, false); startWindow.ShowDialog(); if (!startWindow.Success) { Close(); } } }
//Обработчик события нажатия на кнопку "Зарегистрировать"/"Изменить пароль" 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(); } } } } }