[frontend/pages] Add change password section to account settings
This commit is contained in:
parent
cd0149cfeb
commit
897fe6e55a
1 changed files with 40 additions and 0 deletions
|
@ -12,6 +12,7 @@
|
|||
@attribute [Authorize]
|
||||
@layout SettingsLayout
|
||||
@inject ApiService Api;
|
||||
@inject GlobalComponentSvc Global;
|
||||
@inject ILogger<Profile> Logger;
|
||||
@inject IStringLocalizer<Localization> Loc;
|
||||
@inject IJSRuntime Js;
|
||||
|
@ -73,6 +74,19 @@
|
|||
</EditForm>
|
||||
</div>
|
||||
|
||||
<h1>@Loc["Change password"]</h1>
|
||||
<EditForm OnSubmit="ChangePassword" Model="PasswordForm">
|
||||
<InputText @bind-Value="PasswordForm.OldPassword" type="password" class="input" placeholder="@Loc["Old password"]" required/>
|
||||
<InputText @bind-Value="PasswordForm.NewPassword" type="password" class="input" placeholder="@Loc["New password"]" minlength="8" required/>
|
||||
<StateButton ExtraClasses="button" @ref="@PasswordButton" OnClick="ChangePassword">
|
||||
<Initial>@Loc["Update password"]</Initial>
|
||||
<Success>@Loc["Updated"]</Success>
|
||||
<Loading>@Loc["Loading"]<LoadingSpinner />
|
||||
</Loading>
|
||||
<Failed>@Loc["Error"]</Failed>
|
||||
</StateButton>
|
||||
</EditForm>
|
||||
|
||||
<h1>@Loc["Two-Factor Authentication"]</h1>
|
||||
@if (SettingsForm.TwoFactorEnrolled == false)
|
||||
{
|
||||
|
@ -140,8 +154,10 @@
|
|||
|
||||
@code {
|
||||
private UserSettingsResponse SettingsForm { get; set; } = null!;
|
||||
private ChangePasswordRequest PasswordForm { get; set; } = null!;
|
||||
private State State { get; set; } = State.Loading;
|
||||
private StateButton SaveButton { get; set; } = null!;
|
||||
private StateButton PasswordButton { get; set; } = null!;
|
||||
private StateButton DisableButton { get; set; } = null!;
|
||||
private StateButton TwoFactorButton { get; set; } = null!;
|
||||
private ElementReference EnrollDialog { get; set; }
|
||||
|
@ -163,6 +179,7 @@
|
|||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
SettingsForm = await Api.Settings.GetSettingsAsync();
|
||||
PasswordForm = new ChangePasswordRequest { OldPassword = "", NewPassword = "" };
|
||||
State = State.Loaded;
|
||||
}
|
||||
|
||||
|
@ -181,6 +198,29 @@
|
|||
}
|
||||
}
|
||||
|
||||
private async Task ChangePassword()
|
||||
{
|
||||
if (PasswordButton.State == StateButton.StateEnum.Loading || string.IsNullOrWhiteSpace(PasswordForm.OldPassword) || PasswordForm.NewPassword.Length < 8) return;
|
||||
|
||||
PasswordButton.State = StateButton.StateEnum.Loading;
|
||||
|
||||
try
|
||||
{
|
||||
var res = await Api.Auth.ChangePasswordAsync(PasswordForm);
|
||||
PasswordButton.State = res.Status == AuthStatusEnum.Authenticated
|
||||
? StateButton.StateEnum.Success
|
||||
: StateButton.StateEnum.Failed;
|
||||
|
||||
PasswordForm.OldPassword = "";
|
||||
PasswordForm.NewPassword = "";
|
||||
}
|
||||
catch (ApiException e)
|
||||
{
|
||||
await Global.NoticeDialog?.Display(e.Response.Message ?? @Loc["An unknown error occurred"], NoticeDialog.NoticeType.Error)!;
|
||||
PasswordButton.State = StateButton.StateEnum.Failed;
|
||||
}
|
||||
}
|
||||
|
||||
private async Task Enroll2FA()
|
||||
{
|
||||
var module = await _moduleTask.Value;
|
||||
|
|
Loading…
Add table
Reference in a new issue