Browse Source

Add pagination support to resource permission search methods

pull/24374/head
maliming 10 months ago
parent
commit
46281964d9
No known key found for this signature in database GPG Key ID: A646B9CB645ECEA4
  1. 5
      modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/IUserRoleFinder.cs
  2. 20
      modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/UserRoleFinder.cs
  3. 12
      modules/identity/src/Volo.Abp.Identity.HttpApi.Client/Volo/Abp/Identity/HttpClientUserRoleFinder.cs
  4. 4
      modules/identity/src/Volo.Abp.PermissionManagement.Domain.Identity/Volo/Abp/PermissionManagement/Identity/RoleResourcePermissionProviderKeyLookupService.cs
  5. 4
      modules/identity/src/Volo.Abp.PermissionManagement.Domain.Identity/Volo/Abp/PermissionManagement/Identity/UserResourcePermissionProviderKeyLookupService.cs
  6. 2
      modules/permission-management/src/Volo.Abp.PermissionManagement.Application.Contracts/Volo/Abp/PermissionManagement/IPermissionAppService.cs
  7. 4
      modules/permission-management/src/Volo.Abp.PermissionManagement.Application/Volo/Abp/PermissionManagement/PermissionAppService.cs
  8. 2
      modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/IResourcePermissionProviderKeyLookupService.cs
  9. 5
      modules/permission-management/src/Volo.Abp.PermissionManagement.HttpApi.Client/ClientProxies/Volo/Abp/PermissionManagement/PermissionsClientProxy.Generated.cs
  10. 32
      modules/permission-management/src/Volo.Abp.PermissionManagement.HttpApi.Client/ClientProxies/permissionManagement-generate-proxy.json
  11. 4
      modules/permission-management/src/Volo.Abp.PermissionManagement.HttpApi/Volo/Abp/PermissionManagement/PermissionsController.cs
  12. 6
      modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Pages/AbpPermissionManagement/add-resource-permission-management-modal.js
  13. 4
      modules/permission-management/src/Volo.Abp.PermissionManagement.Web/wwwroot/client-proxies/permissionManagement-proxy.js
  14. 2
      modules/permission-management/test/Volo.Abp.PermissionManagement.TestBase/Volo/Abp/PermissionManagement/TestResourcePermissionProviderKeyLookupService.cs

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

@ -1,5 +1,6 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
namespace Volo.Abp.Identity; namespace Volo.Abp.Identity;
@ -11,9 +12,9 @@ public interface IUserRoleFinder
Task<string[]> GetRoleNamesAsync(Guid userId); Task<string[]> GetRoleNamesAsync(Guid userId);
Task<List<UserFinderResult>> SearchUserAsync(string filter); Task<List<UserFinderResult>> SearchUserAsync(string filter, int page = 1);
Task<List<RoleFinderResult>> SearchRoleAsync(string filter); Task<List<RoleFinderResult>> SearchRoleAsync(string filter, int page = 1);
Task<List<UserFinderResult>> SearchUserByIdsAsync(Guid[] ids); Task<List<UserFinderResult>> SearchUserByIdsAsync(Guid[] ids);

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

@ -29,16 +29,12 @@ public class UserRoleFinder : IUserRoleFinder, ITransientDependency
return (await IdentityUserRepository.GetRoleNamesAsync(userId)).ToArray(); return (await IdentityUserRepository.GetRoleNamesAsync(userId)).ToArray();
} }
public virtual async Task<List<UserFinderResult>> SearchUserAsync(string filter) public virtual async Task<List<UserFinderResult>> SearchUserAsync(string filter, int page = 1)
{ {
if (filter.IsNullOrEmpty())
{
return new List<UserFinderResult>();
}
using (IdentityUserRepository.DisableTracking()) using (IdentityUserRepository.DisableTracking())
{ {
var users = await IdentityUserRepository.GetListAsync(filter: filter); page = page < 1 ? 1 : page;
var users = await IdentityUserRepository.GetListAsync(filter: filter, skipCount: (page - 1) * 10, maxResultCount: 10);
return users.Select(user => new UserFinderResult return users.Select(user => new UserFinderResult
{ {
Id = user.Id, Id = user.Id,
@ -47,16 +43,12 @@ public class UserRoleFinder : IUserRoleFinder, ITransientDependency
} }
} }
public virtual async Task<List<RoleFinderResult>> SearchRoleAsync(string filter) public virtual async Task<List<RoleFinderResult>> SearchRoleAsync(string filter, int page = 1)
{ {
if (filter.IsNullOrEmpty())
{
return new List<RoleFinderResult>();
}
using (IdentityUserRepository.DisableTracking()) using (IdentityUserRepository.DisableTracking())
{ {
var roles = await IdentityRoleRepository.GetListAsync(filter: filter); page = page < 1 ? 1 : page;
var roles = await IdentityRoleRepository.GetListAsync(filter: filter, skipCount: (page - 1) * 10, maxResultCount: 10);
return roles.Select(user => new RoleFinderResult return roles.Select(user => new RoleFinderResult
{ {
Id = user.Id, Id = user.Id,

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

@ -31,11 +31,13 @@ public class HttpClientUserRoleFinder : IUserRoleFinder, ITransientDependency
return await _userIntegrationService.GetRoleNamesAsync(userId); return await _userIntegrationService.GetRoleNamesAsync(userId);
} }
public virtual async Task<List<UserFinderResult>> SearchUserAsync(string filter) public virtual async Task<List<UserFinderResult>> SearchUserAsync(string filter, int page = 1)
{ {
page = page < 1 ? 1 : page;
var users = await _userIntegrationService.SearchAsync(new UserLookupSearchInputDto() var users = await _userIntegrationService.SearchAsync(new UserLookupSearchInputDto()
{ {
Filter = filter Filter = filter,
SkipCount = (page - 1) * 10
}); });
return users.Items.Select(u => new UserFinderResult return users.Items.Select(u => new UserFinderResult
{ {
@ -44,11 +46,13 @@ public class HttpClientUserRoleFinder : IUserRoleFinder, ITransientDependency
}).ToList(); }).ToList();
} }
public virtual async Task<List<RoleFinderResult>> SearchRoleAsync(string filter) public virtual async Task<List<RoleFinderResult>> SearchRoleAsync(string filter, int page = 1)
{ {
page = page < 1 ? 1 : page;
var roles = await _userIntegrationService.SearchRoleAsync(new RoleLookupSearchInputDto() var roles = await _userIntegrationService.SearchRoleAsync(new RoleLookupSearchInputDto()
{ {
Filter = filter Filter = filter,
SkipCount = (page - 1) * 10
}); });
return roles.Items.Select(r => new RoleFinderResult return roles.Items.Select(r => new RoleFinderResult

4
modules/identity/src/Volo.Abp.PermissionManagement.Domain.Identity/Volo/Abp/PermissionManagement/Identity/RoleResourcePermissionProviderKeyLookupService.cs

@ -25,9 +25,9 @@ public class RoleResourcePermissionProviderKeyLookupService : IResourcePermissio
DisplayName = LocalizableString.Create<IdentityResource>(nameof(RoleResourcePermissionProviderKeyLookupService)); DisplayName = LocalizableString.Create<IdentityResource>(nameof(RoleResourcePermissionProviderKeyLookupService));
} }
public virtual async Task<List<ResourcePermissionProviderKeyInfo>> SearchAsync(string filter = null, CancellationToken cancellationToken = default) public virtual async Task<List<ResourcePermissionProviderKeyInfo>> SearchAsync(string filter = null, int page = 1, CancellationToken cancellationToken = default)
{ {
var roles = await UserRoleFinder.SearchRoleAsync(filter); var roles = await UserRoleFinder.SearchRoleAsync(filter, page);
return roles.Select(r => new ResourcePermissionProviderKeyInfo(r.RoleName, r.RoleName)).ToList(); return roles.Select(r => new ResourcePermissionProviderKeyInfo(r.RoleName, r.RoleName)).ToList();
} }

4
modules/identity/src/Volo.Abp.PermissionManagement.Domain.Identity/Volo/Abp/PermissionManagement/Identity/UserResourcePermissionProviderKeyLookupService.cs

@ -25,9 +25,9 @@ public class UserResourcePermissionProviderKeyLookupService : IResourcePermissio
DisplayName = LocalizableString.Create<IdentityResource>(nameof(UserResourcePermissionProviderKeyLookupService)); DisplayName = LocalizableString.Create<IdentityResource>(nameof(UserResourcePermissionProviderKeyLookupService));
} }
public virtual async Task<List<ResourcePermissionProviderKeyInfo>> SearchAsync(string filter = null, CancellationToken cancellationToken = default) public virtual async Task<List<ResourcePermissionProviderKeyInfo>> SearchAsync(string filter = null, int page = 1, CancellationToken cancellationToken = default)
{ {
var users = await UserRoleFinder.SearchUserAsync(filter); var users = await UserRoleFinder.SearchUserAsync(filter, page);
return users.Select(u => new ResourcePermissionProviderKeyInfo(u.Id.ToString(), u.UserName)).ToList(); return users.Select(u => new ResourcePermissionProviderKeyInfo(u.Id.ToString(), u.UserName)).ToList();
} }

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

@ -14,7 +14,7 @@ public interface IPermissionAppService : IApplicationService
Task<GetResourceProviderListResultDto> GetResourceProviderKeyLookupServicesAsync(); Task<GetResourceProviderListResultDto> GetResourceProviderKeyLookupServicesAsync();
Task<SearchProviderKeyListResultDto> SearchResourceProviderKeyAsync(string serviceName, string filter); Task<SearchProviderKeyListResultDto> SearchResourceProviderKeyAsync(string serviceName, string filter, int page);
Task<GetResourcePermissionDefinitionListResultDto> GetResourceDefinitionsAsync([NotNull] string resourceName); Task<GetResourcePermissionDefinitionListResultDto> GetResourceDefinitionsAsync([NotNull] string resourceName);

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

@ -181,10 +181,10 @@ public class PermissionAppService : ApplicationService, IPermissionAppService
} }
[Authorize(PermissionManagementPermissions.ManageResourcePermissions)] [Authorize(PermissionManagementPermissions.ManageResourcePermissions)]
public virtual async Task<SearchProviderKeyListResultDto> SearchResourceProviderKeyAsync(string serviceName, string filter) public virtual async Task<SearchProviderKeyListResultDto> SearchResourceProviderKeyAsync(string serviceName, string filter, int page)
{ {
var lookupService = await ResourcePermissionManager.GetProviderKeyLookupServiceAsync(serviceName); var lookupService = await ResourcePermissionManager.GetProviderKeyLookupServiceAsync(serviceName);
var keys = await lookupService.SearchAsync(filter); var keys = await lookupService.SearchAsync(filter, page);
return new SearchProviderKeyListResultDto return new SearchProviderKeyListResultDto
{ {
Keys = keys.Select(x => new SearchProviderKeyInfo Keys = keys.Select(x => new SearchProviderKeyInfo

2
modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/IResourcePermissionProviderKeyLookupService.cs

@ -11,7 +11,7 @@ public interface IResourcePermissionProviderKeyLookupService
public ILocalizableString DisplayName { get; } public ILocalizableString DisplayName { get; }
Task<List<ResourcePermissionProviderKeyInfo>> SearchAsync(string filter = null, CancellationToken cancellationToken = default); Task<List<ResourcePermissionProviderKeyInfo>> SearchAsync(string filter = null, int page = 1, CancellationToken cancellationToken = default);
Task<List<ResourcePermissionProviderKeyInfo>> SearchAsync(string[] keys, CancellationToken cancellationToken = default); Task<List<ResourcePermissionProviderKeyInfo>> SearchAsync(string[] keys, CancellationToken cancellationToken = default);
} }

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

@ -51,12 +51,13 @@ public partial class PermissionsClientProxy : ClientProxyBase<IPermissionAppServ
return await RequestAsync<GetResourceProviderListResultDto>(nameof(GetResourceProviderKeyLookupServicesAsync)); return await RequestAsync<GetResourceProviderListResultDto>(nameof(GetResourceProviderKeyLookupServicesAsync));
} }
public virtual async Task<SearchProviderKeyListResultDto> SearchResourceProviderKeyAsync(string serviceName, string filter) public virtual async Task<SearchProviderKeyListResultDto> SearchResourceProviderKeyAsync(string serviceName, string filter, int page)
{ {
return await RequestAsync<SearchProviderKeyListResultDto>(nameof(SearchResourceProviderKeyAsync), new ClientProxyRequestTypeValue return await RequestAsync<SearchProviderKeyListResultDto>(nameof(SearchResourceProviderKeyAsync), new ClientProxyRequestTypeValue
{ {
{ typeof(string), serviceName }, { typeof(string), serviceName },
{ typeof(string), filter } { typeof(string), filter },
{ typeof(int), page }
}); });
} }

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

@ -205,6 +205,14 @@
"typeSimple": "string", "typeSimple": "string",
"isOptional": false, "isOptional": false,
"defaultValue": null "defaultValue": null
},
{
"name": "page",
"typeAsString": "System.Int32, System.Private.CoreLib",
"type": "System.Int32",
"typeSimple": "number",
"isOptional": false,
"defaultValue": null
} }
], ],
"returnValue": { "returnValue": {
@ -599,8 +607,8 @@
"allowAnonymous": null, "allowAnonymous": null,
"implementFrom": "Volo.Abp.PermissionManagement.IPermissionAppService" "implementFrom": "Volo.Abp.PermissionManagement.IPermissionAppService"
}, },
"SearchResourceProviderKeyAsyncByServiceNameAndFilter": { "SearchResourceProviderKeyAsyncByServiceNameAndFilterAndPage": {
"uniqueName": "SearchResourceProviderKeyAsyncByServiceNameAndFilter", "uniqueName": "SearchResourceProviderKeyAsyncByServiceNameAndFilterAndPage",
"name": "SearchResourceProviderKeyAsync", "name": "SearchResourceProviderKeyAsync",
"httpMethod": "GET", "httpMethod": "GET",
"url": "api/permission-management/permissions/search-resource-provider-keys", "url": "api/permission-management/permissions/search-resource-provider-keys",
@ -621,6 +629,14 @@
"typeSimple": "string", "typeSimple": "string",
"isOptional": false, "isOptional": false,
"defaultValue": null "defaultValue": null
},
{
"name": "page",
"typeAsString": "System.Int32, System.Private.CoreLib",
"type": "System.Int32",
"typeSimple": "number",
"isOptional": false,
"defaultValue": null
} }
], ],
"parameters": [ "parameters": [
@ -647,6 +663,18 @@
"constraintTypes": null, "constraintTypes": null,
"bindingSourceId": "ModelBinding", "bindingSourceId": "ModelBinding",
"descriptorName": "" "descriptorName": ""
},
{
"nameOnMethod": "page",
"name": "page",
"jsonName": null,
"type": "System.Int32",
"typeSimple": "number",
"isOptional": false,
"defaultValue": null,
"constraintTypes": null,
"bindingSourceId": "ModelBinding",
"descriptorName": ""
} }
], ],
"returnValue": { "returnValue": {

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

@ -42,9 +42,9 @@ public class PermissionsController : AbpControllerBase, IPermissionAppService
} }
[HttpGet("search-resource-provider-keys")] [HttpGet("search-resource-provider-keys")]
public virtual Task<SearchProviderKeyListResultDto> SearchResourceProviderKeyAsync(string serviceName, string filter) public virtual Task<SearchProviderKeyListResultDto> SearchResourceProviderKeyAsync(string serviceName, string filter, int page)
{ {
return PermissionAppService.SearchResourceProviderKeyAsync(serviceName, filter); return PermissionAppService.SearchResourceProviderKeyAsync(serviceName, filter, page);
} }
[HttpGet("resource-definitions")] [HttpGet("resource-definitions")]

6
modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Pages/AbpPermissionManagement/add-resource-permission-management-modal.js

@ -19,6 +19,7 @@ var abp = abp || {};
data: function (params) { data: function (params) {
var query = {}; var query = {};
query["serviceName"] = $('input[name="AddModel.ProviderName"]:checked').val(); query["serviceName"] = $('input[name="AddModel.ProviderName"]:checked').val();
query["page"] = params.page || 1;
query["filter"] = params.term; query["filter"] = params.term;
return query; return query;
}, },
@ -32,7 +33,10 @@ var abp = abp || {};
}) })
}); });
return { return {
results: keyValues results: keyValues,
pagination: {
more: keyValues.length > 0
}
}; };
} }
}, },

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

@ -41,9 +41,9 @@
}, ajaxParams)); }, ajaxParams));
}; };
volo.abp.permissionManagement.permissions.searchResourceProviderKey = function(serviceName, filter, ajaxParams) { volo.abp.permissionManagement.permissions.searchResourceProviderKey = function(serviceName, filter, page, ajaxParams) {
return abp.ajax($.extend(true, { return abp.ajax($.extend(true, {
url: abp.appPath + 'api/permission-management/permissions/search-resource-provider-keys' + abp.utils.buildQueryString([{ name: 'serviceName', value: serviceName }, { name: 'filter', value: filter }]) + '', url: abp.appPath + 'api/permission-management/permissions/search-resource-provider-keys' + abp.utils.buildQueryString([{ name: 'serviceName', value: serviceName }, { name: 'filter', value: filter }, { name: 'page', value: page }]) + '',
type: 'GET' type: 'GET'
}, ajaxParams)); }, ajaxParams));
}; };

2
modules/permission-management/test/Volo.Abp.PermissionManagement.TestBase/Volo/Abp/PermissionManagement/TestResourcePermissionProviderKeyLookupService.cs

@ -12,7 +12,7 @@ public class TestResourcePermissionProviderKeyLookupService : IResourcePermissio
public ILocalizableString DisplayName => new LocalizableString("Test", "TestResource"); public ILocalizableString DisplayName => new LocalizableString("Test", "TestResource");
public Task<List<ResourcePermissionProviderKeyInfo>> SearchAsync(string filter = null, CancellationToken cancellationToken = default) public Task<List<ResourcePermissionProviderKeyInfo>> SearchAsync(string filter = null, int page = 1, CancellationToken cancellationToken = default)
{ {
throw new System.NotImplementedException(); throw new System.NotImplementedException();
} }

Loading…
Cancel
Save