feat(auth): add Redis authorization caching
This commit is contained in:
@@ -19,6 +19,7 @@ internal sealed class TenantLifecycleService(
|
||||
ITenantRuntimeCacheInvalidator runtimeCacheInvalidator,
|
||||
ITenantPublicCacheInvalidator publicCacheInvalidator,
|
||||
ITenantFeatureCacheInvalidator featureCacheInvalidator,
|
||||
IAuthorizationStateInvalidator authorizationStateInvalidator,
|
||||
IObjectStorageService objectStorageService) : ITenantLifecycleService
|
||||
{
|
||||
private static readonly TimeSpan RecentExportWindow = TimeSpan.FromHours(24);
|
||||
@@ -219,6 +220,12 @@ internal sealed class TenantLifecycleService(
|
||||
AddAudit(tenantId, actorUserId, "tenant.owner_transferred", targetUserId, reason);
|
||||
await dbContext.SaveChangesAsync(cancellationToken);
|
||||
await transaction.CommitAsync(cancellationToken);
|
||||
await authorizationStateInvalidator.BumpScopeAsync(AuthRealm.Tenant, tenantId, cancellationToken);
|
||||
if (previousOwnerId.HasValue)
|
||||
{
|
||||
await authorizationStateInvalidator.InvalidateMembershipAsync(tenantId, previousOwnerId.Value, cancellationToken);
|
||||
}
|
||||
await authorizationStateInvalidator.InvalidateMembershipAsync(tenantId, targetUserId, cancellationToken);
|
||||
await InvalidateAsync(tenantId, cancellationToken);
|
||||
return ToItem(operation);
|
||||
}
|
||||
@@ -256,6 +263,7 @@ internal sealed class TenantLifecycleService(
|
||||
await runtimeCacheInvalidator.InvalidateAsync(tenantId, cancellationToken);
|
||||
await publicCacheInvalidator.InvalidateAsync(tenantId, cancellationToken);
|
||||
await featureCacheInvalidator.InvalidateAsync(tenantId, cancellationToken);
|
||||
await authorizationStateInvalidator.InvalidateTenantAsync(tenantId, cancellationToken);
|
||||
}
|
||||
|
||||
private static TenantLifecycleOperation CreateOperation(
|
||||
|
||||
Reference in New Issue
Block a user