LANCommander/LANCommander.Server/UI/Pages/Settings/Users/ChangePassword.razor
2025-02-04 19:32:33 -06:00

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; }
}
}