using MassTransit; using Tiku.Application.Security; using Tiku.Contracts; namespace Tiku.Infrastructure.Messaging; [ConsumerAuthorizationMetadata( "system", "security-state", CapabilityOperation.Read, "security.invalidation.apply")] internal sealed class SecurityStateChangedConsumer(IRedisSecurityStore redisSecurityStore) : IConsumer, IConsumer, IConsumer { public Task Consume(ConsumeContext context) => redisSecurityStore.SetInvalidationVersionAsync( "authorization", context.Message.TenantId, context.Message.UserId, context.Message.Version, context.CancellationToken); public Task Consume(ConsumeContext context) => redisSecurityStore.SetInvalidationVersionAsync( $"capability-{context.Message.ModuleCode}", context.Message.TenantId, null, context.Message.Version, context.CancellationToken); public Task Consume(ConsumeContext context) => redisSecurityStore.SetInvalidationVersionAsync( "membership", context.Message.TenantId, context.Message.UserId, context.Message.OccurredAt.ToUnixTimeMilliseconds(), context.CancellationToken); }