@page "/register" @layout AuthLayout @using Microsoft.AspNetCore.Identity @inject UserManager UserManager @inject SignInManager SignInManager @inject NavigationManager Navigation Budgeteer Beta — Register

Create Account

@if (!string.IsNullOrEmpty(errorMessage)) {
@errorMessage
}

Already have an account? Sign in

@code { [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; } }