@page "/login" @using FinControl.Web.Services @inject AuthStateProvider AuthStateProvider @inject INotificationService NotificationService @inject NavigationManager NavigationManager Login - FinControl
@if (HasError(nameof(email))) {
@GetError(nameof(email))
}
@if (HasError(nameof(senha))) {
@GetError(nameof(senha))
}
ou
Criar Conta
Demo: joao@example.com / senha123
@code { private string email = "joao@example.com"; private string senha = "senha123"; private bool isLoading = false; private Dictionary errors = new(); private void ValidateEmail() { errors.Remove(nameof(email)); if (string.IsNullOrWhiteSpace(email)) { errors[nameof(email)] = "Email é obrigatório"; } else if (!IsValidEmail(email)) { errors[nameof(email)] = "Email inválido"; } } private void ValidateSenha() { errors.Remove(nameof(senha)); if (string.IsNullOrWhiteSpace(senha)) { errors[nameof(senha)] = "Senha é obrigatória"; } else if (senha.Length < 3) { errors[nameof(senha)] = "Senha muito curta"; } } private bool IsFormValid() { ValidateEmail(); ValidateSenha(); return errors.Count == 0 && !string.IsNullOrEmpty(email) && !string.IsNullOrEmpty(senha); } private bool HasError(string field) => errors.ContainsKey(field); private string GetError(string field) => errors.ContainsKey(field) ? errors[field] : ""; private bool IsValidEmail(string email) { try { var addr = new System.Net.Mail.MailAddress(email); return addr.Address == email; } catch { return false; } } private async Task HandleLogin() { if (!IsFormValid()) { NotificationService.ShowError("Corrija os erros no formulário"); return; } isLoading = true; try { await AuthStateProvider.Login(email, senha); NotificationService.ShowSuccess("Login realizado com sucesso!"); NavigationManager.NavigateTo("/"); } catch (Exception ex) { NotificationService.ShowError("Email ou senha inválidos"); } finally { isLoading = false; } } }