Пример #1
0
        /* Обновляем ответ на вопрос */
        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;
            }
        }
Пример #2
0
        /* Вход в систему */
        private void btn_SignIn_Click(object sender, EventArgs e)
        {
            lb_WrongPassword.Visible = false;
            if (!tb_Login.Text.Equals(""))        //если ввели логин
            {
                if (!tb_Password.Text.Equals("")) //если ввели пароль
                {
                    this.Enabled = false;
                    this.Cursor  = Cursors.WaitCursor;

                    bool   isLoginAndPassOk = false;
                    string result           = lfController.GetUserDataFromDB(tb_Login.Text);
                    //ищем юзера с таким логином в базе, берем все данные. на месте тут сверяем пароли, если ок - логин
                    if (result.Contains("error: 40 "))
                    {
                        MessageBox.Show("Не удалось установить соединение с сервером. Попробуйте позже.", "Ошибка");
                        this.Cursor  = Cursors.Default;
                        this.Enabled = true;
                        return;
                    }
                    else if (result.Contains("fail"))
                    {
                        MessageBox.Show("Имя пользователя или пароль введены неверно.", "Ошибка");
                        this.Cursor  = Cursors.Default;
                        this.Enabled = true;
                        return;
                    }

                    isLoginAndPassOk = sp.VerifyHashedPassword(um.PassHash, tb_Password.Text);  //проверяем пароль на корректность

                    if (isLoginAndPassOk)
                    {
                        //если всё хорошо, то смотрим на галочку
                        if (cb_RememberMe.Checked)
                        {
                            UpdateConfig("true");
                            string MacAddress     = sp.GetMac(); //используем для идентификации пользователя на этом компьютере, чтобы низзя было скопировать файл на другой комп и залогиниться
                            int    generatedToken = sp.GenerateToken(um.Token1, um.Token2, um.Login.Length);

                            //заносим мак этой машини в БД
                            if (lfController.UpdateLastMac(um.UserId, sp.GetMac()))
                            {
                                //тут значения с токенов пишем в файл
                                //WriteToFile(generatedToken, um.Login, um.Mac);
                                WriteToFile(generatedToken, um.Login, MacAddress);
                            }
                            else
                            {
                                MessageBox.Show("Не удалось обратиться к серверу. Попробуйте позже.", "Ошибка");

                                UpdateConfig("false");
                                File.Delete(path);      //удаляем файл
                            }
                        }
                        else
                        {
                            UpdateConfig("false");

                            File.Delete(path);      //удаляем файл
                        }

                        MainFormView mf = new MainFormView(um, this);
                        mf.Show();
                        this.Visible = false;
                        firstLoad    = false;
                    }
                    else
                    {
                        lb_WrongPassword.Visible = true;
                    }

                    this.Cursor  = Cursors.Default;
                    this.Enabled = true;
                }
                else
                {
                    MessageBox.Show("Введите пароль!", "Ошибка");
                }
            }
            else
            {
                MessageBox.Show("Введите логин!", "Ошибка");
            }
        }
Пример #3
0
        /* Основная логика по восстановлению пароля */
        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;
            }
        }