/
softailor
/
gridient
Обзор
Документация
Войти
/
softailor
/
gridient
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
backend/Gridient.Infrastructure.Authentication.Local/Features/Password/Queries/RequestResetTokenQueryHandler.cs
47 строк
2 KB
Jenkins
Auto add
18 фев 2026, 10:19
18 фев 2026, 10:19
1e6c4f8
Код
Авторство
О чём код?
using Gridient.Core.Options; using Gridient.Infrastructure.Authentication.Local.Features.Password.Queries; using Gridient.Infrastructure.Authentication.Local.Services; using MediatR; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; namespace Gridient.Infrastructure.Authentication.Local.Features.Password.Queries { /// <summary> /// Обработчик запроса для генерации токена сброса пароля администратором /// Авторизация проверяется в AuthorizationBehavior через IRequiresSystemAuthorization /// </summary> public class RequestResetTokenQueryHandler : IRequestHandler<RequestResetTokenQuery, string?> { private readonly IPasswordResetService _passwordResetService; private readonly RegistrationOptions _registrationOptions; private readonly ILogger<RequestResetTokenQueryHandler> _logger; public RequestResetTokenQueryHandler( IPasswordResetService passwordResetService, IOptions<RegistrationOptions> registrationOptions, ILogger<RequestResetTokenQueryHandler> logger) { _passwordResetService = passwordResetService; _registrationOptions = registrationOptions.Value; _logger = logger; } public async Task<string?> Handle(RequestResetTokenQuery request, CancellationToken cancellationToken) { if (!_registrationOptions.EnableAdminCreation) { _logger.LogWarning("Генерация токена сброса пароля отклонена: EnableAdminCreation отключен"); throw new InvalidOperationException("Генерация токенов сброса пароля отключена"); } if (string.IsNullOrWhiteSpace(request.Login)) { throw new ArgumentException("Логин не может быть пустым", nameof(request.Login)); } var token = await _passwordResetService.GenerateResetTokenAsync(request.Login, cancellationToken); return token; } } }