@page "/login" @using PlaylistShared.Shared.DTO @using PlaylistShared.Pwa.Services @inject HttpClient Http @inject AuthStateProvider AuthProvider @inject NavigationManager Navigation @inject ISnackbar Snackbar Вход в PlaylistShared Войдите через учётную запись Keycloak или используйте локальный аккаунт. Войти через Keycloak или Войти (локально) Нет аккаунта? Зарегистрироваться @code { private LoginModel _loginModel = new(); private void LoginWithKeycloak() { Navigation.NavigateTo("/api/openid/login", true); } private async Task LocalLogin() { var response = await Http.PostAsJsonAsync("/api/account/login", _loginModel); if (response.IsSuccessStatusCode) { var result = await response.Content.ReadFromJsonAsync>(); if (result?.Success == true && result.Data != null) { await AuthProvider.MarkUserAsAuthenticated(result.Data.Token, result.Data.RefreshToken); Navigation.NavigateTo("/"); } else { Snackbar.Add(result?.Error?.Message ?? "Ошибка входа", Severity.Error); } } else { Snackbar.Add("Неверное имя пользователя или пароль", Severity.Error); } } public class LoginModel { public string Username { get; set; } = ""; public string Password { get; set; } = ""; } }