@page "/Account/Manage/DeletePersonalData" @using System.ComponentModel.DataAnnotations @using Microsoft.AspNetCore.Identity @inject UserManager UserManager @inject SignInManager SignInManager @inject IdentityUserAccessor UserAccessor @inject IdentityRedirectManager RedirectManager @inject ILogger Logger Delete Personal Data

Delete Personal Data

@if(requirePassword) {
}
@code { private string? message; private IdentityUser user = default!; private bool requirePassword; [CascadingParameter] private HttpContext HttpContext { get; set; } = default!; [SupplyParameterFromForm] private InputModel Input { get; set; } = new(); protected override async Task OnInitializedAsync() { Input ??= new InputModel(); user = await UserAccessor.GetRequiredUserAsync(HttpContext); requirePassword = await UserManager.HasPasswordAsync(user); } private async Task OnValidSubmitAsync() { if(requirePassword && !await UserManager.CheckPasswordAsync(user, Input.Password)) { message = "Error: Incorrect password."; return; } IdentityResult result = await UserManager.DeleteAsync(user); if(!result.Succeeded) { throw new InvalidOperationException("Unexpected error occurred deleting user."); } await SignInManager.SignOutAsync(); string userId = await UserManager.GetUserIdAsync(user); Logger.LogInformation("User with ID '{UserId}' deleted themselves.", userId); RedirectManager.RedirectToCurrentPage(); } private sealed class InputModel { [DataType(DataType.Password)] public string Password { get; set; } = ""; } }