Add password changing
This commit is contained in:
96
Hcs.WebApp/Components/Pages/Account/Manage.razor
Normal file
96
Hcs.WebApp/Components/Pages/Account/Manage.razor
Normal file
@ -0,0 +1,96 @@
|
||||
@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="@ChangePassword">
|
||||
<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>
|
||||
|
||||
@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;
|
||||
|
||||
[SupplyParameterFromForm]
|
||||
PasswordInputModel PasswordInput { get; set; } = new();
|
||||
|
||||
async Task ChangePassword()
|
||||
{
|
||||
hasError = false;
|
||||
hasSuccess = false;
|
||||
|
||||
try
|
||||
{
|
||||
await IdentityService.ChangePassword(PasswordInput.OldPassword, PasswordInput.NewPassword);
|
||||
|
||||
hasSuccess = true;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
hasError = true;
|
||||
errorMessage = e.Message;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user