/
softailor
/
gridient
Обзор
Документация
Войти
/
softailor
/
gridient
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
backend/Gridient.Infrastructure.Authentication.Local/Features/AuthUsers/Commands/DeleteUserCommandHandler.cs
43 строки
2 KB
Jenkins
Auto add
18 фев 2026, 10:19
18 фев 2026, 10:19
1e6c4f8
Код
Авторство
О чём код?
using Gridient.Core.Services.Interfaces; using Gridient.Infrastructure.Authentication.Local.Features.AuthUsers.Commands; using Gridient.Infrastructure.Authentication.Local.Repositories; using MediatR; namespace Gridient.Infrastructure.Authentication.Local.Features.AuthUsers.Commands { /// <summary> /// Обработчик команды для удаления пользователя администратором /// Авторизация проверяется в AuthorizationBehavior через IRequiresSystemAuthorization /// </summary> public class DeleteUserCommandHandler : IRequestHandler<DeleteUserCommand> { private readonly IUserService _userService; private readonly IAuthUserRepository _authUserRepository; public DeleteUserCommandHandler( IUserService userService, IAuthUserRepository authUserRepository) { _userService = userService; _authUserRepository = authUserRepository; } public async Task Handle(DeleteUserCommand request, CancellationToken cancellationToken) { // Получаем пользователя для удаления, чтобы получить его логин var userForDelete = await _userService.GetByIdAsync(request.UserId, cancellationToken); if (userForDelete == null) { throw new InvalidOperationException($"Пользователь с Id {request.UserId} не найден"); } var loginToDelete = userForDelete.Login; // Удаляем Core.User через IUserService (проверяет права и ограничения) await _userService.DeleteAsync(request.CurrentUserLogin, request.UserId, cancellationToken); // Удаляем AuthUser (если существует) для локальной аутентификации await _authUserRepository.DeleteByLoginAsync(loginToDelete, cancellationToken); } } }