|
|
|
@ -2,9 +2,11 @@ |
|
|
|
using System.Collections.Generic; |
|
|
|
using System.Linq; |
|
|
|
using System.Threading.Tasks; |
|
|
|
using Microsoft.AspNetCore.Authorization; |
|
|
|
using Microsoft.Extensions.DependencyInjection; |
|
|
|
using Microsoft.Extensions.Localization; |
|
|
|
using Microsoft.Extensions.Options; |
|
|
|
using Volo.Abp.Authorization; |
|
|
|
using Volo.Abp.DependencyInjection; |
|
|
|
using Volo.Abp.Localization; |
|
|
|
|
|
|
|
@ -14,27 +16,51 @@ namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations |
|
|
|
{ |
|
|
|
private readonly AbpLocalizationOptions _localizationOptions; |
|
|
|
private readonly IServiceProvider _serviceProvider; |
|
|
|
private readonly IAbpAuthorizationPolicyProvider _abpAuthorizationPolicyProvider; |
|
|
|
private readonly IAuthorizationService _authorizationService; |
|
|
|
|
|
|
|
public ApplicationConfigurationBuilder(IOptions<AbpLocalizationOptions> localizationOptions, IServiceProvider serviceProvider) |
|
|
|
public ApplicationConfigurationBuilder( |
|
|
|
IOptions<AbpLocalizationOptions> localizationOptions, |
|
|
|
IServiceProvider serviceProvider, |
|
|
|
IAbpAuthorizationPolicyProvider abpAuthorizationPolicyProvider, |
|
|
|
IAuthorizationService authorizationService) |
|
|
|
{ |
|
|
|
_serviceProvider = serviceProvider; |
|
|
|
_abpAuthorizationPolicyProvider = abpAuthorizationPolicyProvider; |
|
|
|
_authorizationService = authorizationService; |
|
|
|
_localizationOptions = localizationOptions.Value; |
|
|
|
} |
|
|
|
|
|
|
|
public Task<ApplicationConfigurationDto> Get() |
|
|
|
public async Task<ApplicationConfigurationDto> GetAsync() //TODO: Test, at least with a simple Get
|
|
|
|
{ |
|
|
|
var config = new ApplicationConfigurationDto |
|
|
|
//TODO: Optimize & cache..?
|
|
|
|
|
|
|
|
return new ApplicationConfigurationDto |
|
|
|
{ |
|
|
|
Auth = await GetAuthConfig(), |
|
|
|
Localization = GetLocalizationConfig() |
|
|
|
}; |
|
|
|
|
|
|
|
return Task.FromResult(config); |
|
|
|
} |
|
|
|
|
|
|
|
private ApplicationLocalizationConfigurationDto GetLocalizationConfig() |
|
|
|
protected virtual async Task<ApplicationAuthConfigurationDto> GetAuthConfig() |
|
|
|
{ |
|
|
|
//TODO: Optimize & cache
|
|
|
|
var authConfig = new ApplicationAuthConfigurationDto(); |
|
|
|
|
|
|
|
foreach (var policyName in await _abpAuthorizationPolicyProvider.GetPoliciesNamesAsync()) |
|
|
|
{ |
|
|
|
authConfig.Policies[policyName] = true; |
|
|
|
|
|
|
|
if (await _authorizationService.IsGrantedAsync(policyName)) |
|
|
|
{ |
|
|
|
authConfig.GrantedPolicies[policyName] = true; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
return authConfig; |
|
|
|
} |
|
|
|
|
|
|
|
protected virtual ApplicationLocalizationConfigurationDto GetLocalizationConfig() |
|
|
|
{ |
|
|
|
var localizationConfig = new ApplicationLocalizationConfigurationDto(); |
|
|
|
|
|
|
|
foreach (var resource in _localizationOptions.Resources.Values) |
|
|
|
|