Browse Source

Revised permission management system

pull/765/head
Halil ibrahim Kalkan 7 years ago
parent
commit
0f06cf53c1
  1. 8
      framework/src/Volo.Abp.EventBus/Volo/Abp/EventBus/IocEventHandlerFactory.cs
  2. 9
      modules/identity/Volo.Abp.Identity.sln
  3. 5
      modules/identity/src/Volo.Abp.Identity.Application.Contracts/Volo/Abp/Identity/IIdentityRoleAppService.cs
  4. 5
      modules/identity/src/Volo.Abp.Identity.Application.Contracts/Volo/Abp/Identity/IIdentityUserAppService.cs
  5. 19
      modules/identity/src/Volo.Abp.Identity.Application/Volo/Abp/Identity/IdentityRoleAppService.cs
  6. 27
      modules/identity/src/Volo.Abp.Identity.Application/Volo/Abp/Identity/IdentityUserAppService.cs
  7. 10
      modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/IUserRoleFinder.cs
  8. 5
      modules/identity/src/Volo.Abp.Identity.Domain/Volo.Abp.Identity.Domain.csproj
  9. 8
      modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/AbpIdentityDomainModule.cs
  10. 2
      modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IIdentityDataSeeder.cs
  11. 30
      modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityDataSeeder.cs
  12. 21
      modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/UserRoleFinder.cs
  13. 5
      modules/identity/src/Volo.Abp.Identity.HttpApi.Client/Volo/Abp/Identity/AbpIdentityHttpApiClientModule.cs
  14. 24
      modules/identity/src/Volo.Abp.Identity.HttpApi.Client/Volo/Abp/Identity/HttpClientUserRoleFinder.cs
  15. 11
      modules/identity/src/Volo.Abp.Identity.HttpApi/Volo/Abp/Identity/IdentityRoleController.cs
  16. 11
      modules/identity/src/Volo.Abp.Identity.HttpApi/Volo/Abp/Identity/IdentityUserController.cs
  17. 2
      modules/identity/src/Volo.Abp.Identity.Web/Pages/Identity/Roles/index.js
  18. 51
      modules/identity/src/Volo.Abp.Identity.Web/Permissions/IdentityPermissionAppServiceGateway.cs
  19. 21
      modules/identity/src/Volo.Abp.PermissionManagement.Domain.Identity/Volo.Abp.PermissionManagement.Domain.Identity.csproj
  20. 16
      modules/identity/src/Volo.Abp.PermissionManagement.Domain.Identity/Volo/Abp/PermissionManagement/Identity/AbpPermissionManagementDomainIdentityModule.cs
  21. 14
      modules/identity/src/Volo.Abp.PermissionManagement.Domain.Identity/Volo/Abp/PermissionManagement/Identity/RolePermissionManagementProvider.cs
  22. 3
      modules/identity/src/Volo.Abp.PermissionManagement.Domain.Identity/Volo/Abp/PermissionManagement/Identity/UserPermissionManagementProvider.cs
  23. 3
      modules/identity/src/Volo.Abp.PermissionManagement.Domain.Identity/Volo/Abp/PermissionManagement/RolePermissionManagerExtensions.cs
  24. 3
      modules/identity/src/Volo.Abp.PermissionManagement.Domain.Identity/Volo/Abp/PermissionManagement/UserPermissionManagerExtensions.cs
  25. 1
      modules/identity/test/Volo.Abp.Identity.Domain.Tests/Volo.Abp.Identity.Domain.Tests.csproj
  26. 7
      modules/identity/test/Volo.Abp.Identity.Domain.Tests/Volo/Abp/Identity/AbpIdentityDomainTestModule.cs
  27. 1
      modules/identity/test/Volo.Abp.Identity.Domain.Tests/Volo/Abp/Identity/PermissionManager_Tests.cs
  28. 1
      modules/identity/test/Volo.Abp.Identity.TestBase/Volo.Abp.Identity.TestBase.csproj
  29. 4
      modules/identity/test/Volo.Abp.Identity.TestBase/Volo/Abp/Identity/AbpIdentityTestBaseModule.cs
  30. 22
      modules/permission-management/Volo.Abp.PermissionManagement.sln
  31. 5
      modules/permission-management/src/Volo.Abp.PermissionManagement.Application.Contracts/Volo/Abp/PermissionManagement/IPermissionAppService.cs
  32. 6
      modules/permission-management/src/Volo.Abp.PermissionManagement.Application/Volo/Abp/PermissionManagement/AbpPermissionManagementApplicationModule.cs
  33. 8
      modules/permission-management/src/Volo.Abp.PermissionManagement.Application/Volo/Abp/PermissionManagement/PermissionAppService.cs
  34. 12
      modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/IPermissionManagementProvider.cs
  35. 21
      modules/permission-management/src/Volo.Abp.PermissionManagement.HttpApi.Client/Volo.Abp.PermissionManagement.HttpApi.Client.csproj
  36. 22
      modules/permission-management/src/Volo.Abp.PermissionManagement.HttpApi.Client/Volo/Abp/PermissionManagement/AbpPermissionManagementHttpApiClientModule.cs
  37. 21
      modules/permission-management/src/Volo.Abp.PermissionManagement.HttpApi/Volo.Abp.PermissionManagement.HttpApi.csproj
  38. 14
      modules/permission-management/src/Volo.Abp.PermissionManagement.HttpApi/Volo/Abp/PermissionManagement/AbpPermissionManagementHttpApiModule.cs
  39. 28
      modules/permission-management/src/Volo.Abp.PermissionManagement.HttpApi/Volo/Abp/PermissionManagement/PermissionsController.cs
  40. 3
      modules/permission-management/src/Volo.Abp.PermissionManagement.Web/AbpPermissionManagementWebModule.cs
  41. 12
      modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Pages/AbpPermissionManagement/IPermissionAppServiceHelper.cs
  42. 18
      modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Pages/AbpPermissionManagement/NotImplementedPermissionAppServiceGateway.cs
  43. 12
      modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Pages/AbpPermissionManagement/PermissionManagementModal.cshtml.cs
  44. 2
      modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Volo.Abp.PermissionManagement.Web.csproj
  45. 2
      nupkg/common.ps1
  46. 3
      samples/MicroserviceDemo/applications/AuthServer.Host/AuthServerHostModule.cs
  47. 1
      samples/MicroserviceDemo/applications/BackendAdminApp.Host/BackendAdminApp.Host.csproj
  48. 2
      samples/MicroserviceDemo/applications/BackendAdminApp.Host/BackendAdminAppHostModule.cs
  49. 4
      samples/MicroserviceDemo/gateways/BackendAdminAppGateway.Host/BackendAdminAppGateway.Host.csproj
  50. 9
      samples/MicroserviceDemo/gateways/BackendAdminAppGateway.Host/BackendAdminAppGatewayHostModule.cs
  51. 5
      samples/MicroserviceDemo/gateways/BackendAdminAppGateway.Host/appsettings.json

8
framework/src/Volo.Abp.EventBus/Volo/Abp/EventBus/IocEventHandlerFactory.cs

@ -12,12 +12,12 @@ namespace Volo.Abp.EventBus
{
public Type HandlerType { get; }
protected IServiceScope ServiceScope { get; }
protected IHybridServiceScopeFactory ScopeFactory { get; }
public IocEventHandlerFactory(IHybridServiceScopeFactory scopeFactory, Type handlerType)
{
ScopeFactory = scopeFactory;
HandlerType = handlerType;
ServiceScope = scopeFactory.CreateScope();
}
/// <summary>
@ -26,7 +26,7 @@ namespace Volo.Abp.EventBus
/// <returns>Resolved handler object</returns>
public IEventHandlerDisposeWrapper GetHandler()
{
var scope = ServiceScope.ServiceProvider.CreateScope();
var scope = ScopeFactory.CreateScope();
return new EventHandlerDisposeWrapper(
(IEventHandler) scope.ServiceProvider.GetRequiredService(HandlerType),
() => scope.Dispose()
@ -35,7 +35,7 @@ namespace Volo.Abp.EventBus
public void Dispose()
{
ServiceScope.Dispose();
}
}
}

9
modules/identity/Volo.Abp.Identity.sln

@ -35,7 +35,9 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.Identity.TestBase"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.Identity.Domain.Tests", "test\Volo.Abp.Identity.Domain.Tests\Volo.Abp.Identity.Domain.Tests.csproj", "{588B6E38-323B-4251-AC21-5F67C815A44E}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.Identity.AspNetCore", "src\Volo.Abp.Identity.AspNetCore\Volo.Abp.Identity.AspNetCore.csproj", "{D5EFC912-75A0-4856-9B8D-DFDD4CD66BAB}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.Identity.AspNetCore", "src\Volo.Abp.Identity.AspNetCore\Volo.Abp.Identity.AspNetCore.csproj", "{D5EFC912-75A0-4856-9B8D-DFDD4CD66BAB}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.PermissionManagement.Domain.Identity", "src\Volo.Abp.PermissionManagement.Domain.Identity\Volo.Abp.PermissionManagement.Domain.Identity.csproj", "{736F91E7-8A70-441B-89DE-0E29A348E718}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@ -103,6 +105,10 @@ Global
{D5EFC912-75A0-4856-9B8D-DFDD4CD66BAB}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D5EFC912-75A0-4856-9B8D-DFDD4CD66BAB}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D5EFC912-75A0-4856-9B8D-DFDD4CD66BAB}.Release|Any CPU.Build.0 = Release|Any CPU
{736F91E7-8A70-441B-89DE-0E29A348E718}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{736F91E7-8A70-441B-89DE-0E29A348E718}.Debug|Any CPU.Build.0 = Debug|Any CPU
{736F91E7-8A70-441B-89DE-0E29A348E718}.Release|Any CPU.ActiveCfg = Release|Any CPU
{736F91E7-8A70-441B-89DE-0E29A348E718}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@ -123,6 +129,7 @@ Global
{D7F61598-E7CE-4DAB-99EA-C266F0423606} = {9FACAF96-A681-4B36-A938-A37DCA0B7EC1}
{588B6E38-323B-4251-AC21-5F67C815A44E} = {9FACAF96-A681-4B36-A938-A37DCA0B7EC1}
{D5EFC912-75A0-4856-9B8D-DFDD4CD66BAB} = {AADC5A0A-F100-4511-87DE-B74E55F5B69B}
{736F91E7-8A70-441B-89DE-0E29A348E718} = {AADC5A0A-F100-4511-87DE-B74E55F5B69B}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {05740D37-83CF-4041-9C2A-D89F1B3DB5A4}

5
modules/identity/src/Volo.Abp.Identity.Application.Contracts/Volo/Abp/Identity/IIdentityRoleAppService.cs

@ -2,7 +2,6 @@
using System.Collections.Generic;
using System.Threading.Tasks;
using Volo.Abp.Application.Services;
using Volo.Abp.PermissionManagement;
namespace Volo.Abp.Identity
{
@ -10,9 +9,5 @@ namespace Volo.Abp.Identity
{
//TODO: remove after a better design
Task<List<IdentityRoleDto>> GetAllListAsync();
Task<GetPermissionListResultDto> GetPermissionsAsync(Guid id);
Task UpdatePermissionsAsync(Guid id, UpdatePermissionsDto input);
}
}

5
modules/identity/src/Volo.Abp.Identity.Application.Contracts/Volo/Abp/Identity/IIdentityUserAppService.cs

@ -2,7 +2,6 @@
using System.Threading.Tasks;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Application.Services;
using Volo.Abp.PermissionManagement;
namespace Volo.Abp.Identity
{
@ -12,10 +11,6 @@ namespace Volo.Abp.Identity
Task UpdateRolesAsync(Guid id, IdentityUserUpdateRolesDto input);
Task<GetPermissionListResultDto> GetPermissionsAsync(Guid id);
Task UpdatePermissionsAsync(Guid id, UpdatePermissionsDto input);
Task<IdentityUserDto> FindByUsernameAsync(string username);
Task<IdentityUserDto> FindByEmailAsync(string email);

19
modules/identity/src/Volo.Abp.Identity.Application/Volo/Abp/Identity/IdentityRoleAppService.cs

@ -15,16 +15,13 @@ namespace Volo.Abp.Identity
{
private readonly IdentityRoleManager _roleManager;
private readonly IIdentityRoleRepository _roleRepository;
private readonly IPermissionAppServiceHelper _permissionAppServiceHelper;
public IdentityRoleAppService(
IdentityRoleManager roleManager,
IIdentityRoleRepository roleRepository,
IPermissionAppServiceHelper permissionAppServiceHelper)
IIdentityRoleRepository roleRepository)
{
_roleManager = roleManager;
_roleRepository = roleRepository;
_permissionAppServiceHelper = permissionAppServiceHelper;
}
public async Task<IdentityRoleDto> GetAsync(Guid id)
@ -52,20 +49,6 @@ namespace Volo.Abp.Identity
return ObjectMapper.Map<List<IdentityRole>, List<IdentityRoleDto>>(list);
}
[Authorize(IdentityPermissions.Roles.ManagePermissions)]
public async Task<GetPermissionListResultDto> GetPermissionsAsync(Guid id)
{
var role = await _roleRepository.GetAsync(id);
return await _permissionAppServiceHelper.GetAsync(RolePermissionValueProvider.ProviderName, role.Name); //TODO: User normalized role name instad of name?
}
[Authorize(IdentityPermissions.Roles.ManagePermissions)]
public async Task UpdatePermissionsAsync(Guid id, UpdatePermissionsDto input)
{
var role = await _roleRepository.GetAsync(id);
await _permissionAppServiceHelper.UpdateAsync(RolePermissionValueProvider.ProviderName, role.Name, input);
}
[Authorize(IdentityPermissions.Roles.Create)]
public async Task<IdentityRoleDto> CreateAsync(IdentityRoleCreateDto input)
{

27
modules/identity/src/Volo.Abp.Identity.Application/Volo/Abp/Identity/IdentityUserAppService.cs

@ -1,12 +1,9 @@
using System;
using System.Collections.Generic;
using System.Security.Authentication;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Identity;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Authorization.Permissions;
using Volo.Abp.PermissionManagement;
namespace Volo.Abp.Identity
{
@ -14,18 +11,16 @@ namespace Volo.Abp.Identity
{
private readonly IdentityUserManager _userManager;
private readonly IIdentityUserRepository _userRepository;
private readonly IPermissionAppServiceHelper _permissionAppServiceHelper;
public IdentityUserAppService(
IdentityUserManager userManager,
IIdentityUserRepository userRepository,
IPermissionAppServiceHelper permissionAppServiceHelper)
IIdentityUserRepository userRepository)
{
_userManager = userManager;
_userRepository = userRepository;
_permissionAppServiceHelper = permissionAppServiceHelper;
}
//TODO: [Authorize(IdentityPermissions.Users.Default)] should go the IdentityUserAppService class.
[Authorize(IdentityPermissions.Users.Default)]
public async Task<IdentityUserDto> GetAsync(Guid id)
{
@ -37,7 +32,7 @@ namespace Volo.Abp.Identity
[Authorize(IdentityPermissions.Users.Default)]
public async Task<PagedResultDto<IdentityUserDto>> GetListAsync(GetIdentityUsersInput input)
{
var count = await _userRepository.GetCountAsync(input.Filter); //TODO:
var count = await _userRepository.GetCountAsync(input.Filter);
var list = await _userRepository.GetListAsync(input.Sorting, input.MaxResultCount, input.SkipCount, input.Filter);
return new PagedResultDto<IdentityUserDto>(
@ -102,21 +97,6 @@ namespace Volo.Abp.Identity
await _userRepository.UpdateAsync(user);
}
[Authorize(IdentityPermissions.Users.ManagePermissions)]
public async Task<GetPermissionListResultDto> GetPermissionsAsync(Guid id)
{
var user = await _userManager.GetByIdAsync(id);
var result = await _permissionAppServiceHelper.GetAsync(UserPermissionValueProvider.ProviderName, id.ToString());
result.EntityDisplayName = user.UserName;
return result;
}
[Authorize(IdentityPermissions.Users.ManagePermissions)]
public async Task UpdatePermissionsAsync(Guid id, UpdatePermissionsDto input)
{
await _permissionAppServiceHelper.UpdateAsync(UserPermissionValueProvider.ProviderName, id.ToString(), input);
}
[Authorize(IdentityPermissions.Users.Default)]
public async Task<IdentityUserDto> FindByUsernameAsync(string username)
{
@ -133,6 +113,7 @@ namespace Volo.Abp.Identity
);
}
//TODO: Move this to the profile service!
public async Task ChangePasswordAsync(string currentPassword, string newPassword)
{
if (!CurrentUser.Id.HasValue)

10
modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/IUserRoleFinder.cs

@ -0,0 +1,10 @@
using System;
using System.Threading.Tasks;
namespace Volo.Abp.Identity
{
public interface IUserRoleFinder
{
Task<string[]> GetRolesAsync(Guid userId);
}
}

5
modules/identity/src/Volo.Abp.Identity.Domain/Volo.Abp.Identity.Domain.csproj

@ -21,7 +21,6 @@
<ProjectReference Include="..\Volo.Abp.Identity.Domain.Shared\Volo.Abp.Identity.Domain.Shared.csproj" />
<ProjectReference Include="..\..\..\users\src\Volo.Abp.Users.Domain\Volo.Abp.Users.Domain.csproj" />
<ProjectReference Include="..\..\..\permission-management\src\Volo.Abp.PermissionManagement.Domain\Volo.Abp.PermissionManagement.Domain.csproj" />
<ProjectReference Include="..\..\..\..\framework\src\Volo.Abp.Ddd.Domain\Volo.Abp.Ddd.Domain.csproj" />
</ItemGroup>
@ -30,4 +29,8 @@
<PackageReference Include="Microsoft.Extensions.Identity.Core" Version="2.2.0" />
</ItemGroup>
<ItemGroup>
<Folder Include="Volo\Abp\Permissions\" />
</ItemGroup>
</Project>

8
modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/AbpIdentityDomainModule.cs

@ -7,14 +7,12 @@ using Volo.Abp.EventBus.Distributed;
using Volo.Abp.Identity.Localization;
using Volo.Abp.Localization;
using Volo.Abp.Modularity;
using Volo.Abp.PermissionManagement;
using Volo.Abp.Settings;
using Volo.Abp.Users;
using Volo.Abp.VirtualFileSystem;
namespace Volo.Abp.Identity
{
[DependsOn(typeof(AbpPermissionManagementDomainModule))]
[DependsOn(typeof(AbpDddDomainModule))]
[DependsOn(typeof(AbpIdentityDomainSharedModule))]
[DependsOn(typeof(AbpUsersDomainModule))]
@ -22,12 +20,6 @@ namespace Volo.Abp.Identity
{
public override void ConfigureServices(ServiceConfigurationContext context)
{
Configure<PermissionManagementOptions>(options =>
{
options.ManagementProviders.Add<UserPermissionManagementProvider>();
options.ManagementProviders.Add<RolePermissionManagementProvider>();
});
Configure<SettingOptions>(options =>
{
options.DefinitionProviders.Add<AbpIdentitySettingDefinitionProvider>();

2
modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IIdentityDataSeeder.cs

@ -1,5 +1,4 @@
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
namespace Volo.Abp.Identity
@ -8,7 +7,6 @@ namespace Volo.Abp.Identity
{
Task SeedAsync(
string adminUserPassword,
IEnumerable<string> adminRolePermissions = null,
Guid? tenantId = null);
}
}

30
modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityDataSeeder.cs

@ -3,10 +3,8 @@ using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Identity;
using Volo.Abp.Authorization.Permissions;
using Volo.Abp.DependencyInjection;
using Volo.Abp.Guids;
using Volo.Abp.PermissionManagement;
using Volo.Abp.Uow;
namespace Volo.Abp.Identity
@ -14,7 +12,6 @@ namespace Volo.Abp.Identity
public class IdentityDataSeeder : ITransientDependency, IIdentityDataSeeder
{
private readonly IGuidGenerator _guidGenerator;
private readonly IPermissionGrantRepository _permissionGrantRepository;
private readonly IIdentityRoleRepository _roleRepository;
private readonly IIdentityUserRepository _userRepository;
private readonly ILookupNormalizer _lookupNormalizer;
@ -23,7 +20,6 @@ namespace Volo.Abp.Identity
public IdentityDataSeeder(
IGuidGenerator guidGenerator,
IPermissionGrantRepository permissionGrantRepository,
IIdentityRoleRepository roleRepository,
IIdentityUserRepository userRepository,
ILookupNormalizer lookupNormalizer,
@ -31,7 +27,6 @@ namespace Volo.Abp.Identity
IdentityRoleManager roleManager)
{
_guidGenerator = guidGenerator;
_permissionGrantRepository = permissionGrantRepository;
_roleRepository = roleRepository;
_userRepository = userRepository;
_lookupNormalizer = lookupNormalizer;
@ -42,7 +37,6 @@ namespace Volo.Abp.Identity
[UnitOfWork]
public virtual async Task SeedAsync(
string adminUserPassword,
IEnumerable<string> adminRolePermissions = null,
Guid? tenantId = null)
{
const string adminUserName = "admin";
@ -68,36 +62,12 @@ namespace Volo.Abp.Identity
adminRole.IsPublic = true;
CheckIdentityErrors(await _roleManager.CreateAsync(adminRole));
if (adminRolePermissions != null)
{
await AddRolePermissionsAsync(adminRole, adminRolePermissions);
}
}
CheckIdentityErrors(await _userManager.AddToRoleAsync(adminUser, adminRoleName));
}
protected virtual async Task AddRolePermissionsAsync(IdentityRole role, IEnumerable<string> permissionNames)
{
foreach (var permissionName in permissionNames)
{
await AddPermissionAsync(permissionName, RolePermissionValueProvider.ProviderName, role.Name, role.TenantId);
}
}
protected virtual Task AddPermissionAsync(string permissionName, string providerName, string providerKey, Guid? tenantId)
{
return _permissionGrantRepository.InsertAsync(
new PermissionGrant(
_guidGenerator.Create(),
permissionName,
providerName,
providerKey,
tenantId
)
);
}
protected void CheckIdentityErrors(IdentityResult identityResult) //TODO: This is temporary and duplicate code!
{

21
modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/UserRoleFinder.cs

@ -0,0 +1,21 @@
using System;
using System.Threading.Tasks;
using Volo.Abp.DependencyInjection;
namespace Volo.Abp.Identity
{
public class UserRoleFinder : IUserRoleFinder, ITransientDependency
{
private readonly IIdentityUserRepository _identityUserRepository;
public UserRoleFinder(IIdentityUserRepository identityUserRepository)
{
_identityUserRepository = identityUserRepository;
}
public async Task<string[]> GetRolesAsync(Guid userId)
{
return (await _identityUserRepository.GetRoleNamesAsync(userId)).ToArray();
}
}
}

5
modules/identity/src/Volo.Abp.Identity.HttpApi.Client/Volo/Abp/Identity/AbpIdentityHttpApiClientModule.cs

@ -15,7 +15,10 @@ namespace Volo.Abp.Identity
public override void ConfigureServices(ServiceConfigurationContext context)
{
context.Services.AddHttpClientProxies(typeof(AbpIdentityApplicationContractsModule).Assembly, RemoteServiceName);
context.Services.AddHttpClientProxies(
typeof(AbpIdentityApplicationContractsModule).Assembly,
RemoteServiceName
);
}
}
}

24
modules/identity/src/Volo.Abp.Identity.HttpApi.Client/Volo/Abp/Identity/HttpClientUserRoleFinder.cs

@ -0,0 +1,24 @@
using System;
using System.Linq;
using System.Threading.Tasks;
using Volo.Abp.DependencyInjection;
namespace Volo.Abp.Identity
{
[Dependency(TryRegister = true)]
public class HttpClientUserRoleFinder : IUserRoleFinder, ITransientDependency
{
private readonly IIdentityUserAppService _userAppService;
public HttpClientUserRoleFinder(IIdentityUserAppService userAppService)
{
_userAppService = userAppService;
}
public async Task<string[]> GetRolesAsync(Guid userId)
{
var output = await _userAppService.GetRolesAsync(userId);
return output.Items.Select(r => r.Name).ToArray();
}
}
}

11
modules/identity/src/Volo.Abp.Identity.HttpApi/Volo/Abp/Identity/IdentityRoleController.cs

@ -4,7 +4,6 @@ using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Volo.Abp.Application.Dtos;
using Volo.Abp.AspNetCore.Mvc;
using Volo.Abp.PermissionManagement;
namespace Volo.Abp.Identity
{
@ -49,15 +48,5 @@ namespace Volo.Abp.Identity
{
return _roleAppService.GetAllListAsync();
}
public virtual Task<GetPermissionListResultDto> GetPermissionsAsync(Guid id)
{
return _roleAppService.GetPermissionsAsync(id);
}
public virtual Task UpdatePermissionsAsync(Guid id, UpdatePermissionsDto input)
{
return _roleAppService.UpdatePermissionsAsync(id, input);
}
}
}

11
modules/identity/src/Volo.Abp.Identity.HttpApi/Volo/Abp/Identity/IdentityUserController.cs

@ -3,7 +3,6 @@ using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Volo.Abp.Application.Dtos;
using Volo.Abp.AspNetCore.Mvc;
using Volo.Abp.PermissionManagement;
namespace Volo.Abp.Identity
{
@ -54,16 +53,6 @@ namespace Volo.Abp.Identity
return _userAppService.UpdateRolesAsync(id, input);
}
public virtual Task<GetPermissionListResultDto> GetPermissionsAsync(Guid id)
{
return _userAppService.GetPermissionsAsync(id);
}
public virtual Task UpdatePermissionsAsync(Guid id, UpdatePermissionsDto input)
{
return _userAppService.UpdatePermissionsAsync(id, input);
}
[HttpGet]
public virtual Task<IdentityUserDto> FindByUsernameAsync(string username)
{

2
modules/identity/src/Volo.Abp.Identity.Web/Pages/Identity/Roles/index.js

@ -39,7 +39,7 @@
action: function (data) {
_permissionsModal.open({
providerName: 'Role',
providerKey: data.record.id
providerKey: data.record.name
});
}
},

51
modules/identity/src/Volo.Abp.Identity.Web/Permissions/IdentityPermissionAppServiceGateway.cs

@ -1,51 +0,0 @@
using System;
using System.Threading.Tasks;
using Volo.Abp.Authorization.Permissions;
using Volo.Abp.DependencyInjection;
using Volo.Abp.PermissionManagement;
using Volo.Abp.PermissionManagement.Web.Pages.AbpPermissionManagement;
namespace Volo.Abp.Identity.Web.Permissions
{
//TODO: Instead of creating such a gateway/adapter, we can implement a common interface for app services, like IHasPermissionManagementApi and manage it dynamically!
public class IdentityPermissionAppServiceGateway : IPermissionAppServiceGateway, ITransientDependency
{
private readonly IIdentityUserAppService _userAppService;
private readonly IIdentityRoleAppService _roleAppService;
public IdentityPermissionAppServiceGateway(IIdentityUserAppService userAppService, IIdentityRoleAppService roleAppService)
{
_userAppService = userAppService;
_roleAppService = roleAppService;
}
public virtual async Task<GetPermissionListResultDto> GetAsync(string providerName, string providerKey)
{
switch (providerName)
{
case UserPermissionValueProvider.ProviderName:
return await _userAppService.GetPermissionsAsync(Guid.Parse(providerKey));
case RolePermissionValueProvider.ProviderName:
return await _roleAppService.GetPermissionsAsync(Guid.Parse(providerKey));
default:
throw new NotImplementedException();
}
}
public virtual async Task UpdateAsync(string providerName, string providerKey, UpdatePermissionsDto input)
{
switch (providerName)
{
case UserPermissionValueProvider.ProviderName:
await _userAppService.UpdatePermissionsAsync(Guid.Parse(providerKey), input);
break;
case RolePermissionValueProvider.ProviderName:
await _roleAppService.UpdatePermissionsAsync(Guid.Parse(providerKey), input);
break;
default:
throw new NotImplementedException();
}
}
}
}

21
modules/identity/src/Volo.Abp.PermissionManagement.Domain.Identity/Volo.Abp.PermissionManagement.Domain.Identity.csproj

@ -0,0 +1,21 @@
<Project Sdk="Microsoft.NET.Sdk">
<Import Project="..\..\..\..\common.props" />
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<AssemblyName>Volo.Abp.PermissionManagement.Domain.Identity</AssemblyName>
<PackageId>Volo.Abp.PermissionManagement.Domain.Identity</PackageId>
<AssetTargetFallback>$(AssetTargetFallback);portable-net45+win8+wp8+wpa81;</AssetTargetFallback>
<GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute>
<GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute>
<GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute>
<RootNamespace />
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\Volo.Abp.Identity.Domain.Shared\Volo.Abp.Identity.Domain.Shared.csproj" />
<ProjectReference Include="..\..\..\permission-management\src\Volo.Abp.PermissionManagement.Domain\Volo.Abp.PermissionManagement.Domain.csproj" />
</ItemGroup>
</Project>

16
modules/identity/src/Volo.Abp.PermissionManagement.Domain.Identity/Volo/Abp/PermissionManagement/Identity/AbpPermissionManagementDomainIdentityModule.cs

@ -0,0 +1,16 @@
using Volo.Abp.Modularity;
namespace Volo.Abp.PermissionManagement.Identity
{
public class AbpPermissionManagementDomainIdentityModule : AbpModule
{
public override void ConfigureServices(ServiceConfigurationContext context)
{
Configure<PermissionManagementOptions>(options =>
{
options.ManagementProviders.Add<UserPermissionManagementProvider>();
options.ManagementProviders.Add<RolePermissionManagementProvider>();
});
}
}
}

14
modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/RolePermissionManagementProvider.cs → modules/identity/src/Volo.Abp.PermissionManagement.Domain.Identity/Volo/Abp/PermissionManagement/Identity/RolePermissionManagementProvider.cs

@ -2,28 +2,28 @@
using System.Threading.Tasks;
using Volo.Abp.Authorization.Permissions;
using Volo.Abp.Guids;
using Volo.Abp.Identity;
using Volo.Abp.MultiTenancy;
using Volo.Abp.PermissionManagement;
namespace Volo.Abp.Identity
namespace Volo.Abp.PermissionManagement.Identity
{
public class RolePermissionManagementProvider : PermissionManagementProvider
{
public override string Name => RolePermissionValueProvider.ProviderName;
private readonly IIdentityUserRepository _identityUserRepository;
private readonly IUserRoleFinder _userRoleFinder;
public RolePermissionManagementProvider(
IPermissionGrantRepository permissionGrantRepository,
IGuidGenerator guidGenerator,
IIdentityUserRepository identityUserRepository,
ICurrentTenant currentTenant)
ICurrentTenant currentTenant,
IUserRoleFinder userRoleFinder)
: base(
permissionGrantRepository,
guidGenerator,
currentTenant)
{
_identityUserRepository = identityUserRepository;
_userRoleFinder = userRoleFinder;
}
public override async Task<PermissionValueProviderGrantInfo> CheckAsync(string name, string providerName, string providerKey)
@ -39,7 +39,7 @@ namespace Volo.Abp.Identity
if (providerName == "User")
{
var userId = Guid.Parse(providerKey);
var roleNames = await _identityUserRepository.GetRoleNamesAsync(userId);
var roleNames = await _userRoleFinder.GetRolesAsync(userId);
foreach (var roleName in roleNames)
{

3
modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/UserPermissionManagementProvider.cs → modules/identity/src/Volo.Abp.PermissionManagement.Domain.Identity/Volo/Abp/PermissionManagement/Identity/UserPermissionManagementProvider.cs

@ -1,9 +1,8 @@
using Volo.Abp.Authorization.Permissions;
using Volo.Abp.Guids;
using Volo.Abp.MultiTenancy;
using Volo.Abp.PermissionManagement;
namespace Volo.Abp.Identity
namespace Volo.Abp.PermissionManagement.Identity
{
public class UserPermissionManagementProvider : PermissionManagementProvider
{

3
modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Permissions/RolePermissionManagerExtensions.cs → modules/identity/src/Volo.Abp.PermissionManagement.Domain.Identity/Volo/Abp/PermissionManagement/RolePermissionManagerExtensions.cs

@ -2,9 +2,8 @@
using System.Threading.Tasks;
using JetBrains.Annotations;
using Volo.Abp.Authorization.Permissions;
using Volo.Abp.PermissionManagement;
namespace Volo.Abp.Permissions
namespace Volo.Abp.PermissionManagement
{
public static class RolePermissionManagerExtensions
{

3
modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Permissions/UserPermissionManagerExtensions.cs → modules/identity/src/Volo.Abp.PermissionManagement.Domain.Identity/Volo/Abp/PermissionManagement/UserPermissionManagerExtensions.cs

@ -3,9 +3,8 @@ using System.Collections.Generic;
using System.Threading.Tasks;
using JetBrains.Annotations;
using Volo.Abp.Authorization.Permissions;
using Volo.Abp.PermissionManagement;
namespace Volo.Abp.Permissions
namespace Volo.Abp.PermissionManagement
{
public static class UserPermissionManagerExtensions
{

1
modules/identity/test/Volo.Abp.Identity.Domain.Tests/Volo.Abp.Identity.Domain.Tests.csproj

@ -12,6 +12,7 @@
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\..\src\Volo.Abp.PermissionManagement.Domain.Identity\Volo.Abp.PermissionManagement.Domain.Identity.csproj" />
<ProjectReference Include="..\Volo.Abp.Identity.EntityFrameworkCore.Tests\Volo.Abp.Identity.EntityFrameworkCore.Tests.csproj" />
<ProjectReference Include="..\Volo.Abp.Identity.TestBase\Volo.Abp.Identity.TestBase.csproj" />
</ItemGroup>

7
modules/identity/test/Volo.Abp.Identity.Domain.Tests/Volo/Abp/Identity/AbpIdentityDomainTestModule.cs

@ -2,10 +2,15 @@
using Volo.Abp.Authorization.Permissions;
using Volo.Abp.Identity.EntityFrameworkCore;
using Volo.Abp.Modularity;
using Volo.Abp.PermissionManagement.Identity;
namespace Volo.Abp.Identity
{
[DependsOn(typeof(AbpIdentityEntityFrameworkCoreTestModule))]
[DependsOn(
typeof(AbpIdentityEntityFrameworkCoreTestModule),
typeof(AbpIdentityTestBaseModule),
typeof(AbpPermissionManagementDomainIdentityModule)
)]
public class AbpIdentityDomainTestModule : AbpModule
{
public override void ConfigureServices(ServiceConfigurationContext context)

1
modules/identity/test/Volo.Abp.Identity.Domain.Tests/Volo/Abp/Identity/PermissionManager_Tests.cs

@ -5,7 +5,6 @@ using System.Threading.Tasks;
using Shouldly;
using Volo.Abp.Authorization.Permissions;
using Volo.Abp.PermissionManagement;
using Volo.Abp.Permissions;
using Xunit;
namespace Volo.Abp.Identity

1
modules/identity/test/Volo.Abp.Identity.TestBase/Volo.Abp.Identity.TestBase.csproj

@ -13,6 +13,7 @@
<ItemGroup>
<ProjectReference Include="..\..\..\..\framework\src\Volo.Abp.Autofac\Volo.Abp.Autofac.csproj" />
<ProjectReference Include="..\..\..\..\framework\src\Volo.Abp.Authorization\Volo.Abp.Authorization.csproj" />
<ProjectReference Include="..\..\..\..\framework\src\Volo.Abp.TestBase\Volo.Abp.TestBase.csproj" />
<ProjectReference Include="..\..\src\Volo.Abp.Identity.Domain\Volo.Abp.Identity.Domain.csproj" />
</ItemGroup>

4
modules/identity/test/Volo.Abp.Identity.TestBase/Volo/Abp/Identity/AbpIdentityTestBaseModule.cs

@ -1,4 +1,5 @@
using Microsoft.Extensions.DependencyInjection;
using Volo.Abp.Authorization;
using Volo.Abp.Autofac;
using Volo.Abp.Modularity;
using Volo.Abp.Threading;
@ -8,7 +9,8 @@ namespace Volo.Abp.Identity
[DependsOn(
typeof(AbpAutofacModule),
typeof(AbpTestBaseModule),
typeof(AbpIdentityDomainModule)
typeof(AbpIdentityDomainModule),
typeof(AbpAuthorizationModule)
)]
public class AbpIdentityTestBaseModule : AbpModule
{

22
modules/permission-management/Volo.Abp.PermissionManagement.sln

@ -21,13 +21,17 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.PermissionManageme
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.PermissionManagement.Tests", "test\Volo.Abp.PermissionManagement.Tests\Volo.Abp.PermissionManagement.Tests.csproj", "{48297098-79D0-413B-939C-6C432142C42D}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.PermissionManagement.TestBase", "test\Volo.Abp.PermissionManagement.TestBase\Volo.Abp.PermissionManagement.TestBase.csproj", "{49259427-CAEB-4FAE-81E4-848F789487EA}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.PermissionManagement.TestBase", "test\Volo.Abp.PermissionManagement.TestBase\Volo.Abp.PermissionManagement.TestBase.csproj", "{49259427-CAEB-4FAE-81E4-848F789487EA}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.PermissionManagement.EntityFrameworkCore.Tests", "test\Volo.Abp.PermissionManagement.EntityFrameworkCore.Tests\Volo.Abp.PermissionManagement.EntityFrameworkCore.Tests.csproj", "{6E710DE0-F3B1-45D7-85BA-F39D839D9B65}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.PermissionManagement.EntityFrameworkCore.Tests", "test\Volo.Abp.PermissionManagement.EntityFrameworkCore.Tests\Volo.Abp.PermissionManagement.EntityFrameworkCore.Tests.csproj", "{6E710DE0-F3B1-45D7-85BA-F39D839D9B65}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.PermissionManagement.MongoDB", "src\Volo.Abp.PermissionManagement.MongoDB\Volo.Abp.PermissionManagement.MongoDB.csproj", "{903C1729-CEBC-4BCD-A102-8D1B1B5465AF}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.PermissionManagement.MongoDB", "src\Volo.Abp.PermissionManagement.MongoDB\Volo.Abp.PermissionManagement.MongoDB.csproj", "{903C1729-CEBC-4BCD-A102-8D1B1B5465AF}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.PermissionManagement.MongoDB.Tests", "test\Volo.Abp.PermissionManagement.MongoDB.Tests\Volo.Abp.PermissionManagement.MongoDB.Tests.csproj", "{AFA65E08-1F17-4BBE-96A6-80F3CFE22A75}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.PermissionManagement.MongoDB.Tests", "test\Volo.Abp.PermissionManagement.MongoDB.Tests\Volo.Abp.PermissionManagement.MongoDB.Tests.csproj", "{AFA65E08-1F17-4BBE-96A6-80F3CFE22A75}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.PermissionManagement.HttpApi", "src\Volo.Abp.PermissionManagement.HttpApi\Volo.Abp.PermissionManagement.HttpApi.csproj", "{9E0B517E-F02E-436F-9695-7CF12795D34C}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.PermissionManagement.HttpApi.Client", "src\Volo.Abp.PermissionManagement.HttpApi.Client\Volo.Abp.PermissionManagement.HttpApi.Client.csproj", "{1CD80519-9431-48DB-B0EA-291A73FF9F49}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@ -79,6 +83,14 @@ Global
{AFA65E08-1F17-4BBE-96A6-80F3CFE22A75}.Debug|Any CPU.Build.0 = Debug|Any CPU
{AFA65E08-1F17-4BBE-96A6-80F3CFE22A75}.Release|Any CPU.ActiveCfg = Release|Any CPU
{AFA65E08-1F17-4BBE-96A6-80F3CFE22A75}.Release|Any CPU.Build.0 = Release|Any CPU
{9E0B517E-F02E-436F-9695-7CF12795D34C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{9E0B517E-F02E-436F-9695-7CF12795D34C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{9E0B517E-F02E-436F-9695-7CF12795D34C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{9E0B517E-F02E-436F-9695-7CF12795D34C}.Release|Any CPU.Build.0 = Release|Any CPU
{1CD80519-9431-48DB-B0EA-291A73FF9F49}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1CD80519-9431-48DB-B0EA-291A73FF9F49}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1CD80519-9431-48DB-B0EA-291A73FF9F49}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1CD80519-9431-48DB-B0EA-291A73FF9F49}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@ -95,6 +107,8 @@ Global
{6E710DE0-F3B1-45D7-85BA-F39D839D9B65} = {63DA4A89-5908-4F37-B7E6-525AEEF20C77}
{903C1729-CEBC-4BCD-A102-8D1B1B5465AF} = {B559B878-38F7-49CC-BC06-43A32D68C1A7}
{AFA65E08-1F17-4BBE-96A6-80F3CFE22A75} = {63DA4A89-5908-4F37-B7E6-525AEEF20C77}
{9E0B517E-F02E-436F-9695-7CF12795D34C} = {B559B878-38F7-49CC-BC06-43A32D68C1A7}
{1CD80519-9431-48DB-B0EA-291A73FF9F49} = {B559B878-38F7-49CC-BC06-43A32D68C1A7}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {8FC7DF78-5E2D-489F-9D43-147D2ABAA112}

5
modules/permission-management/src/Volo.Abp.PermissionManagement.Application/Volo/Abp/PermissionManagement/IPermissionAppServiceHelper.cs → modules/permission-management/src/Volo.Abp.PermissionManagement.Application.Contracts/Volo/Abp/PermissionManagement/IPermissionAppService.cs

@ -1,12 +1,13 @@
using System.Threading.Tasks;
using JetBrains.Annotations;
using Volo.Abp.Application.Services;
namespace Volo.Abp.PermissionManagement
{
public interface IPermissionAppServiceHelper
public interface IPermissionAppService : IApplicationService
{
Task<GetPermissionListResultDto> GetAsync([NotNull] string providerName, [NotNull] string providerKey);
Task UpdateAsync([NotNull] string providerName, [NotNull] string providerKey, UpdatePermissionsDto input);
}
}
}

6
modules/permission-management/src/Volo.Abp.PermissionManagement.Application/Volo/Abp/PermissionManagement/AbpPermissionManagementApplicationModule.cs

@ -2,8 +2,10 @@
namespace Volo.Abp.PermissionManagement
{
[DependsOn(typeof(AbpPermissionManagementDomainModule))]
[DependsOn(typeof(AbpPermissionManagementApplicationContractsModule))]
[DependsOn(
typeof(AbpPermissionManagementDomainModule),
typeof(AbpPermissionManagementApplicationContractsModule)
)]
public class AbpPermissionManagementApplicationModule : AbpModule
{

8
modules/permission-management/src/Volo.Abp.PermissionManagement.Application/Volo/Abp/PermissionManagement/PermissionAppServiceHelper.cs → modules/permission-management/src/Volo.Abp.PermissionManagement.Application/Volo/Abp/PermissionManagement/PermissionAppService.cs

@ -1,18 +1,20 @@
using System.Collections.Generic;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Authorization;
using Microsoft.Extensions.Localization;
using Volo.Abp.Application.Services;
using Volo.Abp.Authorization.Permissions;
using Volo.Abp.DependencyInjection;
namespace Volo.Abp.PermissionManagement
{
public class PermissionAppServiceHelper : IPermissionAppServiceHelper, ITransientDependency
//[Authorize]
public class PermissionAppService : ApplicationService, IPermissionAppService
{
private readonly IPermissionManager _permissionManager;
private readonly IPermissionDefinitionManager _permissionDefinitionManager;
private readonly IStringLocalizerFactory _stringLocalizerFactory;
public PermissionAppServiceHelper(
public PermissionAppService(
IPermissionManager permissionManager,
IPermissionDefinitionManager permissionDefinitionManager,
IStringLocalizerFactory stringLocalizerFactory)

12
modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/IPermissionManagementProvider.cs

@ -9,8 +9,16 @@ namespace Volo.Abp.PermissionManagement
{
string Name { get; }
Task<PermissionValueProviderGrantInfo> CheckAsync([NotNull] string name, [NotNull] string providerName, [NotNull] string providerKey);
Task<PermissionValueProviderGrantInfo> CheckAsync(
[NotNull] string name,
[NotNull] string providerName,
[NotNull] string providerKey
);
Task SetAsync([NotNull] string name, [NotNull] string providerKey, bool isGranted);
Task SetAsync(
[NotNull] string name,
[NotNull] string providerKey,
bool isGranted
);
}
}

21
modules/permission-management/src/Volo.Abp.PermissionManagement.HttpApi.Client/Volo.Abp.PermissionManagement.HttpApi.Client.csproj

@ -0,0 +1,21 @@
<Project Sdk="Microsoft.NET.Sdk">
<Import Project="..\..\..\..\common.props" />
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<AssemblyName>Volo.Abp.PermissionManagement.HttpApi.Client</AssemblyName>
<PackageId>Volo.Abp.PermissionManagement.HttpApi.Client</PackageId>
<AssetTargetFallback>$(AssetTargetFallback);portable-net45+win8+wp8+wpa81;</AssetTargetFallback>
<GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute>
<GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute>
<GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute>
<RootNamespace />
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\Volo.Abp.PermissionManagement.Application.Contracts\Volo.Abp.PermissionManagement.Application.Contracts.csproj" />
<ProjectReference Include="..\..\..\..\framework\src\Volo.Abp.Http.Client\Volo.Abp.Http.Client.csproj" />
</ItemGroup>
</Project>

22
modules/permission-management/src/Volo.Abp.PermissionManagement.HttpApi.Client/Volo/Abp/PermissionManagement/AbpPermissionManagementHttpApiClientModule.cs

@ -0,0 +1,22 @@
using Microsoft.Extensions.DependencyInjection;
using Volo.Abp.Http.Client;
using Volo.Abp.Modularity;
namespace Volo.Abp.PermissionManagement
{
[DependsOn(
typeof(AbpPermissionManagementApplicationContractsModule),
typeof(AbpHttpClientModule))]
public class AbpPermissionManagementHttpApiClientModule : AbpModule
{
public const string RemoteServiceName = "AbpPermissionManagement";
public override void ConfigureServices(ServiceConfigurationContext context)
{
context.Services.AddHttpClientProxies(
typeof(AbpPermissionManagementApplicationContractsModule).Assembly,
RemoteServiceName
);
}
}
}

21
modules/permission-management/src/Volo.Abp.PermissionManagement.HttpApi/Volo.Abp.PermissionManagement.HttpApi.csproj

@ -0,0 +1,21 @@
<Project Sdk="Microsoft.NET.Sdk">
<Import Project="..\..\..\..\common.props" />
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<AssemblyName>Volo.Abp.PermissionManagement.HttpApi</AssemblyName>
<PackageId>Volo.Abp.PermissionManagement.HttpApi</PackageId>
<AssetTargetFallback>$(AssetTargetFallback);portable-net45+win8+wp8+wpa81;</AssetTargetFallback>
<GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute>
<GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute>
<GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute>
<RootNamespace />
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\Volo.Abp.PermissionManagement.Application.Contracts\Volo.Abp.PermissionManagement.Application.Contracts.csproj" />
<ProjectReference Include="..\..\..\..\framework\src\Volo.Abp.AspNetCore.Mvc\Volo.Abp.AspNetCore.Mvc.csproj" />
</ItemGroup>
</Project>

14
modules/permission-management/src/Volo.Abp.PermissionManagement.HttpApi/Volo/Abp/PermissionManagement/AbpPermissionManagementHttpApiModule.cs

@ -0,0 +1,14 @@
using Volo.Abp.AspNetCore.Mvc;
using Volo.Abp.Modularity;
namespace Volo.Abp.PermissionManagement.HttpApi
{
[DependsOn(
typeof(AbpPermissionManagementApplicationContractsModule),
typeof(AbpAspNetCoreMvcModule)
)]
public class AbpPermissionManagementHttpApiModule : AbpModule
{
}
}

28
modules/permission-management/src/Volo.Abp.PermissionManagement.HttpApi/Volo/Abp/PermissionManagement/PermissionsController.cs

@ -0,0 +1,28 @@
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Volo.Abp.AspNetCore.Mvc;
namespace Volo.Abp.PermissionManagement
{
[RemoteService]
[Area("abp")]
public class PermissionsController : AbpController, IPermissionAppService
{
private readonly IPermissionAppService _permissionAppService;
public PermissionsController(IPermissionAppService permissionAppService)
{
_permissionAppService = permissionAppService;
}
public Task<GetPermissionListResultDto> GetAsync(string providerName, string providerKey)
{
return _permissionAppService.GetAsync(providerName, providerKey);
}
public Task UpdateAsync(string providerName, string providerKey, UpdatePermissionsDto input)
{
return _permissionAppService.UpdateAsync(providerName, providerKey, input);
}
}
}

3
modules/permission-management/src/Volo.Abp.PermissionManagement.Web/AbpPermissionManagementWebModule.cs

@ -4,12 +4,13 @@ using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap;
using Volo.Abp.AutoMapper;
using Volo.Abp.Localization;
using Volo.Abp.Modularity;
using Volo.Abp.PermissionManagement.HttpApi;
using Volo.Abp.PermissionManagement.Web.Localization.Resources.AbpPermissionManagement;
using Volo.Abp.VirtualFileSystem;
namespace Volo.Abp.PermissionManagement.Web
{
[DependsOn(typeof(AbpPermissionManagementApplicationContractsModule))]
[DependsOn(typeof(AbpPermissionManagementHttpApiModule))]
[DependsOn(typeof(AbpAspNetCoreMvcUiBootstrapModule))]
[DependsOn(typeof(AbpAutoMapperModule))]
public class AbpPermissionManagementWebModule : AbpModule

12
modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Pages/AbpPermissionManagement/IPermissionAppServiceHelper.cs

@ -1,12 +0,0 @@
using System.Threading.Tasks;
using JetBrains.Annotations;
namespace Volo.Abp.PermissionManagement.Web.Pages.AbpPermissionManagement
{
public interface IPermissionAppServiceGateway
{
Task<GetPermissionListResultDto> GetAsync([NotNull] string providerName, [NotNull] string providerKey);
Task UpdateAsync([NotNull] string providerName, [NotNull] string providerKey, UpdatePermissionsDto input);
}
}

18
modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Pages/AbpPermissionManagement/NotImplementedPermissionAppServiceGateway.cs

@ -1,18 +0,0 @@
using System.Threading.Tasks;
using Volo.Abp.DependencyInjection;
namespace Volo.Abp.PermissionManagement.Web.Pages.AbpPermissionManagement
{
public class NotImplementedPermissionAppServiceGateway : IPermissionAppServiceGateway, ISingletonDependency
{
public Task<GetPermissionListResultDto> GetAsync(string providerName, string providerKey)
{
throw new System.NotImplementedException();
}
public Task UpdateAsync(string providerName, string providerKey, UpdatePermissionsDto input)
{
throw new System.NotImplementedException();
}
}
}

12
modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Pages/AbpPermissionManagement/PermissionManagementModal.cshtml.cs

@ -10,8 +10,6 @@ namespace Volo.Abp.PermissionManagement.Web.Pages.AbpPermissionManagement
{
public class PermissionManagementModal : AbpPageModel
{
private readonly IPermissionAppServiceGateway _permissionAppServiceGateway;
[Required]
[HiddenInput]
[BindProperty(SupportsGet = true)]
@ -27,16 +25,18 @@ namespace Volo.Abp.PermissionManagement.Web.Pages.AbpPermissionManagement
public string EntityDisplayName { get; set; }
public PermissionManagementModal(IPermissionAppServiceGateway permissionAppServiceGateway)
private readonly IPermissionAppService _permissionAppService;
public PermissionManagementModal(IPermissionAppService permissionAppService)
{
_permissionAppServiceGateway = permissionAppServiceGateway;
_permissionAppService = permissionAppService;
}
public async Task OnGetAsync()
{
ValidateModel();
var result = await _permissionAppServiceGateway.GetAsync(ProviderName, ProviderKey);
var result = await _permissionAppService.GetAsync(ProviderName, ProviderKey);
EntityDisplayName = result.EntityDisplayName;
@ -64,7 +64,7 @@ namespace Volo.Abp.PermissionManagement.Web.Pages.AbpPermissionManagement
})
.ToArray();
await _permissionAppServiceGateway.UpdateAsync(
await _permissionAppService.UpdateAsync(
ProviderName,
ProviderKey,
new UpdatePermissionsDto

2
modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Volo.Abp.PermissionManagement.Web.csproj

@ -23,7 +23,7 @@
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Volo.Abp.PermissionManagement.Application.Contracts\Volo.Abp.PermissionManagement.Application.Contracts.csproj" />
<ProjectReference Include="..\Volo.Abp.PermissionManagement.HttpApi\Volo.Abp.PermissionManagement.HttpApi.csproj" />
<ProjectReference Include="..\..\..\..\framework\src\Volo.Abp.AspNetCore.Mvc.UI.Bootstrap\Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.csproj" />
<ProjectReference Include="..\..\..\..\framework\src\Volo.Abp.AutoMapper\Volo.Abp.AutoMapper.csproj" />

2
nupkg/common.ps1

@ -109,6 +109,8 @@ $projects = (
"modules/permission-management/src/Volo.Abp.PermissionManagement.Application",
"modules/permission-management/src/Volo.Abp.PermissionManagement.EntityFrameworkCore",
"modules/permission-management/src/Volo.Abp.PermissionManagement.MongoDB",
"modules/permission-management/src/Volo.Abp.PermissionManagement.HttpApi",
"modules/permission-management/src/Volo.Abp.PermissionManagement.HttpApi.Client",
"modules/permission-management/src/Volo.Abp.PermissionManagement.Web",
# modules/tenant-management

3
samples/MicroserviceDemo/applications/AuthServer.Host/AuthServerHostModule.cs

@ -76,8 +76,7 @@ namespace AuthServer.Host
await context.ServiceProvider
.GetRequiredService<IIdentityDataSeeder>()
.SeedAsync(
"1q2w3E*",
IdentityPermissions.GetAll()
"1q2w3E*"
);
});
}

1
samples/MicroserviceDemo/applications/BackendAdminApp.Host/BackendAdminApp.Host.csproj

@ -26,6 +26,7 @@
<ProjectReference Include="..\..\..\..\framework\src\Volo.Abp.AspNetCore.Authentication.OAuth\Volo.Abp.AspNetCore.Authentication.OAuth.csproj" />
<ProjectReference Include="..\..\..\..\framework\src\Volo.Abp.Http.Client.IdentityModel\Volo.Abp.Http.Client.IdentityModel.csproj" />
<ProjectReference Include="..\..\..\..\framework\src\Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic\Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.csproj" />
<ProjectReference Include="..\..\..\..\modules\permission-management\src\Volo.Abp.PermissionManagement.HttpApi.Client\Volo.Abp.PermissionManagement.HttpApi.Client.csproj" />
<ProjectReference Include="..\..\..\..\modules\identity\src\Volo.Abp.Identity.HttpApi.Client\Volo.Abp.Identity.HttpApi.Client.csproj" />
<ProjectReference Include="..\..\..\..\modules\identity\src\Volo.Abp.Identity.Web\Volo.Abp.Identity.Web.csproj" />
<ProjectReference Include="..\..\modules\product\src\ProductManagement.HttpApi.Client\ProductManagement.HttpApi.Client.csproj" />

2
samples/MicroserviceDemo/applications/BackendAdminApp.Host/BackendAdminAppHostModule.cs

@ -14,6 +14,7 @@ using Volo.Abp.Identity;
using Volo.Abp.Identity.Web;
using Volo.Abp.Localization;
using Volo.Abp.Modularity;
using Volo.Abp.PermissionManagement;
namespace BackendAdminApp.Host
{
@ -24,6 +25,7 @@ namespace BackendAdminApp.Host
typeof(AbpHttpClientIdentityModelModule),
typeof(AbpIdentityHttpApiClientModule),
typeof(AbpIdentityWebModule),
typeof(AbpPermissionManagementHttpApiClientModule),
typeof(ProductManagementHttpApiClientModule),
typeof(ProductManagementWebModule),
typeof(AbpAspNetCoreMvcUiBasicThemeModule)

4
samples/MicroserviceDemo/gateways/BackendAdminAppGateway.Host/BackendAdminAppGateway.Host.csproj

@ -25,6 +25,10 @@
<ProjectReference Include="..\..\..\..\framework\src\Volo.Abp.Autofac\Volo.Abp.Autofac.csproj" />
<ProjectReference Include="..\..\..\..\framework\src\Volo.Abp.EntityFrameworkCore.SqlServer\Volo.Abp.EntityFrameworkCore.SqlServer.csproj" />
<ProjectReference Include="..\..\..\..\modules\identity\src\Volo.Abp.Identity.HttpApi\Volo.Abp.Identity.HttpApi.csproj" />
<ProjectReference Include="..\..\..\..\modules\identity\src\Volo.Abp.Identity.HttpApi.Client\Volo.Abp.Identity.HttpApi.Client.csproj" />
<ProjectReference Include="..\..\..\..\modules\identity\src\Volo.Abp.PermissionManagement.Domain.Identity\Volo.Abp.PermissionManagement.Domain.Identity.csproj" />
<ProjectReference Include="..\..\..\..\modules\permission-management\src\Volo.Abp.PermissionManagement.Application\Volo.Abp.PermissionManagement.Application.csproj" />
<ProjectReference Include="..\..\..\..\modules\permission-management\src\Volo.Abp.PermissionManagement.HttpApi\Volo.Abp.PermissionManagement.HttpApi.csproj" />
<ProjectReference Include="..\..\..\..\modules\permission-management\src\Volo.Abp.PermissionManagement.EntityFrameworkCore\Volo.Abp.PermissionManagement.EntityFrameworkCore.csproj" />
<ProjectReference Include="..\..\..\..\modules\setting-management\src\Volo.Abp.SettingManagement.EntityFrameworkCore\Volo.Abp.SettingManagement.EntityFrameworkCore.csproj" />
<ProjectReference Include="..\..\modules\product\src\ProductManagement.HttpApi\ProductManagement.HttpApi.csproj" />

9
samples/MicroserviceDemo/gateways/BackendAdminAppGateway.Host/BackendAdminAppGatewayHostModule.cs

@ -10,7 +10,10 @@ using Volo.Abp.EntityFrameworkCore;
using Volo.Abp.EntityFrameworkCore.SqlServer;
using Volo.Abp.Identity;
using Volo.Abp.Modularity;
using Volo.Abp.PermissionManagement;
using Volo.Abp.PermissionManagement.EntityFrameworkCore;
using Volo.Abp.PermissionManagement.HttpApi;
using Volo.Abp.PermissionManagement.Identity;
using Volo.Abp.Security.Claims;
using Volo.Abp.SettingManagement.EntityFrameworkCore;
@ -19,10 +22,14 @@ namespace BackendAdminAppGateway.Host
[DependsOn(
typeof(AbpAutofacModule),
typeof(AbpIdentityHttpApiModule),
typeof(AbpIdentityHttpApiClientModule),
typeof(ProductManagementHttpApiModule),
typeof(AbpEntityFrameworkCoreSqlServerModule),
typeof(AbpPermissionManagementEntityFrameworkCoreModule),
typeof(AbpSettingManagementEntityFrameworkCoreModule)
typeof(AbpPermissionManagementApplicationModule),
typeof(AbpPermissionManagementHttpApiModule),
typeof(AbpSettingManagementEntityFrameworkCoreModule),
typeof(AbpPermissionManagementDomainIdentityModule)
)]
public class BackendAdminAppGatewayHostModule : AbpModule
{

5
samples/MicroserviceDemo/gateways/BackendAdminAppGateway.Host/appsettings.json

@ -1,4 +1,9 @@
{
"RemoteServices": {
"Default": {
"BaseUrl": "http://localhost:65115/"
}
},
"AuthServer": {
"Authority": "http://localhost:64999",
"ApiName": "BackendAdminAppGateway"

Loading…
Cancel
Save