fixed tests and adding new sessions when it not needed

This commit is contained in:
Artemy
2026-02-22 19:34:43 +07:00
parent b1eff9c696
commit aa4c4a0685
8 changed files with 48 additions and 28 deletions
@@ -38,14 +38,14 @@ public class UserSessionOpener : IUserSessionOpener
try
{
var sessions = await _repository.GetByUserIdAsync(user.Id);
var existingSession = sessions.FirstOrDefault(s => s.DeviceInfo == deviceInfo);
var existingSession = sessions.FirstOrDefault(s => s.DeviceInfo == deviceInfo );
if (existingSession is not null)
return await UpdateExistingSessionAsync(user, deviceInfo, existingSession);
}
catch (NotFoundByKeyException<Guid> ex)
{
_logger.LogError(ex, "Could not find session for user {userId}", user.Id);
}
return await CreateNewSessionAsync(user, deviceInfo);
@@ -39,14 +39,10 @@ public class UserSessionRefresher : IUserSessionRefresher
{
try
{
var session = await _sessionsRepository.GetByHashedRefreshTokenAsync(_jwtTokenHasher.HashToken(refreshToken));
if (session.IsRevoked || session.ExpiresAt <= DateTime.UtcNow)
throw new UnauthorizedAccessException("Refresh token is invalid or expired");
session.IsRevoked = true;
await _sessionsRepository.UpdateAsync(session);
// Find user
var user = await _usersRepository.FindByIdAsync(session.UserId);
@@ -60,6 +56,7 @@ public class UserSessionRefresher : IUserSessionRefresher
// Opening new session
var newSession = new UserSession
{
Id = session.Id,
UserId = user.Id,
RefreshTokenHash = newRefreshTokenHash,
DeviceInfo = session.DeviceInfo,
@@ -67,7 +64,7 @@ public class UserSessionRefresher : IUserSessionRefresher
ExpiresAt = DateTime.UtcNow.AddDays(_options.RefreshTokenLifetimeDays)
};
await _sessionsRepository.AddAsync(newSession);
await _sessionsRepository.UpdateAsync(newSession);
return new RefreshResult(newRefreshToken, newAccessToken);
}