Update registration

This commit is contained in:
2025-10-08 20:33:59 +09:00
parent 96172029d4
commit 257cd3e35e
16 changed files with 113 additions and 218 deletions

View File

@ -1,21 +1,13 @@
@page "/account/register"
@using Microsoft.AspNetCore.Identity
@using Hcs.WebApp.Data
@using Hcs.WebApp.Identity
@inject IUserStore<AppUser> UserStore
@inject UserManager<AppUser> UserManager
@inject NotificationService NotificationService
@inject SignInManager<AppUser> SignInManager
@inject IdentityRedirectManager RedirectManager
<PageTitle>Регистрация аккаунта</PageTitle>
<RadzenCard class="rz-mx-auto" Style="max-width: 420px">
<RadzenTemplateForm TItem="InputModel" Data=@Input Method="post" Submit=@OnSubmit>
<RadzenTemplateForm TItem="InputModel" Data=@Input Method="post" Action="@($"identity/register?returnUrl={ReturnUrl}")">
<RadzenStack Gap="1rem" class="rz-p-sm-12">
<RadzenText TextStyle="TextStyle.H4" TextAlign="TextAlign.Center">Регистрация</RadzenText>
<RadzenText TextStyle="TextStyle.H5" TextAlign="TextAlign.Center">Регистрация</RadzenText>
<RadzenFormField Text="Логин" Variant="Variant.Outlined">
<ChildContent>
<RadzenTextBox Name="UserName" @bind-Value=@Input.UserName AutoCompleteType="AutoCompleteType.Username" />
@ -42,7 +34,7 @@
</ChildContent>
<Helper>
<RadzenRequiredValidator Component="ConfirmPassword" Text="Поле 'Пароль' обязательно к заполнению" />
<RadzenCompareValidator Visible=@(!string.IsNullOrEmpty(Input.ConfirmPassword)) Value=@Input.Password Component="ConfirmPassword" Text="Пароли должны совпадать" />
<RadzenCompareValidator Value=@Input.Password Component="ConfirmPassword" Text="Пароли должны совпадать" />
</Helper>
</RadzenFormField>
<RadzenButton ButtonType="ButtonType.Submit" Text="Зарегистрировать"></RadzenButton>
@ -63,28 +55,28 @@
[SupplyParameterFromForm]
InputModel Input { get; set; } = new();
[SupplyParameterFromQuery]
string? Errors { get; set; }
[SupplyParameterFromQuery]
string? ReturnUrl { get; set; }
async Task OnSubmit(InputModel mode)
protected override void OnAfterRender(bool firstRender)
{
var user = Activator.CreateInstance<AppUser>();
await UserStore.SetUserNameAsync(user, Input.UserName, CancellationToken.None);
base.OnAfterRender(firstRender);
var result = await UserManager.CreateAsync(user, Input.Password);
if (!result.Succeeded)
if (firstRender)
{
NotificationService.Notify(new NotificationMessage()
if (!string.IsNullOrEmpty(Errors))
{
Severity = NotificationSeverity.Error,
Summary = "Ошибка",
Detail = string.Join(", ", result.Errors.Select(error => error.Description))
});
return;
NotificationService.Notify(new NotificationMessage()
{
Severity = NotificationSeverity.Error,
Summary = "Ошибка",
Detail = Errors,
Duration = -1d
});
}
}
await SignInManager.SignInAsync(user, isPersistent: false);
RedirectManager.RedirectTo(ReturnUrl);
}
}