@page "/account/login" @layout AuthLayout @attribute [AllowAnonymous] @using Microsoft.AspNetCore.Components.Forms @using NexusReader.UI.Shared.Services @using NexusReader.UI.Shared.Components.Atoms @inject IIdentityService IdentityService @inject NavigationManager NavigationManager

E-Czytnik AI

Zaloguj się do E-Czytnika AI

lub
@if (!string.IsNullOrEmpty(_errorMessage)) {
@_errorMessage
}
@code { private LoginModel _loginModel = new(); private string? _errorMessage; private bool _isSubmitting; private bool _showPassword; private async Task HandleLogin() { _isSubmitting = true; _errorMessage = null; try { var success = await IdentityService.LoginAsync(_loginModel.Email, _loginModel.Password, _loginModel.RememberMe); if (success) NavigationManager.NavigateTo("/"); else _errorMessage = "Nieprawidłowy e-mail lub hasło."; } catch (Exception) { _errorMessage = "Wystąpił błąd logowania."; } finally { _isSubmitting = false; } } private void HandleGoogleLogin() => NavigationManager.NavigateTo("identity/login/google", forceLoad: true); private void TogglePassword() => _showPassword = !_showPassword; public class LoginModel { [System.ComponentModel.DataAnnotations.Required] [System.ComponentModel.DataAnnotations.EmailAddress] public string Email { get; set; } = string.Empty; [System.ComponentModel.DataAnnotations.Required] public string Password { get; set; } = string.Empty; public bool RememberMe { get; set; } } }