/
va1eriy
/
taskwards
Обзор
Документация
Войти
/
va1eriy
/
taskwards
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
Taskwards.Api/Features/Auth/IRefreshTokenService.cs
60 строк
3 KB
Valeriy Kokorev
feat: implement password reset functionality
08 фев 2026, 19:09
08 фев 2026, 19:09
7ee9481
Код
Авторство
О чём код?
using Taskwards.Api.Features.Auth.Models; using Taskwards.Api.Infrastructure.Data.Entities; namespace Taskwards.Api.Features.Auth; public interface IRefreshTokenService { /// <summary> /// Создает и сохраняет новый refresh token для пользователя /// </summary> /// <param name="userId">ID пользователя</param> /// <param name="tokenFamily">GUID семейства токенов (для новой сессии используйте Guid.NewGuid())</param> /// <returns>Пара: сырой токен (для отправки клиенту) и созданная entity</returns> Task<(string rawToken, RefreshToken entity)> CreateRefreshTokenAsync( Guid userId, Guid tokenFamily, CancellationToken cancellationToken = default); /// <summary> /// Валидирует refresh token и проверяет на атаки /// </summary> /// <param name="rawToken">Сырой токен от клиента</param> /// <returns>Result с refresh token entity или ошибкой</returns> Task<RefreshTokenValidationResult> ValidateRefreshTokenAsync(string rawToken, CancellationToken cancellationToken = default); /// <summary> /// Ротация токена: отзыв старого и создание нового в той же семье /// </summary> /// <param name="oldToken">Старый refresh token entity</param> /// <returns>Пара: новый сырой токен и entity</returns> Task<(string rawToken, RefreshToken entity)> RotateRefreshTokenAsync( RefreshToken oldToken, CancellationToken cancellationToken = default); /// <summary> /// Отзывает конкретный refresh token /// </summary> /// <param name="rawToken">Сырой токен для отзыва</param> /// <param name="reason">Причина отзыва</param> Task RevokeRefreshTokenAsync(string rawToken, string reason, CancellationToken cancellationToken = default); /// <summary> /// Отзывает всю семью токенов (при обнаружении атаки) /// </summary> /// <param name="tokenFamily">GUID семейства токенов</param> /// <param name="reason">Причина отзыва</param> Task RevokeTokenFamilyAsync(Guid tokenFamily, string reason, CancellationToken cancellationToken = default); /// <summary> /// Отзывает все refresh токены пользователя (все семейства) /// </summary> /// <param name="userId">ID пользователя</param> /// <param name="reason">Причина отзыва</param> Task RevokeAllUserTokensAsync(Guid userId, string reason, CancellationToken cancellationToken = default); /// <summary> /// Удаляет истекшие и отозванные токены (cleanup) /// </summary> Task CleanupExpiredTokensAsync(CancellationToken cancellationToken = default); }