@page "/Profile/ChangePassword" @using Microsoft.AspNetCore.Components.Authorization; @inject UserService UserService @inject IMessageService MessageService @inject AuthenticationStateProvider AuthenticationStateProvider @inject ILogger Logger @attribute [Authorize]
@if (!String.IsNullOrWhiteSpace(User.PasswordHash)) { }
@code { User User = new User(); ChangePasswordModel Model = new ChangePasswordModel(); protected override async Task OnInitializedAsync() { var authState = await AuthenticationStateProvider.GetAuthenticationStateAsync(); if (authState.User.Identity.IsAuthenticated) User = await UserService.GetAsync(authState.User.Identity.Name); } async void Change() { try { if (!String.IsNullOrWhiteSpace(User.PasswordHash) && !(await UserService.CheckPassword(User.UserName, Model.CurrentPassword))) { MessageService.Error("Incorrect password!"); return; } if (Model.NewPassword == Model.NewPasswordConfirm) { var result = await UserService.ChangePassword(User.UserName, Model.CurrentPassword, Model.NewPassword); if (result.Succeeded) MessageService.Success("Password changed!"); } else MessageService.Error("Passwords don't match!"); } catch (Exception ex) { await MessageService.ErrorAsync("Password could not be changed!"); Logger.LogError(ex, "Password could not be changed!"); } } public class ChangePasswordModel { public string CurrentPassword { get; set; } public string NewPassword { get; set; } public string NewPasswordConfirm { get; set; } } }