Browse Source

Merge pull request #22724 from abpframework/GetByGroupAsync

Support get permisons info by group name.
pull/23000/head
Halil İbrahim Kalkan 1 year ago
committed by GitHub
parent
commit
a67cc26559
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 2
      modules/permission-management/src/Volo.Abp.PermissionManagement.Application.Contracts/Volo/Abp/PermissionManagement/IPermissionAppService.cs
  2. 14
      modules/permission-management/src/Volo.Abp.PermissionManagement.Application/Volo/Abp/PermissionManagement/PermissionAppService.cs
  3. 10
      modules/permission-management/src/Volo.Abp.PermissionManagement.HttpApi.Client/ClientProxies/Volo/Abp/PermissionManagement/PermissionsClientProxy.Generated.cs
  4. 254
      modules/permission-management/src/Volo.Abp.PermissionManagement.HttpApi.Client/ClientProxies/permissionManagement-generate-proxy.json
  5. 7
      modules/permission-management/src/Volo.Abp.PermissionManagement.HttpApi/Volo/Abp/PermissionManagement/PermissionsController.cs
  6. 7
      modules/permission-management/src/Volo.Abp.PermissionManagement.Web/wwwroot/client-proxies/permissionManagement-proxy.js
  7. 21
      modules/permission-management/test/Volo.Abp.PermissionManagement.Application.Tests/Volo/Abp/PermissionManagement/PermissionAppService_Tests.cs
  8. 8
      modules/permission-management/test/Volo.Abp.PermissionManagement.TestBase/Volo/Abp/PermissionManagement/TestPermissionDefinitionProvider.cs

2
modules/permission-management/src/Volo.Abp.PermissionManagement.Application.Contracts/Volo/Abp/PermissionManagement/IPermissionAppService.cs

@ -8,5 +8,7 @@ public interface IPermissionAppService : IApplicationService
{
Task<GetPermissionListResultDto> GetAsync([NotNull] string providerName, [NotNull] string providerKey);
Task<GetPermissionListResultDto> GetByGroupAsync([NotNull] string groupName, [NotNull] string providerName, [NotNull] string providerKey);
Task UpdateAsync([NotNull] string providerName, [NotNull] string providerKey, UpdatePermissionsDto input);
}

14
modules/permission-management/src/Volo.Abp.PermissionManagement.Application/Volo/Abp/PermissionManagement/PermissionAppService.cs

@ -33,6 +33,16 @@ public class PermissionAppService : ApplicationService, IPermissionAppService
}
public virtual async Task<GetPermissionListResultDto> GetAsync(string providerName, string providerKey)
{
return await GetInternalAsync(null, providerName, providerKey);
}
public virtual async Task<GetPermissionListResultDto> GetByGroupAsync(string groupName, string providerName, string providerKey)
{
return await GetInternalAsync(groupName, providerName, providerKey);
}
protected virtual async Task<GetPermissionListResultDto> GetInternalAsync(string groupName, string providerName, string providerKey)
{
await CheckProviderPolicy(providerName);
@ -45,7 +55,7 @@ public class PermissionAppService : ApplicationService, IPermissionAppService
var multiTenancySide = CurrentTenant.GetMultiTenancySide();
var permissionGroups = new List<PermissionGroupDto>();
foreach (var group in await PermissionDefinitionManager.GetGroupsAsync())
foreach (var group in (await PermissionDefinitionManager.GetGroupsAsync()).WhereIf(!groupName.IsNullOrWhiteSpace(), x => x.Name == groupName))
{
var groupDto = CreatePermissionGroupDto(group);
var permissions = group.GetPermissionsWithChildren()
@ -108,7 +118,7 @@ public class PermissionAppService : ApplicationService, IPermissionAppService
return result;
}
protected virtual PermissionGrantInfoDto CreatePermissionGrantInfoDto(PermissionDefinition permission)
protected virtual PermissionGrantInfoDto CreatePermissionGrantInfoDto(PermissionDefinition permission)
{
return new PermissionGrantInfoDto
{

10
modules/permission-management/src/Volo.Abp.PermissionManagement.HttpApi.Client/ClientProxies/Volo/Abp/PermissionManagement/PermissionsClientProxy.Generated.cs

@ -26,6 +26,16 @@ public partial class PermissionsClientProxy : ClientProxyBase<IPermissionAppServ
});
}
public virtual async Task<GetPermissionListResultDto> GetByGroupAsync(string groupName, string providerName, string providerKey)
{
return await RequestAsync<GetPermissionListResultDto>(nameof(GetByGroupAsync), new ClientProxyRequestTypeValue
{
{ typeof(string), groupName },
{ typeof(string), providerName },
{ typeof(string), providerKey }
});
}
public virtual async Task UpdateAsync(string providerName, string providerKey, UpdatePermissionsDto input)
{
await RequestAsync(nameof(UpdateAsync), new ClientProxyRequestTypeValue

254
modules/permission-management/src/Volo.Abp.PermissionManagement.HttpApi.Client/ClientProxies/permissionManagement-generate-proxy.json

@ -4,6 +4,78 @@
"rootPath": "permissionManagement",
"remoteServiceName": "AbpPermissionManagement",
"controllers": {
"Volo.Abp.PermissionManagement.Integration.PermissionIntegrationController": {
"controllerName": "PermissionIntegration",
"controllerGroupName": "PermissionIntegration",
"isRemoteService": true,
"isIntegrationService": true,
"apiVersion": null,
"type": "Volo.Abp.PermissionManagement.Integration.PermissionIntegrationController",
"interfaces": [
{
"type": "Volo.Abp.PermissionManagement.Integration.IPermissionIntegrationService",
"name": "IPermissionIntegrationService",
"methods": [
{
"name": "IsGrantedAsync",
"parametersOnMethod": [
{
"name": "input",
"typeAsString": "System.Collections.Generic.List`1[[Volo.Abp.PermissionManagement.IsGrantedRequest, Volo.Abp.PermissionManagement.Domain.Shared, Version=9.3.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib",
"type": "System.Collections.Generic.List<Volo.Abp.PermissionManagement.IsGrantedRequest>",
"typeSimple": "[Volo.Abp.PermissionManagement.IsGrantedRequest]",
"isOptional": false,
"defaultValue": null
}
],
"returnValue": {
"type": "Volo.Abp.Application.Dtos.ListResultDto<Volo.Abp.PermissionManagement.IsGrantedResponse>",
"typeSimple": "Volo.Abp.Application.Dtos.ListResultDto<Volo.Abp.PermissionManagement.IsGrantedResponse>"
}
}
]
}
],
"actions": {
"IsGrantedAsyncByInput": {
"uniqueName": "IsGrantedAsyncByInput",
"name": "IsGrantedAsync",
"httpMethod": "GET",
"url": "integration-api/permission-management/permissions/is-granted",
"supportedVersions": [],
"parametersOnMethod": [
{
"name": "input",
"typeAsString": "System.Collections.Generic.List`1[[Volo.Abp.PermissionManagement.IsGrantedRequest, Volo.Abp.PermissionManagement.Domain.Shared, Version=9.3.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib",
"type": "System.Collections.Generic.List<Volo.Abp.PermissionManagement.IsGrantedRequest>",
"typeSimple": "[Volo.Abp.PermissionManagement.IsGrantedRequest]",
"isOptional": false,
"defaultValue": null
}
],
"parameters": [
{
"nameOnMethod": "input",
"name": "input",
"jsonName": null,
"type": "System.Collections.Generic.List<Volo.Abp.PermissionManagement.IsGrantedRequest>",
"typeSimple": "[Volo.Abp.PermissionManagement.IsGrantedRequest]",
"isOptional": false,
"defaultValue": null,
"constraintTypes": null,
"bindingSourceId": "ModelBinding",
"descriptorName": ""
}
],
"returnValue": {
"type": "Volo.Abp.Application.Dtos.ListResultDto<Volo.Abp.PermissionManagement.IsGrantedResponse>",
"typeSimple": "Volo.Abp.Application.Dtos.ListResultDto<Volo.Abp.PermissionManagement.IsGrantedResponse>"
},
"allowAnonymous": null,
"implementFrom": "Volo.Abp.PermissionManagement.Integration.IPermissionIntegrationService"
}
}
},
"Volo.Abp.PermissionManagement.PermissionsController": {
"controllerName": "Permissions",
"controllerGroupName": "Permissions",
@ -41,6 +113,39 @@
"typeSimple": "Volo.Abp.PermissionManagement.GetPermissionListResultDto"
}
},
{
"name": "GetByGroupAsync",
"parametersOnMethod": [
{
"name": "groupName",
"typeAsString": "System.String, System.Private.CoreLib",
"type": "System.String",
"typeSimple": "string",
"isOptional": false,
"defaultValue": null
},
{
"name": "providerName",
"typeAsString": "System.String, System.Private.CoreLib",
"type": "System.String",
"typeSimple": "string",
"isOptional": false,
"defaultValue": null
},
{
"name": "providerKey",
"typeAsString": "System.String, System.Private.CoreLib",
"type": "System.String",
"typeSimple": "string",
"isOptional": false,
"defaultValue": null
}
],
"returnValue": {
"type": "Volo.Abp.PermissionManagement.GetPermissionListResultDto",
"typeSimple": "Volo.Abp.PermissionManagement.GetPermissionListResultDto"
}
},
{
"name": "UpdateAsync",
"parametersOnMethod": [
@ -135,15 +240,15 @@
"allowAnonymous": null,
"implementFrom": "Volo.Abp.PermissionManagement.IPermissionAppService"
},
"UpdateAsyncByProviderNameAndProviderKeyAndInput": {
"uniqueName": "UpdateAsyncByProviderNameAndProviderKeyAndInput",
"name": "UpdateAsync",
"httpMethod": "PUT",
"url": "api/permission-management/permissions",
"GetByGroupAsyncByGroupNameAndProviderNameAndProviderKey": {
"uniqueName": "GetByGroupAsyncByGroupNameAndProviderNameAndProviderKey",
"name": "GetByGroupAsync",
"httpMethod": "GET",
"url": "api/permission-management/permissions/by-group",
"supportedVersions": [],
"parametersOnMethod": [
{
"name": "providerName",
"name": "groupName",
"typeAsString": "System.String, System.Private.CoreLib",
"type": "System.String",
"typeSimple": "string",
@ -151,7 +256,7 @@
"defaultValue": null
},
{
"name": "providerKey",
"name": "providerName",
"typeAsString": "System.String, System.Private.CoreLib",
"type": "System.String",
"typeSimple": "string",
@ -159,18 +264,18 @@
"defaultValue": null
},
{
"name": "input",
"typeAsString": "Volo.Abp.PermissionManagement.UpdatePermissionsDto, Volo.Abp.PermissionManagement.Application.Contracts",
"type": "Volo.Abp.PermissionManagement.UpdatePermissionsDto",
"typeSimple": "Volo.Abp.PermissionManagement.UpdatePermissionsDto",
"name": "providerKey",
"typeAsString": "System.String, System.Private.CoreLib",
"type": "System.String",
"typeSimple": "string",
"isOptional": false,
"defaultValue": null
}
],
"parameters": [
{
"nameOnMethod": "providerName",
"name": "providerName",
"nameOnMethod": "groupName",
"name": "groupName",
"jsonName": null,
"type": "System.String",
"typeSimple": "string",
@ -181,8 +286,8 @@
"descriptorName": ""
},
{
"nameOnMethod": "providerKey",
"name": "providerKey",
"nameOnMethod": "providerName",
"name": "providerName",
"jsonName": null,
"type": "System.String",
"typeSimple": "string",
@ -193,96 +298,101 @@
"descriptorName": ""
},
{
"nameOnMethod": "input",
"name": "input",
"nameOnMethod": "providerKey",
"name": "providerKey",
"jsonName": null,
"type": "Volo.Abp.PermissionManagement.UpdatePermissionsDto",
"typeSimple": "Volo.Abp.PermissionManagement.UpdatePermissionsDto",
"type": "System.String",
"typeSimple": "string",
"isOptional": false,
"defaultValue": null,
"constraintTypes": null,
"bindingSourceId": "Body",
"bindingSourceId": "ModelBinding",
"descriptorName": ""
}
],
"returnValue": {
"type": "System.Void",
"typeSimple": "System.Void"
"type": "Volo.Abp.PermissionManagement.GetPermissionListResultDto",
"typeSimple": "Volo.Abp.PermissionManagement.GetPermissionListResultDto"
},
"allowAnonymous": null,
"implementFrom": "Volo.Abp.PermissionManagement.IPermissionAppService"
}
}
},
"Volo.Abp.PermissionManagement.Integration.PermissionIntegrationController": {
"controllerName": "PermissionIntegration",
"controllerGroupName": "PermissionIntegration",
"isRemoteService": true,
"isIntegrationService": true,
"apiVersion": null,
"type": "Volo.Abp.PermissionManagement.Integration.PermissionIntegrationController",
"interfaces": [
{
"type": "Volo.Abp.PermissionManagement.Integration.IPermissionIntegrationService",
"name": "IPermissionIntegrationService",
"methods": [
{
"name": "IsGrantedAsync",
"parametersOnMethod": [
{
"name": "input",
"typeAsString": "System.Collections.Generic.List`1[[Volo.Abp.PermissionManagement.IsGrantedRequest, Volo.Abp.PermissionManagement.Domain.Shared, Version=7.4.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib",
"type": "System.Collections.Generic.List<Volo.Abp.PermissionManagement.IsGrantedRequest>",
"typeSimple": "[Volo.Abp.PermissionManagement.IsGrantedRequest]",
"isOptional": false,
"defaultValue": null
}
],
"returnValue": {
"type": "Volo.Abp.Application.Dtos.ListResultDto<Volo.Abp.PermissionManagement.IsGrantedResponse>",
"typeSimple": "Volo.Abp.Application.Dtos.ListResultDto<Volo.Abp.PermissionManagement.IsGrantedResponse>"
}
}
]
}
],
"actions": {
"IsGrantedAsyncByInput": {
"uniqueName": "IsGrantedAsyncByInput",
"name": "IsGrantedAsync",
"httpMethod": "GET",
"url": "integration-api/permission-management/permissions/is-granted",
},
"UpdateAsyncByProviderNameAndProviderKeyAndInput": {
"uniqueName": "UpdateAsyncByProviderNameAndProviderKeyAndInput",
"name": "UpdateAsync",
"httpMethod": "PUT",
"url": "api/permission-management/permissions",
"supportedVersions": [],
"parametersOnMethod": [
{
"name": "providerName",
"typeAsString": "System.String, System.Private.CoreLib",
"type": "System.String",
"typeSimple": "string",
"isOptional": false,
"defaultValue": null
},
{
"name": "providerKey",
"typeAsString": "System.String, System.Private.CoreLib",
"type": "System.String",
"typeSimple": "string",
"isOptional": false,
"defaultValue": null
},
{
"name": "input",
"typeAsString": "System.Collections.Generic.List`1[[Volo.Abp.PermissionManagement.IsGrantedRequest, Volo.Abp.PermissionManagement.Domain.Shared, Version=7.4.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib",
"type": "System.Collections.Generic.List<Volo.Abp.PermissionManagement.IsGrantedRequest>",
"typeSimple": "[Volo.Abp.PermissionManagement.IsGrantedRequest]",
"typeAsString": "Volo.Abp.PermissionManagement.UpdatePermissionsDto, Volo.Abp.PermissionManagement.Application.Contracts",
"type": "Volo.Abp.PermissionManagement.UpdatePermissionsDto",
"typeSimple": "Volo.Abp.PermissionManagement.UpdatePermissionsDto",
"isOptional": false,
"defaultValue": null
}
],
"parameters": [
{
"nameOnMethod": "providerName",
"name": "providerName",
"jsonName": null,
"type": "System.String",
"typeSimple": "string",
"isOptional": false,
"defaultValue": null,
"constraintTypes": null,
"bindingSourceId": "ModelBinding",
"descriptorName": ""
},
{
"nameOnMethod": "providerKey",
"name": "providerKey",
"jsonName": null,
"type": "System.String",
"typeSimple": "string",
"isOptional": false,
"defaultValue": null,
"constraintTypes": null,
"bindingSourceId": "ModelBinding",
"descriptorName": ""
},
{
"nameOnMethod": "input",
"name": "input",
"jsonName": null,
"type": "System.Collections.Generic.List<Volo.Abp.PermissionManagement.IsGrantedRequest>",
"typeSimple": "[Volo.Abp.PermissionManagement.IsGrantedRequest]",
"type": "Volo.Abp.PermissionManagement.UpdatePermissionsDto",
"typeSimple": "Volo.Abp.PermissionManagement.UpdatePermissionsDto",
"isOptional": false,
"defaultValue": null,
"constraintTypes": null,
"bindingSourceId": "ModelBinding",
"bindingSourceId": "Body",
"descriptorName": ""
}
],
"returnValue": {
"type": "Volo.Abp.Application.Dtos.ListResultDto<Volo.Abp.PermissionManagement.IsGrantedResponse>",
"typeSimple": "Volo.Abp.Application.Dtos.ListResultDto<Volo.Abp.PermissionManagement.IsGrantedResponse>"
"type": "System.Void",
"typeSimple": "System.Void"
},
"allowAnonymous": null,
"implementFrom": "Volo.Abp.PermissionManagement.Integration.IPermissionIntegrationService"
"implementFrom": "Volo.Abp.PermissionManagement.IPermissionAppService"
}
}
}

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

@ -22,6 +22,13 @@ public class PermissionsController : AbpControllerBase, IPermissionAppService
return PermissionAppService.GetAsync(providerName, providerKey);
}
[HttpGet]
[Route("by-group")]
public virtual Task<GetPermissionListResultDto> GetByGroupAsync(string groupName, string providerName, string providerKey)
{
return PermissionAppService.GetByGroupAsync(groupName, providerName, providerKey);
}
[HttpPut]
public virtual Task UpdateAsync(string providerName, string providerKey, UpdatePermissionsDto input)
{

7
modules/permission-management/src/Volo.Abp.PermissionManagement.Web/wwwroot/client-proxies/permissionManagement-proxy.js

@ -18,6 +18,13 @@
}, ajaxParams));
};
volo.abp.permissionManagement.permissions.getByGroup = function(groupName, providerName, providerKey, ajaxParams) {
return abp.ajax($.extend(true, {
url: abp.appPath + 'api/permission-management/permissions/by-group' + abp.utils.buildQueryString([{ name: 'groupName', value: groupName }, { name: 'providerName', value: providerName }, { name: 'providerKey', value: providerKey }]) + '',
type: 'GET'
}, ajaxParams));
};
volo.abp.permissionManagement.permissions.update = function(providerName, providerKey, input, ajaxParams) {
return abp.ajax($.extend(true, {
url: abp.appPath + 'api/permission-management/permissions' + abp.utils.buildQueryString([{ name: 'providerName', value: providerName }, { name: 'providerKey', value: providerKey }]) + '',

21
modules/permission-management/test/Volo.Abp.PermissionManagement.Application.Tests/Volo/Abp/PermissionManagement/PermissionAppService_Tests.cs

@ -32,7 +32,7 @@ public class PermissionAppService_Tests : AbpPermissionManagementApplicationTest
permissionListResultDto.ShouldNotBeNull();
permissionListResultDto.EntityDisplayName.ShouldBe(PermissionTestDataBuilder.User1Id.ToString());
permissionListResultDto.Groups.Count.ShouldBe(1);
permissionListResultDto.Groups.Count.ShouldBe(2);
permissionListResultDto.Groups.ShouldContain(x => x.Name == "TestGroup");
permissionListResultDto.Groups.First().Permissions.ShouldContain(x => x.Name == "MyPermission1");
@ -50,11 +50,11 @@ public class PermissionAppService_Tests : AbpPermissionManagementApplicationTest
result.Groups.First().Permissions.ShouldContain(x => x.Name == "MyPermission5");
result.Groups.First().Permissions.ShouldContain(x => x.Name == "MyPermission5.ChildPermission1");
}
permissionListResultDto.Groups.First().Permissions.ShouldContain(x => x.Name == "MyPermission6");
permissionListResultDto.Groups.First().Permissions.ShouldNotContain(x => x.Name == "MyPermission6.ChildDisabledPermission1");
permissionListResultDto.Groups.First().Permissions.ShouldContain(x => x.Name == "MyPermission6.ChildPermission2");
permissionListResultDto.Groups.First().Permissions.ShouldNotContain(x => x.Name == "MyDisabledPermission1");
permissionListResultDto.Groups.First().Permissions.ShouldNotContain(x => x.Name == "MyDisabledPermission2");
permissionListResultDto.Groups.First().Permissions.ShouldNotContain(x => x.Name == "MyDisabledPermission2.ChildPermission1");
@ -62,6 +62,21 @@ public class PermissionAppService_Tests : AbpPermissionManagementApplicationTest
permissionListResultDto.Groups.First().Permissions.ShouldNotContain(x => x.Name == "MyDisabledPermission2.ChildPermission2.ChildPermission1");
}
[Fact]
public async Task GetByGroupAsync()
{
var permissionListResultDto = await _permissionAppService.GetByGroupAsync("TestGroup2", UserPermissionValueProvider.ProviderName,
PermissionTestDataBuilder.User1Id.ToString());
permissionListResultDto.ShouldNotBeNull();
permissionListResultDto.EntityDisplayName.ShouldBe(PermissionTestDataBuilder.User1Id.ToString());
permissionListResultDto.Groups.Count.ShouldBe(1);
permissionListResultDto.Groups.ShouldContain(x => x.Name == "TestGroup2");
permissionListResultDto.Groups.First().Permissions.ShouldContain(x => x.Name == "MyPermission7");
permissionListResultDto.Groups.First().Permissions.ShouldContain(x => x.Name == "MyPermission8");
}
[Fact]
public async Task UpdateAsync()
{

8
modules/permission-management/test/Volo.Abp.PermissionManagement.TestBase/Volo/Abp/PermissionManagement/TestPermissionDefinitionProvider.cs

@ -22,14 +22,18 @@ public class TestPermissionDefinitionProvider : PermissionDefinitionProvider
var myPermission5 = testGroup.AddPermission("MyPermission5");
myPermission5.StateCheckers.Add(new TestRequireRolePermissionStateProvider("super-admin"));
myPermission5.AddChild("MyPermission5.ChildPermission1");
var myPermission6 = testGroup.AddPermission("MyPermission6");
myPermission6.AddChild("MyPermission6.ChildDisabledPermission1", isEnabled: false);
myPermission6.AddChild("MyPermission6.ChildPermission2");
var myDisabledPermission2 = testGroup.AddPermission("MyDisabledPermission2", isEnabled: false);
myDisabledPermission2.AddChild("MyDisabledPermission2.ChildPermission1");
var myDisabledPermission2Child2 = myDisabledPermission2.AddChild("MyDisabledPermission2.ChildPermission2");
myDisabledPermission2Child2.AddChild("MyDisabledPermission2.ChildPermission2.ChildPermission1");
var testGroup2 = context.AddGroup("TestGroup2");
testGroup2.AddPermission("MyPermission7");
testGroup2.AddPermission("MyPermission8");
}
}

Loading…
Cancel
Save