Пример #1
0
        public async Task <ConsentViewModel> BuildViewModelAsync(string returnUrl, ConsentInputModel model = null)
        {
            var request = await this.interactionService.GetAuthorizationContextAsync(returnUrl);

            if (request == null)
            {
                LoggerExtensions.LogError(this.Logger, "No consent request matching request: {0}", returnUrl);
                return(null);
            }

            var client = await IClientStoreExtensions.FindEnabledClientByIdAsync(this.clientStore, request.ClientId);

            if (client == null)
            {
                LoggerExtensions.LogError(this.Logger, "Invalid client id: {0}", request.ClientId);
                return(null);
            }

            var resources = await IResourceStoreExtensions.FindEnabledResourcesByScopeAsync(this.resourceStore, request.ScopesRequested);

            if (resources != null && (resources.IdentityResources.Any() || resources.ApiResources.Any()))
            {
                return(this.CreateConsentViewModel(model, returnUrl, client, resources));
            }

            LoggerExtensions.LogError(this.Logger, "No scopes matching: {0}", request.ScopesRequested.Aggregate((x, y) => x + ", " + y));

            return(null);
        }
Пример #2
0
        private async Task <ConsentViewModel> BuildViewModelAsync(string returnUrl, ConsentInputModel model = null)
        {
            var request = await _interaction.GetAuthorizationContextAsync(returnUrl);

            if (request != null)
            {
                var client = await IClientStoreExtensions.FindEnabledClientByIdAsync(_clientStore, request.ClientId);

                if (client != null)
                {
                    var resources = await IResourceStoreExtensions.FindEnabledResourcesByScopeAsync(_resourceStore, request.ScopesRequested);

                    if (resources != null && (resources.IdentityResources.Any() || resources.ApiResources.Any()))
                    {
                        return(CreateConsentViewModel(model, returnUrl, request, client, resources));
                    }
                    else
                    {
                        LoggerExtensions.LogError(_logger, "No scopes matching: {0}", Enumerable.Aggregate <string>(request.ScopesRequested, (x, y) => x + ", " + y));
                    }
                }
                else
                {
                    LoggerExtensions.LogError(_logger, "Invalid client id: {0}", request.ClientId);
                }
            }
            else
            {
                LoggerExtensions.LogError(_logger, "No consent request matching request: {0}", returnUrl);
            }

            return(null);
        }
        private async Task <GrantsViewModel> BuildViewModelAsync()
        {
            var grants = await _interaction.GetAllUserConsentsAsync();

            var list = new List <GrantViewModel>();

            foreach (var grant in grants)
            {
                var client = await _clients.FindClientByIdAsync(grant.ClientId);

                if (client != null)
                {
                    var resources = await IResourceStoreExtensions.FindResourcesByScopeAsync(_resources, grant.Scopes);

                    var item = new GrantViewModel()
                    {
                        ClientId           = client.ClientId,
                        ClientName         = client.ClientName ?? client.ClientId,
                        ClientLogoUrl      = client.LogoUri,
                        ClientUrl          = client.ClientUri,
                        Created            = grant.CreationTime,
                        Expires            = grant.Expiration,
                        IdentityGrantNames = resources.IdentityResources.Select(x => x.DisplayName ?? x.Name).ToArray(),
                        ApiGrantNames      = resources.ApiResources.Select(x => x.DisplayName ?? x.Name).ToArray()
                    };

                    list.Add(item);
                }
            }

            return(new GrantsViewModel
            {
                Grants = list
            });
        }
        private static IEnumerable <string> GetInvalidScopes(IResourceStore resourceStore)
        {
            try
            {
                IResourceStoreExtensions.GetAllEnabledResourcesAsync(resourceStore).GetAwaiter().GetResult();
            }
            catch (Exception ex)
            {
                // HACK (Cameron): This is fairly brittle but not sure about an alternative at the moment.
                return(ex.Message.Substring(112).Split(", ", StringSplitOptions.RemoveEmptyEntries));
            }

            return(Enumerable.Empty <string>());
        }