Exemplo n.º 1
0
        public async Task <PdpResponse> GetPermissionsAsync(string user, string application)
        {
            PdpResponse pdpResponse = null;

            if (cachingEnabled)
            {
                pdpResponse = _cache.Get <PdpResponse>(BuildCacheKey(user));

                if (pdpResponse != null)
                {
                    return(pdpResponse);
                }
            }

            var response = await _client.GetAsync($"{_options.PdpUrl}/applications/{application}/users/{user.Replace("@","%40")}/permissions");

            if (response.IsSuccessStatusCode)
            {
                pdpResponse = await response.Content.ReadAsAsync <PdpResponse>();
            }
            else
            {
                _logger.LogCritical($"Impossible to retreive permissions from {_options.PdpUrl} for {application} / {user}. Response status code: {response.StatusCode}");
            }

            if (cachingEnabled && (pdpResponse?.permissions.Any()).GetValueOrDefault())
            {
                _cache.Set(BuildCacheKey(user), pdpResponse, _cacheOptions);
            }

            return(pdpResponse);
        }
        public Task <PdpResponse> GetPermissionsAsync(string user, string application)
        {
            var pdpResponse = new PdpResponse
            {
                applicationId = application,
                userId        = user,
                permissions   = _permissions.Permissions
            };

            return(Task.FromResult <PdpResponse>(pdpResponse));
        }
        public async Task <PdpResponse> GetPermissionsAsync(string user, string application)
        {
            PdpResponse pdpResponse = null;

            if (_options.PdpCacheDuration > 0)
            {
                pdpResponse = _cache.Get <PdpResponse>(BuildCacheKey(user));

                if (pdpResponse != null)
                {
                    return(pdpResponse);
                }
            }

            using (var request = new HttpRequestMessage(HttpMethod.Get, $"applications/{application}/users/{user.Replace("@", "%40")}/permissions"))
            {
                using (var response = await _client.SendAsync(request))
                {
                    if (response.IsSuccessStatusCode)
                    {
                        pdpResponse = await response.Content.ReadAsAsync <PdpResponse>();
                    }
                    else
                    {
                        _logger.LogCritical($"Impossible to retrieve permissions from {_options.PdpUrl} for {application} / {user}. Response status code: {response.StatusCode}");
                    }
                }
            }

            if (_options.PdpCacheDuration > 0 && pdpResponse != null)
            {
                if (!pdpResponse.permissions?.Any() ?? true)
                {
                    //no permissions found => cache empty list
                    pdpResponse.permissions = new List <string>();
                }
                _cache.Set(BuildCacheKey(user), pdpResponse, _cacheOptions);
            }

            return(pdpResponse);
        }