105 lines
5.1 KiB
Plaintext
105 lines
5.1 KiB
Plaintext
@page "/account/manage"
|
|
|
|
@using Hcs.WebApp.Services
|
|
@using Microsoft.AspNetCore.Authorization
|
|
|
|
@attribute [Authorize]
|
|
|
|
@inject IdentityService IdentityService
|
|
|
|
<PageTitle>Профиль</PageTitle>
|
|
|
|
<RadzenTabs RenderMode="TabRenderMode.Server">
|
|
<Tabs>
|
|
<RadzenTabsItem Text="Пароль">
|
|
<div style="max-width: 420px">
|
|
<RadzenTemplateForm TItem="PasswordInputModel" Data=@PasswordInput Method="post" Submit="@ChangePasswordAsync">
|
|
<RadzenAlert AlertStyle="AlertStyle.Danger" Variant="Variant.Flat" Shade="Shade.Lighter" Visible="@hasError">
|
|
@errorMessage
|
|
</RadzenAlert>
|
|
<RadzenAlert AlertStyle="AlertStyle.Success" Variant="Variant.Flat" Shade="Shade.Lighter" Visible="@hasSuccess">
|
|
Пароль успешно изменен
|
|
</RadzenAlert>
|
|
<RadzenStack Gap="1rem" class="rz-p-sm-12">
|
|
<RadzenText TextStyle="TextStyle.H5">Смена пароля</RadzenText>
|
|
<RadzenFormField Text="Текущий пароль" Variant="Variant.Outlined">
|
|
<ChildContent>
|
|
<RadzenPassword Name="OldPassword" @bind-Value=@PasswordInput.OldPassword AutoCompleteType="AutoCompleteType.CurrentPassword" />
|
|
</ChildContent>
|
|
<Helper>
|
|
<RadzenRequiredValidator Component="OldPassword" Text="Поле 'Текущий пароль' обязательно к заполнению" />
|
|
<RadzenLengthValidator Component="OldPassword" Min="6" Text="Длина поля 'Текущий пароль' должна быть не меньше 6" />
|
|
<RadzenLengthValidator Component="OldPassword" Max="100" Text="Длина поля 'Текущий пароль' должна быть не больше 100" />
|
|
</Helper>
|
|
</RadzenFormField>
|
|
<RadzenFormField Text="Новый пароль" Variant="Variant.Outlined">
|
|
<ChildContent>
|
|
<RadzenPassword Name="NewPassword" @bind-Value=@PasswordInput.NewPassword AutoCompleteType="AutoCompleteType.NewPassword" />
|
|
</ChildContent>
|
|
<Helper>
|
|
<RadzenRequiredValidator Component="NewPassword" Text="Поле 'Новый пароль' обязательно к заполнению" />
|
|
<RadzenLengthValidator Component="NewPassword" Min="6" Text="Длина поля 'Новый пароль' должна быть не меньше 6" />
|
|
<RadzenLengthValidator Component="NewPassword" Max="100" Text="Длина поля 'Новый пароль' должна быть не больше 100" />
|
|
</Helper>
|
|
</RadzenFormField>
|
|
<RadzenFormField Text="Повторите новый пароль" Variant="Variant.Outlined">
|
|
<ChildContent>
|
|
<RadzenPassword Name="ConfirmNewPassword" @bind-Value=@PasswordInput.ConfirmNewPassword AutoCompleteType="AutoCompleteType.NewPassword" />
|
|
</ChildContent>
|
|
<Helper>
|
|
<RadzenRequiredValidator Component="ConfirmNewPassword" Text="Поле 'Повторите новый пароль' обязательно к заполнению" />
|
|
<RadzenCompareValidator Value=@PasswordInput.NewPassword Component="ConfirmNewPassword" Text="Пароли должны совпадать" />
|
|
</Helper>
|
|
</RadzenFormField>
|
|
<RadzenButton ButtonType="ButtonType.Submit" Text="Сменить пароль"></RadzenButton>
|
|
</RadzenStack>
|
|
</RadzenTemplateForm>
|
|
</div>
|
|
</RadzenTabsItem>
|
|
</Tabs>
|
|
</RadzenTabs>
|
|
<BusyOverlay @ref=@busyOverlay />
|
|
|
|
@code {
|
|
sealed class PasswordInputModel
|
|
{
|
|
public string OldPassword { get; set; } = "";
|
|
|
|
public string NewPassword { get; set; } = "";
|
|
|
|
public string ConfirmNewPassword { get; set; } = "";
|
|
}
|
|
|
|
bool hasError;
|
|
string? errorMessage;
|
|
bool hasSuccess;
|
|
BusyOverlay busyOverlay;
|
|
|
|
[SupplyParameterFromForm]
|
|
PasswordInputModel PasswordInput { get; set; } = new();
|
|
|
|
async Task ChangePasswordAsync()
|
|
{
|
|
hasError = false;
|
|
hasSuccess = false;
|
|
|
|
try
|
|
{
|
|
busyOverlay.Show();
|
|
|
|
await IdentityService.ChangePasswordAsync(PasswordInput.OldPassword, PasswordInput.NewPassword);
|
|
|
|
hasSuccess = true;
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
hasError = true;
|
|
errorMessage = e.Message;
|
|
}
|
|
finally
|
|
{
|
|
busyOverlay.Hide();
|
|
}
|
|
}
|
|
}
|