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); }