/* Обновляем ответ на вопрос */ private void btn_Next_Click(object sender, EventArgs e) { switch (phaseChangingAnswer) { case 1: if (!tb_Answer.Text.Equals("")) { if (controlSecuredPasswordController.VerifyHashedPassword(um.Answer, tb_Answer.Text)) //проверяем текущий ответ { lb_AnswerTxt.Text = message1; phaseChangingAnswer = 2; tb_Answer.Text = ""; label4.Visible = false; lb_AnswerTxt.Location = label4.Location; } else { MessageBox.Show("Вы ввели неверный ответ!", "Ошибка"); } } else { MessageBox.Show("Введите текущий ответ для продолжения.", "Ошибка"); } break; case 2: if (!tb_Answer.Text.Equals("")) //обновляем ответ { string newAnswer = controlSecuredPasswordController.HashPassword(tb_Answer.Text); if (controlLoginFormController.UpdateAnswer(um.UserId, newAnswer)) //обновляем { MessageBox.Show("Ответ был успешно обновлен!", "Успех"); } controlControlPanelView.QuestionChanged(newAnswer); this.Close(); } else { MessageBox.Show("Введите новый ответ!", "Ошибка"); } break; } }
/* Основная логика по восстановлению пароля */ private void Next() { switch (phase) { case 1: if (!tb_Input1.Text.Equals("")) //если поле не пустое { string result = lfController.GetUserDataFromDB(tb_Input1.Text); if (result.Contains("good")) //получаем данные пользователя по логину { phase = 2; tb_Input1.Visible = false; tb_Input2.Visible = true; label2.Visible = true; label1.Text = message2; label2.Text = um.SecretQuestion; tb_Input2.Focus(); } else if (result.Contains("error: 40 ")) { MessageBox.Show("Не удалось установить соединение с сервером. Попробуйте позже.", "Ошибка"); } else if (result.Contains("fail")) { MessageBox.Show("Имя пользователя или пароль введены неверно.", "Ошибка"); } } else { MessageBox.Show("Введите логин пользователя.", "Ошибка"); } break; case 2: if (!tb_Input2.Text.Equals("")) //если поле не пустое { if (spControl.VerifyHashedPassword(um.Answer, tb_Input2.Text)) //сравнивае ответ с хранимым овтетом { label2.Visible = false; tb_Input1.Visible = true; phase = 3; tb_Input1.Text = ""; tb_Input2.Text = ""; tb_Input1.Focus(); label1.Text = message3; tb_Input1.PasswordChar = '*'; tb_Input2.PasswordChar = '*'; } else { MessageBox.Show("Вы дали неверный ответ на вопрос.", "Ошибка"); } } break; case 3: if (tb_Input1.Text.Equals("")) //если 1е поле пароля не пустое { MessageBox.Show("Введите пароль!", "Ошибка"); } else { if (tb_Input2.Text.Equals("")) //если 2е поле пароля не пустое { MessageBox.Show("Введите пароль повторно!", "Ошибка"); } else if (tb_Input1.Text.Equals(tb_Input2.Text)) //если пароли в полях совпадают { if (lfController.UpdateUserPassword(um.UserId, spControl.HashPassword(tb_Input1.Text))) //обновляем пароль { MessageBox.Show("Пароль был успешно изменен!", "Успех"); ChangedSuccessfully = true; } else { MessageBox.Show("Произошла ошибка при сохранении. Попробуйте ещё раз.", "Ошибка"); } if (ChangedSuccessfully) //если обновили успешно, возвращаемся на форму входа { this.Close(); } } else { MessageBox.Show("Пароли не совпадают!", "Ошибка"); } } break; } }
/* Главная логика */ private void btn_Register_Click(object sender, EventArgs e) { if (!tb_Name.Text.Equals("") && !tb_Login.Text.Equals("") && !tb_Pass.Text.Equals("") && !tb_PassRepeat.Text.Equals("") && !tb_Question.Text.Equals("") && !tb_Answer.Text.Equals("")) //не пустые ли поля { if (tb_Pass.Text.Equals(tb_PassRepeat.Text)) //совпадают ли введенные пароли { bool userIsExist = false; lfController.GetAllUsers(); //получаем список всех пользователей for (int i = 0; i < um.Count; i++) { if (tb_Login.Text.Equals(um[i].Login)) { userIsExist = true; } } if (!userIsExist) { int userRole = 2; if (radioButton1.Checked) //админ { userRole = 0; } else if (radioButton2.Checked) //босс { userRole = 1; } else if (radioButton3.Checked) //смертный { userRole = 2; } Random rn = new Random(); if (lfController.RegisterNewUser(tb_Login.Text, spController.HashPassword(tb_Pass.Text), tb_Name.Text, rn.Next(100000, 999999), rn.Next(100000, 999999), userRole, tb_Question.Text, spController.HashPassword(tb_Answer.Text), spController.GetMac())) //создаем { MessageBox.Show("Пользователь был успешно создан!", "Успех"); this.Close(); } else { MessageBox.Show("Во время создания произошла какая-то ошибка. Повторите позже.", "Ошибка"); } } else { MessageBox.Show("Пльзователь с таким логином уже существует.", "Ошибка"); } } else { MessageBox.Show("Введенные пароли не совпадают", "Ошибка"); } } else { MessageBox.Show("Заполните все поля!", "Ошибка"); } }