public async Task AddEffectiveAuthorizationAsync(EffectiveAuthorizationEvent effectiveAuthorizationEvent) { var effectiveAuthorizationTimeline = await effectiveAuthorizationTimelineFactory.Create(effectiveAuthorizationEvent.EffectiveAuthorization); // calculate intervals and early return if intervals var intervals = effectiveAuthorizationTimeline.CalculateEffectiveIntervals().ToList(); if (intervals.Count == 0) { // Early return if no intervals apply return; } // Get enrichment information for the aggregatre var user = await personalResolverService.ResolvePerson(effectiveAuthorizationTimeline.EffectiveAuthorization.User); Person targetPerson = null; if (effectiveAuthorizationTimeline.EffectiveAuthorization.Target != null) { targetPerson = await personalResolverService.ResolvePerson(effectiveAuthorizationTimeline.EffectiveAuthorization.Target); } // Map aggregate to reporting model and save var effectiveAuthorizationIntervals = intervals.Select(interval => new EffectiveAuthorizationInterval(interval, user, targetPerson, effectiveAuthorizationTimeline.EffectiveAuthorization.Permission, effectiveAuthorizationTimeline.EffectiveAuthorization.TenantId)) .ToList(); await reportingStorage.SaveAsync(effectiveAuthorizationIntervals); }
public async Task <string> AddAuthLogAsync(EffectiveAuthorizationEvent effectiveAuthorizationEvent) { // Store event and re-raise event var output = await rawEventStorage.WriteRawEventAsync(effectiveAuthorizationEvent); await bus.GetTopicEffectiveAuthorizationEventStored(). DispatchAsync(effectiveAuthorizationEvent); return(output); }
public static IEnumerable <ExternalId> GetUserIds(this EffectiveAuthorizationEvent input) { var result = new List <ExternalId> { input.EffectiveAuthorization.User, }; if (input.EffectiveAuthorization.Target != null) { result.Add(input.EffectiveAuthorization.Target); } return(result); }
public static EffectiveAuthorizationEvent Convertor(string eventGridMessage) { EffectiveAuthorizationEvent eaEvent = null; if (eventGridMessage.Contains("From")) { eaEvent = JsonConvert.DeserializeObject <EffectiveAuthorizationGrantedEvent>(eventGridMessage); } else if (eventGridMessage.Contains("Until")) { eaEvent = JsonConvert.DeserializeObject <EffectiveAuthorizationRevokedEvent>(eventGridMessage); } return(eaEvent); }
public async Task <string> WriteRawEventAsync(EffectiveAuthorizationEvent effectiveAuthorizationEvent) { var effectiveAuthorizationEventModel = DomainAdapter.MapDomainToWriteStorageModel(effectiveAuthorizationEvent); try { var resourceResponse = await _client.CreateDocumentAsync(UriFactory.CreateDocumentCollectionUri(_dbConfig.Database, _dbConfig.Collection), effectiveAuthorizationEventModel); _logger.LogInformation("Data is Inserted"); return(resourceResponse.Resource.Id); } catch (Exception e) { throw new RawEventStorageException($"Storage failure causes process interruption due to :{e.Message}", e); } }
public Task <string> WriteRawEventAsync(EffectiveAuthorizationEvent effectiveAuthorizationEvent) { events.Add(effectiveAuthorizationEvent); return(Task.FromResult <string>(events.IndexOf(effectiveAuthorizationEvent).ToString())); }
public async Task <string> AddAuthLogAsync(EffectiveAuthorizationEvent effectiveAuthorizationEvent) { return(await _rawEventStorage.WriteRawEventAsync(effectiveAuthorizationEvent)); }