@page "/login"
@using FinControl.Web.Services
@inject AuthStateProvider AuthStateProvider
@inject INotificationService NotificationService
@inject NavigationManager NavigationManager
Login - FinControl
@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;
}
}
}