Renamed to avoid confusion with domain model repositories
This commit is contained in:
@@ -3,7 +3,7 @@ using AipsCore.Domain.Models.User.ValueObjects;
|
|||||||
|
|
||||||
namespace AipsCore.Application.Abstract.UserContext;
|
namespace AipsCore.Application.Abstract.UserContext;
|
||||||
|
|
||||||
public interface IRefreshTokenRepository
|
public interface IRefreshTokenManager
|
||||||
{
|
{
|
||||||
Task AddAsync(string token, UserId userId, CancellationToken cancellationToken = default);
|
Task AddAsync(string token, UserId userId, CancellationToken cancellationToken = default);
|
||||||
Task<RefreshToken> GetByValueAsync(string token, CancellationToken cancellationToken = default);
|
Task<RefreshToken> GetByValueAsync(string token, CancellationToken cancellationToken = default);
|
||||||
@@ -9,18 +9,18 @@ namespace AipsCore.Application.Models.User.Command.LogIn;
|
|||||||
public class LogInUserCommandHandler : ICommandHandler<LogInUserCommand, LogInUserResultDto>
|
public class LogInUserCommandHandler : ICommandHandler<LogInUserCommand, LogInUserResultDto>
|
||||||
{
|
{
|
||||||
private readonly ITokenProvider _tokenProvider;
|
private readonly ITokenProvider _tokenProvider;
|
||||||
private readonly IRefreshTokenRepository _refreshTokenRepository;
|
private readonly IRefreshTokenManager _refreshTokenManager;
|
||||||
private readonly IAuthService _authService;
|
private readonly IAuthService _authService;
|
||||||
private readonly IUnitOfWork _unitOfWork;
|
private readonly IUnitOfWork _unitOfWork;
|
||||||
|
|
||||||
public LogInUserCommandHandler(
|
public LogInUserCommandHandler(
|
||||||
ITokenProvider tokenProvider,
|
ITokenProvider tokenProvider,
|
||||||
IRefreshTokenRepository refreshTokenRepository,
|
IRefreshTokenManager refreshTokenManager,
|
||||||
IAuthService authService,
|
IAuthService authService,
|
||||||
IUnitOfWork unitOfWork)
|
IUnitOfWork unitOfWork)
|
||||||
{
|
{
|
||||||
_tokenProvider = tokenProvider;
|
_tokenProvider = tokenProvider;
|
||||||
_refreshTokenRepository = refreshTokenRepository;
|
_refreshTokenManager = refreshTokenManager;
|
||||||
_authService = authService;
|
_authService = authService;
|
||||||
_unitOfWork = unitOfWork;
|
_unitOfWork = unitOfWork;
|
||||||
}
|
}
|
||||||
@@ -32,7 +32,7 @@ public class LogInUserCommandHandler : ICommandHandler<LogInUserCommand, LogInUs
|
|||||||
var accessToken = _tokenProvider.GenerateAccessToken(loginResult.User, loginResult.Roles);
|
var accessToken = _tokenProvider.GenerateAccessToken(loginResult.User, loginResult.Roles);
|
||||||
var refreshToken = _tokenProvider.GenerateRefreshToken();
|
var refreshToken = _tokenProvider.GenerateRefreshToken();
|
||||||
|
|
||||||
await _refreshTokenRepository.AddAsync(refreshToken, loginResult.User.Id, cancellationToken);
|
await _refreshTokenManager.AddAsync(refreshToken, loginResult.User.Id, cancellationToken);
|
||||||
await _unitOfWork.SaveChangesAsync(cancellationToken);
|
await _unitOfWork.SaveChangesAsync(cancellationToken);
|
||||||
|
|
||||||
return new LogInUserResultDto(accessToken, refreshToken);
|
return new LogInUserResultDto(accessToken, refreshToken);
|
||||||
|
|||||||
@@ -5,15 +5,15 @@ namespace AipsCore.Application.Models.User.Command.LogOut;
|
|||||||
|
|
||||||
public class LogOutCommandHandler : ICommandHandler<LogOutCommand>
|
public class LogOutCommandHandler : ICommandHandler<LogOutCommand>
|
||||||
{
|
{
|
||||||
private readonly IRefreshTokenRepository _refreshTokenRepository;
|
private readonly IRefreshTokenManager _refreshTokenManager;
|
||||||
|
|
||||||
public LogOutCommandHandler(IRefreshTokenRepository refreshTokenRepository)
|
public LogOutCommandHandler(IRefreshTokenManager refreshTokenManager)
|
||||||
{
|
{
|
||||||
_refreshTokenRepository = refreshTokenRepository;
|
_refreshTokenManager = refreshTokenManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task Handle(LogOutCommand command, CancellationToken cancellationToken = default)
|
public async Task Handle(LogOutCommand command, CancellationToken cancellationToken = default)
|
||||||
{
|
{
|
||||||
await _refreshTokenRepository.RevokeAsync(command.RefreshToken, cancellationToken);
|
await _refreshTokenManager.RevokeAsync(command.RefreshToken, cancellationToken);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -5,12 +5,12 @@ namespace AipsCore.Application.Models.User.Command.LogOutAll;
|
|||||||
|
|
||||||
public class LogOutAllCommandHandler : ICommandHandler<LogOutAllCommand>
|
public class LogOutAllCommandHandler : ICommandHandler<LogOutAllCommand>
|
||||||
{
|
{
|
||||||
private readonly IRefreshTokenRepository _refreshTokenRepository;
|
private readonly IRefreshTokenManager _refreshTokenManager;
|
||||||
private readonly IUserContext _userContext;
|
private readonly IUserContext _userContext;
|
||||||
|
|
||||||
public LogOutAllCommandHandler(IRefreshTokenRepository refreshTokenRepository, IUserContext userContext)
|
public LogOutAllCommandHandler(IRefreshTokenManager refreshTokenManager, IUserContext userContext)
|
||||||
{
|
{
|
||||||
_refreshTokenRepository = refreshTokenRepository;
|
_refreshTokenManager = refreshTokenManager;
|
||||||
_userContext = userContext;
|
_userContext = userContext;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -18,6 +18,6 @@ public class LogOutAllCommandHandler : ICommandHandler<LogOutAllCommand>
|
|||||||
{
|
{
|
||||||
var userId = _userContext.GetCurrentUserId();
|
var userId = _userContext.GetCurrentUserId();
|
||||||
|
|
||||||
return _refreshTokenRepository.RevokeAllAsync(userId, cancellationToken);
|
return _refreshTokenManager.RevokeAllAsync(userId, cancellationToken);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -9,33 +9,33 @@ namespace AipsCore.Application.Models.User.Command.RefreshLogIn;
|
|||||||
public class RefreshLogInCommandHandler : ICommandHandler<RefreshLogInCommand, LogInUserResultDto>
|
public class RefreshLogInCommandHandler : ICommandHandler<RefreshLogInCommand, LogInUserResultDto>
|
||||||
{
|
{
|
||||||
private readonly ITokenProvider _tokenProvider;
|
private readonly ITokenProvider _tokenProvider;
|
||||||
private readonly IRefreshTokenRepository _refreshTokenRepository;
|
private readonly IRefreshTokenManager _refreshTokenManager;
|
||||||
private readonly IAuthService _authService;
|
private readonly IAuthService _authService;
|
||||||
private readonly IUnitOfWork _unitOfWork;
|
private readonly IUnitOfWork _unitOfWork;
|
||||||
|
|
||||||
public RefreshLogInCommandHandler(
|
public RefreshLogInCommandHandler(
|
||||||
ITokenProvider tokenProvider,
|
ITokenProvider tokenProvider,
|
||||||
IRefreshTokenRepository refreshTokenRepository,
|
IRefreshTokenManager refreshTokenManager,
|
||||||
IAuthService authService,
|
IAuthService authService,
|
||||||
IUnitOfWork unitOfWork)
|
IUnitOfWork unitOfWork)
|
||||||
{
|
{
|
||||||
_tokenProvider = tokenProvider;
|
_tokenProvider = tokenProvider;
|
||||||
_refreshTokenRepository = refreshTokenRepository;
|
_refreshTokenManager = refreshTokenManager;
|
||||||
_authService = authService;
|
_authService = authService;
|
||||||
_unitOfWork = unitOfWork;
|
_unitOfWork = unitOfWork;
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<LogInUserResultDto> Handle(RefreshLogInCommand command, CancellationToken cancellationToken = default)
|
public async Task<LogInUserResultDto> Handle(RefreshLogInCommand command, CancellationToken cancellationToken = default)
|
||||||
{
|
{
|
||||||
var refreshToken = await _refreshTokenRepository.GetByValueAsync(command.RefreshToken, cancellationToken);
|
var refreshToken = await _refreshTokenManager.GetByValueAsync(command.RefreshToken, cancellationToken);
|
||||||
|
|
||||||
var loginResult = await _authService.LoginWithRefreshTokenAsync(refreshToken, cancellationToken);
|
var loginResult = await _authService.LoginWithRefreshTokenAsync(refreshToken, cancellationToken);
|
||||||
|
|
||||||
var newAccessToken = _tokenProvider.GenerateAccessToken(loginResult.User, loginResult.Roles);
|
var newAccessToken = _tokenProvider.GenerateAccessToken(loginResult.User, loginResult.Roles);
|
||||||
var newRefreshToken = _tokenProvider.GenerateRefreshToken();
|
var newRefreshToken = _tokenProvider.GenerateRefreshToken();
|
||||||
|
|
||||||
await _refreshTokenRepository.RevokeAsync(refreshToken.Value, cancellationToken);
|
await _refreshTokenManager.RevokeAsync(refreshToken.Value, cancellationToken);
|
||||||
await _refreshTokenRepository.AddAsync(newRefreshToken, loginResult.User.Id, cancellationToken);
|
await _refreshTokenManager.AddAsync(newRefreshToken, loginResult.User.Id, cancellationToken);
|
||||||
|
|
||||||
await _unitOfWork.SaveChangesAsync(cancellationToken);
|
await _unitOfWork.SaveChangesAsync(cancellationToken);
|
||||||
|
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ public static class PersistenceRegistrationExtensions
|
|||||||
services.AddTransient<IWhiteboardMembershipRepository, WhiteboardMembershipRepository>();
|
services.AddTransient<IWhiteboardMembershipRepository, WhiteboardMembershipRepository>();
|
||||||
services.AddTransient<IShapeRepository, ShapeRepository>();
|
services.AddTransient<IShapeRepository, ShapeRepository>();
|
||||||
|
|
||||||
services.AddTransient<IRefreshTokenRepository, RefreshTokenRepository>();
|
services.AddTransient<IRefreshTokenManager, RefreshTokenManager>();
|
||||||
|
|
||||||
return services;
|
return services;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,12 +6,12 @@ using Microsoft.EntityFrameworkCore;
|
|||||||
|
|
||||||
namespace AipsCore.Infrastructure.Persistence.RefreshToken;
|
namespace AipsCore.Infrastructure.Persistence.RefreshToken;
|
||||||
|
|
||||||
public class RefreshTokenRepository : IRefreshTokenRepository
|
public class RefreshTokenManager : IRefreshTokenManager
|
||||||
{
|
{
|
||||||
private readonly AipsDbContext _dbContext;
|
private readonly AipsDbContext _dbContext;
|
||||||
private readonly JwtSettings _jwtSettings;
|
private readonly JwtSettings _jwtSettings;
|
||||||
|
|
||||||
public RefreshTokenRepository(AipsDbContext dbContext, JwtSettings jwtSettings)
|
public RefreshTokenManager(AipsDbContext dbContext, JwtSettings jwtSettings)
|
||||||
{
|
{
|
||||||
_dbContext = dbContext;
|
_dbContext = dbContext;
|
||||||
_jwtSettings = jwtSettings;
|
_jwtSettings = jwtSettings;
|
||||||
Reference in New Issue
Block a user