@page "/change-password"
@attribute [Authorize]
@rendermode InteractiveServer
@inject HttpClient Http
@inject NavigationManager Navigation
@inject IJSRuntime JSRuntime
Change Password
Change Password
@code {
private string currentPassword = "";
private string newPassword = "";
private string confirmNewPassword = "";
private bool saving;
private string? message;
private async Task DoChangePassword()
{
saving = true;
message = null;
try
{
if (string.IsNullOrWhiteSpace(currentPassword))
{
message = "Current password is required.";
return;
}
if (string.IsNullOrWhiteSpace(newPassword) || newPassword.Length < 6)
{
message = "New password must be at least 6 characters.";
return;
}
if (newPassword != confirmNewPassword)
{
message = "New passwords do not match.";
return;
}
var content = new FormUrlEncodedContent(new Dictionary
{
["newPassword"] = newPassword
});
var response = await Http.PutAsync("/accounts/me/changepassword", content);
if (!response.IsSuccessStatusCode)
{
message = "Error: Failed to change password.";
return;
}
message = "Password changed successfully!";
currentPassword = "";
newPassword = "";
confirmNewPassword = "";
}
catch (Exception ex)
{
message = $"Error: {ex.Message}";
}
finally
{
saving = false;
}
}
}