浏览代码

Доработка авторизации через API

Данилов Денис 1 年之前
父节点
当前提交
76687bef4d
共有 1 个文件被更改,包括 37 次插入12 次删除
  1. 37 12
      esoft/Pages/LoginPage.xaml.cs

+ 37 - 12
esoft/Pages/LoginPage.xaml.cs

@@ -29,35 +29,60 @@ namespace esoft.Pages
     public partial class LoginPage : Page
     {
         ActualContext actualContext = new ActualContext();
+        private const string apiUrl = "http://localhost:55429/api/Users/";
+
         public LoginPage()
         {
             InitializeComponent();
         }
 
-        private void BtnLogin_Click(object sender, RoutedEventArgs e)
+        private async void BtnLogin_Click(object sender, RoutedEventArgs e)
         {
 
             // Получение логина и пароля из текстовых полей
             string username = TBoxLogin.Text;
             string password = PBoxPassword.Password;
 
-            using (var context = new esoftEntities())
+            // Отправка запроса к API
+            var user = await GetUserFromApi(username);
+
+            if (user != null && user.Password == password && !user.IsDeleted)
             {
-                // Поиск пользователя по введенному логину
-                var user = context.User.FirstOrDefault(u => u.Login == username);
+                // Успешная авторизация
+                GetCurrent.CurrentUser = user;
 
-                if (user != null && user.Password == password)
+                // Перенаправление пользователя на страницу с задачами
+                NavigationService.Navigate(new Pages.TaskLists());
+            }
+            else
+            {
+                // Ошибка авторизации
+                MessageBox.Show("Ошибка авторизации. Пожалуйста, проверьте логин и пароль.");
+            }
+        }
+
+        private async Task<User> GetUserFromApi(string username)
+        {
+            using (HttpClient client = new HttpClient())
+            {
+                try
                 {
-                    // Устанавливаем текущего пользователя
-                    GetCurrent.CurrentUser = user;
+                    // Отправка GET-запроса к API
+                    var response = await client.GetStringAsync(apiUrl);
+
+                    // Десериализация JSON-ответа в объект User
+                    var users = JsonConvert.DeserializeObject<List<User>>(response);
+
+                    // Поиск пользователя по логину
+                    var user = users.FirstOrDefault(u => u.Login == username);
 
-                    // Перенаправление пользователя на страницу с задачами
-                    NavigationService.Navigate(new Pages.TaskLists());
+                    return user;
                 }
-                else
+                catch (Exception ex)
                 {
-                    // Ошибка авторизации
-                    MessageBox.Show("Ошибка авторизации. Пожалуйста, проверьте логин и пароль.");
+                    // Обработка ошибок
+                    MessageBox.Show($"Ошибка при получении данных с сервера: {ex.Message}");
+                    return null;
                 }
             }
         }