|
|
|
@ -4,8 +4,10 @@ using System; |
|
|
|
using System.Collections.Generic; |
|
|
|
using System.Linq; |
|
|
|
using System.Security.Claims; |
|
|
|
using System.Security.Principal; |
|
|
|
using System.Threading.Tasks; |
|
|
|
using Volo.Abp.DependencyInjection; |
|
|
|
using Volo.Abp.MultiTenancy; |
|
|
|
using Volo.Abp.Security.Claims; |
|
|
|
|
|
|
|
namespace Volo.Abp.Authorization.Permissions |
|
|
|
@ -18,6 +20,8 @@ namespace Volo.Abp.Authorization.Permissions |
|
|
|
|
|
|
|
protected ICurrentPrincipalAccessor PrincipalAccessor { get; } |
|
|
|
|
|
|
|
protected ICurrentTenant CurrentTenant { get; } |
|
|
|
|
|
|
|
protected PermissionOptions Options { get; } |
|
|
|
|
|
|
|
private readonly Lazy<List<IPermissionValueProvider>> _lazyProviders; |
|
|
|
@ -26,10 +30,12 @@ namespace Volo.Abp.Authorization.Permissions |
|
|
|
IOptions<PermissionOptions> options, |
|
|
|
IServiceProvider serviceProvider, |
|
|
|
ICurrentPrincipalAccessor principalAccessor, |
|
|
|
IPermissionDefinitionManager permissionDefinitionManager) |
|
|
|
IPermissionDefinitionManager permissionDefinitionManager, |
|
|
|
ICurrentTenant currentTenant) |
|
|
|
{ |
|
|
|
PrincipalAccessor = principalAccessor; |
|
|
|
PermissionDefinitionManager = permissionDefinitionManager; |
|
|
|
CurrentTenant = currentTenant; |
|
|
|
Options = options.Value; |
|
|
|
|
|
|
|
_lazyProviders = new Lazy<List<IPermissionValueProvider>>( |
|
|
|
@ -50,9 +56,17 @@ namespace Volo.Abp.Authorization.Permissions |
|
|
|
{ |
|
|
|
Check.NotNull(name, nameof(name)); |
|
|
|
|
|
|
|
var isGranted = false; |
|
|
|
|
|
|
|
var permission = PermissionDefinitionManager.Get(name); |
|
|
|
|
|
|
|
var multiTenancySide = claimsPrincipal?.GetMultiTenancySide() |
|
|
|
?? CurrentTenant.GetMultiTenancySide(); |
|
|
|
|
|
|
|
if (!permission.MultiTenancySide.HasFlag(multiTenancySide)) |
|
|
|
{ |
|
|
|
return false; |
|
|
|
} |
|
|
|
|
|
|
|
var isGranted = false; |
|
|
|
var context = new PermissionValueCheckContext(permission, claimsPrincipal); |
|
|
|
foreach (var provider in ValueProviders) |
|
|
|
{ |
|
|
|
|