using BudgetApp.Data.Entities; using Microsoft.AspNetCore.Components; namespace BudgetApp.Components.Pages; public partial class Register { [SupplyParameterFromForm] private RegisterModel Model { get; set; } = new(); private string? _errorMessage; private async Task HandleRegister() { _errorMessage = null; var user = new ApplicationUser { UserName = Model.Email, Email = Model.Email }; var result = await UserManager.CreateAsync(user, Model.Password); if (result.Succeeded) { await SignInManager.SignInAsync(user, isPersistent: false); Navigation.NavigateTo("/", forceLoad: true); } else { _errorMessage = string.Join(" ", result.Errors.Select(e => e.Description)); } } private sealed class RegisterModel { [System.ComponentModel.DataAnnotations.Required(ErrorMessage = "Email is required")] [System.ComponentModel.DataAnnotations.EmailAddress(ErrorMessage = "Invalid email address")] public string Email { get; set; } = string.Empty; [System.ComponentModel.DataAnnotations.Required(ErrorMessage = "Password is required")] [System.ComponentModel.DataAnnotations.MinLength(8, ErrorMessage = "Password must be at least 8 characters")] public string Password { get; set; } = string.Empty; [System.ComponentModel.DataAnnotations.Required(ErrorMessage = "Please confirm your password")] [System.ComponentModel.DataAnnotations.Compare(nameof(Password), ErrorMessage = "Passwords do not match")] public string ConfirmPassword { get; set; } = string.Empty; } }