68 lines
1.9 KiB
Text
68 lines
1.9 KiB
Text
@page "/Settings/Users/{id:guid}/ChangePassword"
|
|
@inject UserService UserService
|
|
@inject IMessageService MessageService
|
|
@inject ILogger<ChangePassword> Logger
|
|
@attribute [Authorize(Roles = RoleService.AdministratorRoleName)]
|
|
|
|
<PageHeader Title="Change Password" Subtitle="@User.UserName" />
|
|
|
|
<PageContent>
|
|
<Form Model="Model" Layout="@FormLayout.Vertical">
|
|
<FormItem Label="New Password">
|
|
<InputPassword @bind-Value="context.NewPassword" />
|
|
</FormItem>
|
|
|
|
<FormItem Label="Confirm Password">
|
|
<InputPassword @bind-Value="context.NewPasswordConfirm" />
|
|
</FormItem>
|
|
|
|
<FormItem>
|
|
<Button OnClick="Change" Type="@ButtonType.Primary">Change</Button>
|
|
</FormItem>
|
|
</Form>
|
|
</PageContent>
|
|
|
|
@code {
|
|
[Parameter] public Guid Id { get; set; }
|
|
|
|
User User;
|
|
ChangePasswordModel Model = new();
|
|
|
|
protected override async Task OnInitializedAsync()
|
|
{
|
|
if (Id != Guid.Empty)
|
|
User = await UserService.GetAsync(Id);
|
|
}
|
|
|
|
async void Change()
|
|
{
|
|
try
|
|
{
|
|
if (Model.NewPassword != Model.NewPasswordConfirm)
|
|
{
|
|
MessageService.Error("Passwords do not match");
|
|
|
|
return;
|
|
}
|
|
|
|
var result = await UserService.ChangePassword(User.UserName, Model.NewPassword);
|
|
|
|
if (!result.Succeeded)
|
|
foreach (var error in result.Errors)
|
|
MessageService.Error(error.Description);
|
|
else
|
|
MessageService.Success("Password changed!");
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
MessageService.Error("The user's password could not be changed");
|
|
Logger.LogError(ex, "The user's password could not be changed");
|
|
}
|
|
}
|
|
|
|
public class ChangePasswordModel
|
|
{
|
|
public string NewPassword { get; set; }
|
|
public string NewPasswordConfirm { get; set; }
|
|
}
|
|
}
|