From 82c8dce8e53c041caac404e293274154867466a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Sun, 25 Feb 2018 18:37:26 +0300 Subject: [PATCH] Redesign permission checker. --- .../Authorization/AbpAuthorizationModule.cs | 7 +++++ .../PermissionRequirementHandler.cs | 2 +- .../AlwaysAllowPermissionChecker.cs | 8 ++++- .../Permissions/IPermissionChecker.cs | 5 +++- .../Permissions/IPermissionValueProvider.cs | 2 +- .../Permissions/PermissionChecker.cs | 28 ++++++++++++----- .../PermissionCheckerExtensions.cs | 8 ++++- .../PermissionValueCheckContext.cs | 22 ++++++++++++++ .../Permissions/PermissionValueProvider.cs | 2 +- .../RolePermissionValueProvider.cs | 19 ++++++------ .../UserPermissionValueProvider.cs | 26 ++++++++-------- .../UserPermissionManagementProvider.cs | 3 +- .../RolePermissionManagerExtensions.cs | 1 + .../UserPermissionManagerExtensions.cs | 1 + src/Volo.Abp.Session/Volo.Abp.Session.csproj | 2 -- .../Volo/Abp/Session/AbpSessionModule.cs | 9 ------ .../Settings/UserSettingManagerExtensions.cs | 2 ++ .../Identity/AbpIdentityTestDataBuilder.cs | 3 +- .../PermissionChecker_User_Tests.cs | 30 +++++++++++-------- .../Permissions/PermissionTestDataBuilder.cs | 1 + 20 files changed, 119 insertions(+), 62 deletions(-) create mode 100644 src/Volo.Abp.Authorization/Volo/Abp/Authorization/Permissions/PermissionValueCheckContext.cs rename src/{Volo.Abp.Session/Volo/Abp/Session => Volo.Abp.Authorization/Volo/Abp/Authorization/Permissions}/RolePermissionValueProvider.cs (62%) rename src/{Volo.Abp.Session/Volo/Abp/Session => Volo.Abp.Authorization/Volo/Abp/Authorization/Permissions}/UserPermissionValueProvider.cs (50%) diff --git a/src/Volo.Abp.Authorization/Volo/Abp/Authorization/AbpAuthorizationModule.cs b/src/Volo.Abp.Authorization/Volo/Abp/Authorization/AbpAuthorizationModule.cs index 7c978103d4..d32d110bac 100644 --- a/src/Volo.Abp.Authorization/Volo/Abp/Authorization/AbpAuthorizationModule.cs +++ b/src/Volo.Abp.Authorization/Volo/Abp/Authorization/AbpAuthorizationModule.cs @@ -1,5 +1,6 @@ using Microsoft.AspNetCore.Authorization; using Microsoft.Extensions.DependencyInjection; +using Volo.Abp.Authorization.Permissions; using Volo.Abp.Modularity; using Volo.Abp.Security; @@ -14,6 +15,12 @@ namespace Volo.Abp.Authorization services.AddSingleton(); + services.Configure(options => + { + options.ValueProviders.Add(); + options.ValueProviders.Add(); + }); + services.AddAssemblyOf(); } } diff --git a/src/Volo.Abp.Authorization/Volo/Abp/Authorization/PermissionRequirementHandler.cs b/src/Volo.Abp.Authorization/Volo/Abp/Authorization/PermissionRequirementHandler.cs index fd67a09dbd..d4ec7c1d3c 100644 --- a/src/Volo.Abp.Authorization/Volo/Abp/Authorization/PermissionRequirementHandler.cs +++ b/src/Volo.Abp.Authorization/Volo/Abp/Authorization/PermissionRequirementHandler.cs @@ -17,7 +17,7 @@ namespace Volo.Abp.Authorization AuthorizationHandlerContext context, PermissionRequirement requirement) { - if (await _permissionChecker.IsGrantedAsync(requirement.PermissionName)) + if (await _permissionChecker.IsGrantedAsync(context.User, requirement.PermissionName)) { context.Succeed(requirement); } diff --git a/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Permissions/AlwaysAllowPermissionChecker.cs b/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Permissions/AlwaysAllowPermissionChecker.cs index 9773ab2f28..b5a75ce40e 100644 --- a/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Permissions/AlwaysAllowPermissionChecker.cs +++ b/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Permissions/AlwaysAllowPermissionChecker.cs @@ -1,4 +1,5 @@ -using System.Threading.Tasks; +using System.Security.Claims; +using System.Threading.Tasks; namespace Volo.Abp.Authorization.Permissions { @@ -14,5 +15,10 @@ namespace Volo.Abp.Authorization.Permissions { return Task.FromResult(new PermissionGrantInfo(name, true, "AlwaysAllow")); } + + public Task CheckAsync(ClaimsPrincipal claimsPrincipal, string name) + { + return Task.FromResult(new PermissionGrantInfo(name, true, "AlwaysAllow")); + } } } diff --git a/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Permissions/IPermissionChecker.cs b/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Permissions/IPermissionChecker.cs index 26b0d7a01a..833e09281c 100644 --- a/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Permissions/IPermissionChecker.cs +++ b/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Permissions/IPermissionChecker.cs @@ -1,4 +1,5 @@ -using System.Threading.Tasks; +using System.Security.Claims; +using System.Threading.Tasks; using JetBrains.Annotations; namespace Volo.Abp.Authorization.Permissions @@ -6,5 +7,7 @@ namespace Volo.Abp.Authorization.Permissions public interface IPermissionChecker { Task CheckAsync([NotNull]string name); + + Task CheckAsync([CanBeNull] ClaimsPrincipal claimsPrincipal, [NotNull]string name); } } \ No newline at end of file diff --git a/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Permissions/IPermissionValueProvider.cs b/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Permissions/IPermissionValueProvider.cs index d610a5ccd2..73ba3bfd17 100644 --- a/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Permissions/IPermissionValueProvider.cs +++ b/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Permissions/IPermissionValueProvider.cs @@ -7,6 +7,6 @@ namespace Volo.Abp.Authorization.Permissions { string Name { get; } - Task CheckAsync(PermissionDefinition permission); + Task CheckAsync(PermissionValueCheckContext context); } } \ No newline at end of file diff --git a/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Permissions/PermissionChecker.cs b/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Permissions/PermissionChecker.cs index e382cf3a95..5a55987cbf 100644 --- a/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Permissions/PermissionChecker.cs +++ b/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Permissions/PermissionChecker.cs @@ -1,10 +1,13 @@ using System; using System.Collections.Generic; using System.Linq; +using System.Security.Claims; using System.Threading.Tasks; +using JetBrains.Annotations; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Options; using Volo.Abp.DependencyInjection; +using Volo.Abp.Security.Claims; namespace Volo.Abp.Authorization.Permissions { @@ -14,6 +17,8 @@ namespace Volo.Abp.Authorization.Permissions protected IReadOnlyList ValueProviders => _lazyProviders.Value; + protected ICurrentPrincipalAccessor PrincipalAccessor { get; } + protected PermissionOptions Options { get; } private readonly Lazy> _lazyProviders; @@ -21,8 +26,10 @@ namespace Volo.Abp.Authorization.Permissions public PermissionChecker( IOptions options, IServiceProvider serviceProvider, + ICurrentPrincipalAccessor principalAccessor, IPermissionDefinitionManager permissionDefinitionManager) { + PrincipalAccessor = principalAccessor; PermissionDefinitionManager = permissionDefinitionManager; Options = options.Value; @@ -35,25 +42,30 @@ namespace Volo.Abp.Authorization.Permissions ); } - public Task CheckAsync(string name) + public virtual Task CheckAsync(string name) { - var permission = PermissionDefinitionManager.Get(name); - - return GetPermissionGrantInfo(permission); + return CheckAsync(PrincipalAccessor.Principal, name); } - protected virtual async Task GetPermissionGrantInfo(PermissionDefinition permission) + public virtual async Task CheckAsync(ClaimsPrincipal claimsPrincipal, string name) { + Check.NotNull(name, nameof(name)); + + var context = new PermissionValueCheckContext( + PermissionDefinitionManager.Get(name), + claimsPrincipal + ); + foreach (var provider in ValueProviders) { - var result = await provider.CheckAsync(permission); + var result = await provider.CheckAsync(context); if (result.IsGranted) { - return new PermissionGrantInfo(permission.Name, true, provider.Name, result.ProviderKey); + return new PermissionGrantInfo(context.Permission.Name, true, provider.Name, result.ProviderKey); } } - return new PermissionGrantInfo(permission.Name, false); + return new PermissionGrantInfo(context.Permission.Name, false); } } } \ No newline at end of file diff --git a/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Permissions/PermissionCheckerExtensions.cs b/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Permissions/PermissionCheckerExtensions.cs index 11b7a1ca25..f9891862ff 100644 --- a/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Permissions/PermissionCheckerExtensions.cs +++ b/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Permissions/PermissionCheckerExtensions.cs @@ -1,4 +1,5 @@ -using System.Threading.Tasks; +using System.Security.Claims; +using System.Threading.Tasks; namespace Volo.Abp.Authorization.Permissions { @@ -9,6 +10,11 @@ namespace Volo.Abp.Authorization.Permissions return (await permissionChecker.CheckAsync(name)).IsGranted; } + public static async Task IsGrantedAsync(this IPermissionChecker permissionChecker, ClaimsPrincipal principal, string name) + { + return (await permissionChecker.CheckAsync(principal, name)).IsGranted; + } + //TODO: Add sync extensions } } diff --git a/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Permissions/PermissionValueCheckContext.cs b/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Permissions/PermissionValueCheckContext.cs new file mode 100644 index 0000000000..83602a0c46 --- /dev/null +++ b/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Permissions/PermissionValueCheckContext.cs @@ -0,0 +1,22 @@ +using System.Security.Claims; +using JetBrains.Annotations; + +namespace Volo.Abp.Authorization.Permissions +{ + public class PermissionValueCheckContext + { + [NotNull] + public PermissionDefinition Permission { get; } + + [CanBeNull] + public ClaimsPrincipal Principal { get; } + + public PermissionValueCheckContext([NotNull] PermissionDefinition permission, [CanBeNull] ClaimsPrincipal principal) + { + Check.NotNull(permission, nameof(permission)); + + Permission = permission; + Principal = principal; + } + } +} \ No newline at end of file diff --git a/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Permissions/PermissionValueProvider.cs b/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Permissions/PermissionValueProvider.cs index bffed7e041..066d876637 100644 --- a/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Permissions/PermissionValueProvider.cs +++ b/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Permissions/PermissionValueProvider.cs @@ -13,6 +13,6 @@ namespace Volo.Abp.Authorization.Permissions PermissionStore = permissionStore; } - public abstract Task CheckAsync(PermissionDefinition permission); + public abstract Task CheckAsync(PermissionValueCheckContext context); } } \ No newline at end of file diff --git a/src/Volo.Abp.Session/Volo/Abp/Session/RolePermissionValueProvider.cs b/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Permissions/RolePermissionValueProvider.cs similarity index 62% rename from src/Volo.Abp.Session/Volo/Abp/Session/RolePermissionValueProvider.cs rename to src/Volo.Abp.Authorization/Volo/Abp/Authorization/Permissions/RolePermissionValueProvider.cs index 9677e7ab1d..1d200ac49a 100644 --- a/src/Volo.Abp.Session/Volo/Abp/Session/RolePermissionValueProvider.cs +++ b/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Permissions/RolePermissionValueProvider.cs @@ -1,8 +1,8 @@ using System.Linq; using System.Threading.Tasks; -using Volo.Abp.Authorization.Permissions; +using Volo.Abp.Security.Claims; -namespace Volo.Abp.Session +namespace Volo.Abp.Authorization.Permissions { public class RolePermissionValueProvider : PermissionValueProvider { @@ -10,24 +10,23 @@ namespace Volo.Abp.Session public override string Name => ProviderName; - protected ICurrentUser CurrentUser { get; } - - public RolePermissionValueProvider(IPermissionStore permissionStore, ICurrentUser currentUser) + public RolePermissionValueProvider(IPermissionStore permissionStore) : base(permissionStore) { - CurrentUser = currentUser; + } - public override async Task CheckAsync(PermissionDefinition permission) + public override async Task CheckAsync(PermissionValueCheckContext context) { - if (CurrentUser.Id == null || !CurrentUser.Roles.Any()) + var roles = context.Principal?.FindAll(AbpClaimTypes.Role).Select(c => c.Value).ToArray(); + if (roles == null || !roles.Any()) { return PermissionValueProviderGrantInfo.NonGranted; } - foreach (var role in CurrentUser.Roles) + foreach (var role in roles) { - if (await PermissionStore.IsGrantedAsync(permission.Name, Name, role)) + if (await PermissionStore.IsGrantedAsync(context.Permission.Name, Name, role)) { return new PermissionValueProviderGrantInfo(true, role); } diff --git a/src/Volo.Abp.Session/Volo/Abp/Session/UserPermissionValueProvider.cs b/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Permissions/UserPermissionValueProvider.cs similarity index 50% rename from src/Volo.Abp.Session/Volo/Abp/Session/UserPermissionValueProvider.cs rename to src/Volo.Abp.Authorization/Volo/Abp/Authorization/Permissions/UserPermissionValueProvider.cs index 7cd20c4c49..9f6022907e 100644 --- a/src/Volo.Abp.Session/Volo/Abp/Session/UserPermissionValueProvider.cs +++ b/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Permissions/UserPermissionValueProvider.cs @@ -1,7 +1,7 @@ using System.Threading.Tasks; -using Volo.Abp.Authorization.Permissions; +using Volo.Abp.Security.Claims; -namespace Volo.Abp.Session +namespace Volo.Abp.Authorization.Permissions { public class UserPermissionValueProvider : PermissionValueProvider { @@ -9,25 +9,27 @@ namespace Volo.Abp.Session public override string Name => ProviderName; - protected ICurrentUser CurrentUser { get; } - - public UserPermissionValueProvider(IPermissionStore permissionStore, ICurrentUser currentUser) + public UserPermissionValueProvider(IPermissionStore permissionStore) : base(permissionStore) { - CurrentUser = currentUser; + } - public override async Task CheckAsync(PermissionDefinition permission) + public override async Task CheckAsync(PermissionValueCheckContext context) { - if (CurrentUser.Id == null) + var userId = context.Principal?.FindFirst(AbpClaimTypes.UserId)?.Value; + + if (userId == null) { return PermissionValueProviderGrantInfo.NonGranted; } - return new PermissionValueProviderGrantInfo( - await PermissionStore.IsGrantedAsync(permission.Name, Name, CurrentUser.Id.Value.ToString()), - CurrentUser.Id.ToString() - ); + if (await PermissionStore.IsGrantedAsync(context.Permission.Name, Name, userId)) + { + return new PermissionValueProviderGrantInfo(true, userId); + } + + return PermissionValueProviderGrantInfo.NonGranted; } } } diff --git a/src/Volo.Abp.Identity.Application/Volo/Abp/Identity/UserPermissionManagementProvider.cs b/src/Volo.Abp.Identity.Application/Volo/Abp/Identity/UserPermissionManagementProvider.cs index 9ac6d3687b..ffc831ab23 100644 --- a/src/Volo.Abp.Identity.Application/Volo/Abp/Identity/UserPermissionManagementProvider.cs +++ b/src/Volo.Abp.Identity.Application/Volo/Abp/Identity/UserPermissionManagementProvider.cs @@ -1,4 +1,5 @@ -using Volo.Abp.Guids; +using Volo.Abp.Authorization.Permissions; +using Volo.Abp.Guids; using Volo.Abp.MultiTenancy; using Volo.Abp.Permissions; using Volo.Abp.Session; diff --git a/src/Volo.Abp.Identity.Application/Volo/Abp/Permissions/RolePermissionManagerExtensions.cs b/src/Volo.Abp.Identity.Application/Volo/Abp/Permissions/RolePermissionManagerExtensions.cs index 508ed8a549..c0d5462d4c 100644 --- a/src/Volo.Abp.Identity.Application/Volo/Abp/Permissions/RolePermissionManagerExtensions.cs +++ b/src/Volo.Abp.Identity.Application/Volo/Abp/Permissions/RolePermissionManagerExtensions.cs @@ -1,6 +1,7 @@ using System.Collections.Generic; using System.Threading.Tasks; using JetBrains.Annotations; +using Volo.Abp.Authorization.Permissions; using Volo.Abp.Session; namespace Volo.Abp.Permissions diff --git a/src/Volo.Abp.Identity.Application/Volo/Abp/Permissions/UserPermissionManagerExtensions.cs b/src/Volo.Abp.Identity.Application/Volo/Abp/Permissions/UserPermissionManagerExtensions.cs index 0aa0c40979..c041b13337 100644 --- a/src/Volo.Abp.Identity.Application/Volo/Abp/Permissions/UserPermissionManagerExtensions.cs +++ b/src/Volo.Abp.Identity.Application/Volo/Abp/Permissions/UserPermissionManagerExtensions.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Threading.Tasks; using JetBrains.Annotations; +using Volo.Abp.Authorization.Permissions; using Volo.Abp.Session; namespace Volo.Abp.Permissions diff --git a/src/Volo.Abp.Session/Volo.Abp.Session.csproj b/src/Volo.Abp.Session/Volo.Abp.Session.csproj index 7931bf7177..894c8abb5d 100644 --- a/src/Volo.Abp.Session/Volo.Abp.Session.csproj +++ b/src/Volo.Abp.Session/Volo.Abp.Session.csproj @@ -14,8 +14,6 @@ - - diff --git a/src/Volo.Abp.Session/Volo/Abp/Session/AbpSessionModule.cs b/src/Volo.Abp.Session/Volo/Abp/Session/AbpSessionModule.cs index 7c0f0f3521..33cc5e2a88 100644 --- a/src/Volo.Abp.Session/Volo/Abp/Session/AbpSessionModule.cs +++ b/src/Volo.Abp.Session/Volo/Abp/Session/AbpSessionModule.cs @@ -1,6 +1,4 @@ using Microsoft.Extensions.DependencyInjection; -using Volo.Abp.Authorization; -using Volo.Abp.Authorization.Permissions; using Volo.Abp.Modularity; using Volo.Abp.Security; using Volo.Abp.Settings; @@ -9,7 +7,6 @@ namespace Volo.Abp.Session { [DependsOn(typeof(AbpSecurityModule))] [DependsOn(typeof(AbpSettingsModule))] - [DependsOn(typeof(AbpAuthorizationModule))] public class AbpSessionModule : AbpModule { public override void ConfigureServices(IServiceCollection services) @@ -19,12 +16,6 @@ namespace Volo.Abp.Session options.ValueProviders.Add(); }); - services.Configure(options => - { - options.ValueProviders.Add(); - options.ValueProviders.Add(); - }); - services.AddAssemblyOf(); } } diff --git a/src/Volo.Abp.Session/Volo/Abp/Settings/UserSettingManagerExtensions.cs b/src/Volo.Abp.Session/Volo/Abp/Settings/UserSettingManagerExtensions.cs index 9387c5c607..8239d92e7a 100644 --- a/src/Volo.Abp.Session/Volo/Abp/Settings/UserSettingManagerExtensions.cs +++ b/src/Volo.Abp.Session/Volo/Abp/Settings/UserSettingManagerExtensions.cs @@ -6,6 +6,8 @@ using Volo.Abp.Session; namespace Volo.Abp.Settings { + //TODO: Consider to move to another package? + public static class UserSettingManagerExtensions { public static Task GetOrNullForUserAsync(this ISettingManager settingManager, [NotNull] string name, Guid userId, bool fallback = true) diff --git a/test/Volo.Abp.Identity.Tests/Volo/Abp/Identity/AbpIdentityTestDataBuilder.cs b/test/Volo.Abp.Identity.Tests/Volo/Abp/Identity/AbpIdentityTestDataBuilder.cs index eb5e9fa235..acb33422ed 100644 --- a/test/Volo.Abp.Identity.Tests/Volo/Abp/Identity/AbpIdentityTestDataBuilder.cs +++ b/test/Volo.Abp.Identity.Tests/Volo/Abp/Identity/AbpIdentityTestDataBuilder.cs @@ -1,4 +1,5 @@ -using Volo.Abp.DependencyInjection; +using Volo.Abp.Authorization.Permissions; +using Volo.Abp.DependencyInjection; using Volo.Abp.Guids; using Volo.Abp.Permissions; using Volo.Abp.Session; diff --git a/test/Volo.Abp.Permissions.Tests/Volo/Abp/Permissions/PermissionChecker_User_Tests.cs b/test/Volo.Abp.Permissions.Tests/Volo/Abp/Permissions/PermissionChecker_User_Tests.cs index 20b220db39..40aa7c937d 100644 --- a/test/Volo.Abp.Permissions.Tests/Volo/Abp/Permissions/PermissionChecker_User_Tests.cs +++ b/test/Volo.Abp.Permissions.Tests/Volo/Abp/Permissions/PermissionChecker_User_Tests.cs @@ -1,9 +1,11 @@ using System; +using System.Security.Claims; using System.Threading.Tasks; using Microsoft.Extensions.DependencyInjection; using NSubstitute; using Shouldly; using Volo.Abp.Authorization.Permissions; +using Volo.Abp.Security.Claims; using Volo.Abp.Session; using Xunit; @@ -13,26 +15,16 @@ namespace Volo.Abp.Permissions { private readonly IPermissionChecker _permissionChecker; - private Guid? _currentUserId; - public PermissionChecker_User_Tests() { _permissionChecker = GetRequiredService(); } - protected override void AfterAddApplication(IServiceCollection services) - { - var currentUser = Substitute.For(); - currentUser.Id.Returns(ci => _currentUserId); - services.AddSingleton(currentUser); - } - [Fact] public async Task Should_Return_True_For_Granted_Current_User() { - _currentUserId = PermissionTestDataBuilder.User1Id; - (await _permissionChecker.IsGrantedAsync( + CreatePrincipal(PermissionTestDataBuilder.User1Id), "MyPermission1" )).ShouldBeTrue(); } @@ -40,9 +32,8 @@ namespace Volo.Abp.Permissions [Fact] public async Task Should_Return_False_For_Non_Granted_Current_User() { - _currentUserId = PermissionTestDataBuilder.User2Id; - (await _permissionChecker.IsGrantedAsync( + CreatePrincipal(PermissionTestDataBuilder.User2Id), "MyPermission1" )).ShouldBeFalse(); } @@ -51,8 +42,21 @@ namespace Volo.Abp.Permissions public async Task Should_Return_False_For_Current_User_If_Anonymous() { (await _permissionChecker.IsGrantedAsync( + CreatePrincipal(null), "MyPermission1" )).ShouldBeFalse(); } + + private static ClaimsPrincipal CreatePrincipal(Guid? userId) + { + var claimsIdentity = new ClaimsIdentity(); + + if (userId != null) + { + claimsIdentity.AddClaim(new Claim(AbpClaimTypes.UserId, userId.ToString())); + } + + return new ClaimsPrincipal(claimsIdentity); + } } } diff --git a/test/Volo.Abp.Permissions.Tests/Volo/Abp/Permissions/PermissionTestDataBuilder.cs b/test/Volo.Abp.Permissions.Tests/Volo/Abp/Permissions/PermissionTestDataBuilder.cs index 797bfc30f4..ddb236fa63 100644 --- a/test/Volo.Abp.Permissions.Tests/Volo/Abp/Permissions/PermissionTestDataBuilder.cs +++ b/test/Volo.Abp.Permissions.Tests/Volo/Abp/Permissions/PermissionTestDataBuilder.cs @@ -1,4 +1,5 @@ using System; +using Volo.Abp.Authorization.Permissions; using Volo.Abp.DependencyInjection; using Volo.Abp.Guids; using Volo.Abp.Session;