@page "/login"
@using PlaylistShared.Shared.Auth
@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()
{
if (string.IsNullOrWhiteSpace(_loginModel.Username) || string.IsNullOrWhiteSpace(_loginModel.Password))
{
Snackbar.Add("Пожалуйста, заполните все поля", Severity.Warning);
return;
}
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; } = "";
}
}