コード例 #1
0
ファイル: StartWin.xaml.cs プロジェクト: MLEX0/LibraryManager
        public StartWin()
        {
            InitializeComponent();


            if (File.Exists("SaveUser.txt") == true)// защита от дауна
            {
                if (FileSaveClass.FileRead("SaveUser.txt") != null)
                {
                    try
                    {
                        FileSaveClass.FileRead("SaveUser.txt"); // проверка правильности данных в файле
                    }
                    catch
                    {
                        MessageBox.Show("Ошибка сохранения пользователя, повторите вход!", "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error);
                        errorOfRead = 1;
                        File.Delete("SaveUser.txt");
                    }

                    if (errorOfRead == 0)
                    {
                        using (StreamReader sr = new StreamReader("SaveUser.txt"))
                        {
                            string[] words;
                            string   str = sr.ReadLine();
                            words        = str.Split(new char[] { ';' });
                            SaveLogin    = words[0];
                            SavePassword = words[1];
                        }
                        var saveuser = context.Librarian.ToList().Where(u => u.Login == SaveLogin && u.Password == SavePassword).FirstOrDefault();
                        if (saveuser == null)// Проверка id
                        {
                            MessageBox.Show("Сохранённый пользователь перестал существовать!", "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error);
                            File.Delete("SaveUser.txt");
                        }
                        else
                        {
                            cbxRemind.IsChecked  = true;
                            txtLogin.Text        = SaveLogin;
                            pswPassword.Password = SavePassword;
                        }
                    }
                }
            }
            else if (File.Exists("SaveUser.txt") == false)// Если файла не существует, создаёт файл
            {
                File.Create("SaveUser.txt");
            }
        }
コード例 #2
0
ファイル: StartWin.xaml.cs プロジェクト: MLEX0/LibraryManager
        private void Login()//Метод входа в приложение
        {
            DataBase.Librarian user = context.Librarian
                                      .ToList().Where(i => i.Login == txtLogin.Text && i.Password == pswPassword.Password).FirstOrDefault(); // поиск записи в БД с логином и паролем введенным пользователем

            if (user != null && txbCapchaEnter.Text.ToLower() == txtCapcha.Text.ToLower())                                                   //проверка найденого пароля и логина
            {
                if (File.Exists("SaveUser.txt") == true)                                                                                     // Проверка существования файла!
                {
                    if (cbxRemind.IsChecked == true && File.Exists("SaveUser.txt") == true)
                    {
                        FileSaveClass.FileWrite($"{user.Login};{user.Password}", "SaveUser.txt"); // записывает пользователя в файл
                    }
                    if (cbxRemind.IsChecked == false)                                             // удаление файла
                    {
                        File.Delete("SaveUser.txt");
                    }
                }
                else
                {
                    if (cbxRemind.IsChecked == true && File.Exists("SaveUser.txt") == false)// Полная шляпа, когда пользователь трогает сраный файл!!!
                    {
                        MessageBox.Show("Внимание! \nИсполняемый файл занaят системным процессом! " +
                                        "\nПри следующей авторизации вам придётся ещё раз ввести ваши данные!", "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error);
                    }
                }


                switch (user.IdRole) // Разделение по ролям
                {
                case 1:
                    AdminWin adminWin = new AdminWin(user);     // Переход на окно администратора
                    this.Hide();
                    adminWin.ShowDialog();
                    this.Close();
                    break;

                case 2:
                    ReaderWin mainWin = new ReaderWin(user);     // Переход на рабочее окно пользователя
                    this.Hide();
                    mainWin.ShowDialog();
                    this.Close();
                    break;
                }
            }
            else
            {
                errorCounter++;

                if (errorCounter > 2000) //Неправильный ввод пароля
                {
                    MessageBox.Show("Обнаружен слишком низкий IQ " +
                                    "\nПриведите к рабочей станции человека \nс " +
                                    "самым высоким IQ в комнате и перезапустите программу!",
                                    "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error);

                    btnLogin.Visibility = Visibility.Hidden;
                }
                else
                {
                    MessageBox.Show("Логин или пароль введены неверно!", "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error);
                }

                if (txbCapchaEnter.Text.ToLower() != txtCapcha.Text.ToLower() && cpActivate == 1) //неправильно введена капча
                {
                    MessageBox.Show("Неправильно введена капча!", "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error);
                }

                if (errorCounter > 2) // Открытие капчи при трёх ошибках
                {
                    CapchaShow();
                    cpActivate = 1;
                }

                if (cpActivate == 1) // Получение новой капчи при первом открытии
                {
                    CapchaGet();
                }
            }
        }