From d7d1b098377a4d6ca3be1779c389c7e49951439b Mon Sep 17 00:00:00 2001 From: "HOME-LAPTOP\\kshkulev" Date: Mon, 20 Oct 2025 17:10:08 +0900 Subject: [PATCH] Add user deletion --- .../Components/Pages/Management/Users.razor | 48 +++++++++++++++++-- Hcs.WebApp/Services/UsersService.cs | 6 +++ 2 files changed, 51 insertions(+), 3 deletions(-) diff --git a/Hcs.WebApp/Components/Pages/Management/Users.razor b/Hcs.WebApp/Components/Pages/Management/Users.razor index bb44bce..23f8a81 100644 --- a/Hcs.WebApp/Components/Pages/Management/Users.razor +++ b/Hcs.WebApp/Components/Pages/Management/Users.razor @@ -5,6 +5,7 @@ @using Microsoft.AspNetCore.Authorization @using Microsoft.AspNetCore.Identity @using Microsoft.EntityFrameworkCore +@using System.IdentityModel.Claims @attribute [Authorize] @@ -29,14 +30,19 @@ - + + @errorMessage + @@ -48,8 +54,11 @@ @code { + string currentUserId; IEnumerable usersWithRoles; bool isLoading; + bool hasError; + string errorMessage; protected override async Task OnAfterRenderAsync(bool firstRender) { @@ -64,6 +73,7 @@ var state = await AuthenticationStateProvider.GetAuthenticationStateAsync(); if (state.User.Identity?.IsAuthenticated ?? false) { + currentUserId = state.User.FindFirst(ClaimTypes.NameIdentifier).Value; usersWithRoles = await UsersService.GetUsersWithRole(); } @@ -117,12 +127,44 @@ async Task DeleteUser(AppUserWithRole userWithRole) { - // TODO: Implement method + try + { + if (await DialogService.Confirm( + $"Вы уверены что хотите удалить пользователя '{userWithRole.User.UserName}'?", + "Удаление пользователя", + new ConfirmOptions() + { + OkButtonText = "Да", + CancelButtonText = "Отмена" + }) == true) + { + isLoading = true; + + var result = await UsersService.DeleteUser(userWithRole.User.Id); + if (result.Succeeded) + { + await UpdateGrid(); + } + else + { + isLoading = false; + hasError = true; + errorMessage = string.Join(", ", result.Errors.Select(x => x.Description)); + } + } + } + catch (Exception e) + { + isLoading = false; + hasError = true; + errorMessage = e.Message; + } } async Task UpdateGrid() { isLoading = true; + hasError = false; usersWithRoles = await UsersService.GetUsersWithRole(); diff --git a/Hcs.WebApp/Services/UsersService.cs b/Hcs.WebApp/Services/UsersService.cs index 5f735c7..2d08674 100644 --- a/Hcs.WebApp/Services/UsersService.cs +++ b/Hcs.WebApp/Services/UsersService.cs @@ -88,5 +88,11 @@ namespace Hcs.WebApp.Services } await transaction.CommitAsync(); } + + public async Task DeleteUser(string userId) + { + var user = await userManager.FindByIdAsync(userId); + return await userManager.DeleteAsync(user); + } } }