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);
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        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);
        }
Exemple #4
0
        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);
        }
Exemple #5
0
        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);
            }
        }
Exemple #6
0
 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));
 }