🐛 Fix auth session cache made auth result missing perk subscriptions

This commit is contained in:
2025-08-01 02:04:10 +08:00
parent 882c14df06
commit f4df8c0c3b

View File

@@ -7,6 +7,7 @@ using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Options; using Microsoft.Extensions.Options;
using DysonNetwork.Pass.Auth.OidcProvider.Services; using DysonNetwork.Pass.Auth.OidcProvider.Services;
using DysonNetwork.Pass.Handlers; using DysonNetwork.Pass.Handlers;
using DysonNetwork.Pass.Wallet;
using DysonNetwork.Shared.Cache; using DysonNetwork.Shared.Cache;
using SystemClock = NodaTime.SystemClock; using SystemClock = NodaTime.SystemClock;
@@ -42,6 +43,7 @@ public class DysonTokenAuthHandler(
UrlEncoder encoder, UrlEncoder encoder,
AppDatabase database, AppDatabase database,
OidcProviderService oidc, OidcProviderService oidc,
SubscriptionService subscriptions,
ICacheService cache, ICacheService cache,
FlushBufferService fbs FlushBufferService fbs
) )
@@ -79,6 +81,9 @@ public class DysonTokenAuthHandler(
if (session is not null) if (session is not null)
{ {
var perk = await subscriptions.GetPerkSubscriptionAsync(session.AccountId);
session.Account.PerkSubscription = perk?.ToReference();
// Store in cache for future requests // Store in cache for future requests
await cache.SetWithGroupsAsync( await cache.SetWithGroupsAsync(
$"auth:{sessionId}", $"auth:{sessionId}",
@@ -177,7 +182,8 @@ public class DysonTokenAuthHandler(
// Verify signature // Verify signature
var signature = Base64UrlDecode(parts[1]); var signature = Base64UrlDecode(parts[1]);
return rsa.VerifyData(payloadBytes, signature, HashAlgorithmName.SHA256, RSASignaturePadding.Pkcs1); return rsa.VerifyData(payloadBytes, signature, HashAlgorithmName.SHA256,
RSASignaturePadding.Pkcs1);
} }
catch catch
{ {
@@ -232,7 +238,7 @@ public class DysonTokenAuthHandler(
{ {
var token = authHeader["Bearer ".Length..].Trim(); var token = authHeader["Bearer ".Length..].Trim();
var parts = token.Split('.'); var parts = token.Split('.');
return new TokenInfo return new TokenInfo
{ {
Token = token, Token = token,