Example #1
0
        protected override async Task HandleRequirementAsync(AuthorizationHandlerContext authContext, ResourceRequirement requirement)
        {
            var resourceRequestDto = await _httpContextAccessor.GetContextRequest <ResourceRequestDTO>();

            if (resourceRequestDto == null)
            {
                // only triggered if no resource request has been passed within the context
                var resource = _resourceService.GetByPidUri(new Uri(_httpContextAccessor.GetRequestPidUri()));
                resourceRequestDto = _mapper.Map <ResourceRequestDTO>(resource);
            }

            var consumerGroupFromResource = resourceRequestDto.Properties.GetValueOrNull(Graph.Metadata.Constants.Resource.HasConsumerGroup, true);

            if (string.IsNullOrWhiteSpace(consumerGroupFromResource))
            {
                authContext.Succeed(requirement);
                return;
            }

            var consumerGroupAdRole = _consumerGroupService.GetAdRoleForConsumerGroup(consumerGroupFromResource);

            CheckUserRoles(authContext, requirement, consumerGroupAdRole);
        }