fix cache issue

This commit is contained in:
Alex Bezdieniezhnykh
2025-04-16 01:49:34 +03:00
parent 461606ef08
commit 4fc1fb4d63
3 changed files with 11 additions and 21 deletions
+2 -1
View File
@@ -10,7 +10,8 @@ public class User
public UserConfig? UserConfig { get; set; } = null!;
public static string GetCacheKey(string email) => $"{nameof(User)}.{email}";
public static string GetCacheKey(string email) =>
string.IsNullOrEmpty(email) ? "" : $"{nameof(User)}.{email}";
}
public class UserConfig
+5 -11
View File
@@ -11,28 +11,22 @@ namespace Azaion.Services;
public interface IAuthService
{
Guid? GetCurrentUserId();
Task<User?> GetCurrentUser();
Task<User?> GetCurrentUser();
string CreateToken(User user);
}
public class AuthService(IHttpContextAccessor httpContextAccessor, IOptions<JwtConfig> jwtConfig, IUserService userService) : IAuthService
{
public Guid? GetCurrentUserId()
private string? GetCurrentUserEmail()
{
var claims = httpContextAccessor.HttpContext?.User.Claims.ToDictionary(x => x.Type);
if (claims == null)
return null;
var id = Guid.Parse(claims[ClaimTypes.NameIdentifier].Value);
return id;
return claims?[ClaimTypes.Name].Value;
}
public async Task<User?> GetCurrentUser()
{
var id = GetCurrentUserId();
return await userService.GetById(id);
var email = GetCurrentUserEmail();
return await userService.GetByEmail(email);
}
public string CreateToken(User user)
+4 -9
View File
@@ -12,8 +12,7 @@ public interface IUserService
{
Task RegisterUser(RegisterUserRequest request, CancellationToken cancellationToken = default);
Task<User> ValidateUser(LoginRequest request, CancellationToken cancellationToken = default);
Task<User?> GetById(Guid? id, CancellationToken cancellationToken = default);
Task<User?> GetByEmail(string email, CancellationToken cancellationToken = default);
Task<User?> GetByEmail(string? email, CancellationToken cancellationToken = default);
Task UpdateHardware(string email, HardwareInfo hardwareInfo, CancellationToken cancellationToken = default);
Task UpdateQueueOffsets(string email, UserQueueOffsets queueOffsets, CancellationToken cancellationToken = default);
Task<IEnumerable<User>> GetUsers(string? searchEmail, RoleEnum? searchRole, CancellationToken cancellationToken);
@@ -40,14 +39,10 @@ public class UserService(IDbFactory dbFactory, ICache cache) : IUserService
});
}
public async Task<User?> GetById(Guid? id, CancellationToken cancellationToken = default) =>
await cache.GetFromCacheAsync($"{nameof(User)}.{id}",
public async Task<User?> GetByEmail(string? email, CancellationToken cancellationToken = default) =>
await cache.GetFromCacheAsync(User.GetCacheKey(email),
async () => await dbFactory.Run(async db =>
await db.Users.FirstOrDefaultAsync(x => x.Id == id, cancellationToken)), TimeSpan.FromHours(2));
public async Task<User?> GetByEmail(string email, CancellationToken cancellationToken = default) =>
await dbFactory.Run(async db =>
await db.Users.FirstOrDefaultAsync(x => x.Email == email, cancellationToken));
await db.Users.FirstOrDefaultAsync(x => x.Email == email, cancellationToken)));
public async Task<User> ValidateUser(LoginRequest request, CancellationToken cancellationToken = default) =>
await dbFactory.Run(async db =>