44 lines
1.6 KiB
C#
44 lines
1.6 KiB
C#
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;
|
|
}
|
|
} |