LoginWindow.xaml.cs 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. using Npgsql;
  2. using System;
  3. using System.Data;
  4. using System.Windows;
  5. using WpfApp1.Helpers;
  6. namespace WpfApp1
  7. {
  8. public partial class LoginWindow : Window
  9. {
  10. private const string Conn = "Host=80.250.189.52;Port=5432;Database=dbwork;Username=kotov_aa;Password=0$s%MB3&F6#";
  11. public LoginWindow()
  12. {
  13. InitializeComponent();
  14. }
  15. private void BtnLogin_Click(object sender, RoutedEventArgs e)
  16. {
  17. string login = txtLogin.Text.Trim();
  18. string pass = txtPassword.Password;
  19. if (string.IsNullOrEmpty(login) || string.IsNullOrEmpty(pass))
  20. {
  21. lblError.Text = "Заполните все поля";
  22. return;
  23. }
  24. try
  25. {
  26. string sql = "SELECT id, username, role, password_hash FROM Users WHERE username = @login";
  27. using var conn = new NpgsqlConnection(Conn);
  28. conn.Open();
  29. using var cmd = new NpgsqlCommand(sql, conn);
  30. cmd.Parameters.AddWithValue("@login", login);
  31. DataTable dt = new DataTable();
  32. new NpgsqlDataAdapter(cmd).Fill(dt);
  33. if (dt.Rows.Count == 0)
  34. {
  35. lblError.Text = "Пользователь не найден";
  36. return;
  37. }
  38. DataRow row = dt.Rows[0];
  39. string storedHash = row["password_hash"].ToString();
  40. if (PasswordHelper.VerifyPassword(pass, storedHash))
  41. {
  42. AppSession.UserId = Convert.ToInt32(row["id"]);
  43. AppSession.Username = row["username"].ToString();
  44. AppSession.Role = row["role"].ToString();
  45. MainWindow mainWindow = new MainWindow();
  46. mainWindow.Show();
  47. this.Close();
  48. }
  49. else
  50. {
  51. lblError.Text = "Неверный пароль";
  52. }
  53. }
  54. catch (Exception ex)
  55. {
  56. lblError.Text = "Ошибка: " + ex.Message;
  57. }
  58. }
  59. }
  60. }