From 534695d57c23679a2be32a099fa3c5a925de8e77 Mon Sep 17 00:00:00 2001 From: maliming Date: Sat, 13 Dec 2025 14:01:48 +0800 Subject: [PATCH] Refactor role search methods to use names instead of IDs and update related components --- .../IIdentityUserIntegrationService.cs | 2 +- .../IdentityUserIntegrationService.cs | 4 +-- .../Volo/Abp/Identity/IUserRoleFinder.cs | 2 +- .../Abp/Identity/IIdentityRoleRepository.cs | 6 +++++ .../Volo/Abp/Identity/UserRoleFinder.cs | 4 +-- .../EfCoreIdentityRoleRepository.cs | 7 +++++ ...ityUserIntegrationClientProxy.Generated.cs | 6 ++--- .../identity-generate-proxy.json | 26 +++++++++---------- .../Abp/Identity/HttpClientUserRoleFinder.cs | 4 +-- .../IdentityUserIntegrationController.cs | 6 ++--- .../MongoDB/MongoIdentityRoleRepository.cs | 7 +++++ .../wwwroot/client-proxies/identity-proxy.js | 6 ++--- ...ourcePermissionProviderKeyLookupService.cs | 8 +----- ...ourcePermissionProviderKeyLookupService.cs | 1 + .../Volo/Abp/Identity/UserRoleFinder_Tests.cs | 4 +-- .../ResourcePermissionGrantInfoDto.cs | 2 ++ .../PermissionAppService.cs | 1 + .../PermissionProviderWithPermissions.cs | 3 +++ .../ResourcePermissionManager.cs | 6 +++-- ...ddResourcePermissionManagementModal.cshtml | 2 +- .../ResourcePermissionManagementModal.cshtml | 1 - ...esourcePermissionManagementModal.cshtml.cs | 4 --- ...dd-resource-permission-management-modal.js | 4 +-- .../resource-permission-management-modal.js | 2 +- 24 files changed, 68 insertions(+), 50 deletions(-) diff --git a/modules/identity/src/Volo.Abp.Identity.Application.Contracts/Volo/Abp/Identity/Integration/IIdentityUserIntegrationService.cs b/modules/identity/src/Volo.Abp.Identity.Application.Contracts/Volo/Abp/Identity/Integration/IIdentityUserIntegrationService.cs index 3f15309077..3a61407ddf 100644 --- a/modules/identity/src/Volo.Abp.Identity.Application.Contracts/Volo/Abp/Identity/Integration/IIdentityUserIntegrationService.cs +++ b/modules/identity/src/Volo.Abp.Identity.Application.Contracts/Volo/Abp/Identity/Integration/IIdentityUserIntegrationService.cs @@ -23,7 +23,7 @@ public interface IIdentityUserIntegrationService : IApplicationService Task> SearchRoleAsync(RoleLookupSearchInputDto input); - Task> SearchRoleByIdsAsync(Guid[] ids); + Task> SearchRoleByNamesAsync(string[] ids); Task GetRoleCountAsync(RoleLookupCountInputDto input); } diff --git a/modules/identity/src/Volo.Abp.Identity.Application/Volo/Abp/Identity/Integration/IdentityUserIntegrationService.cs b/modules/identity/src/Volo.Abp.Identity.Application/Volo/Abp/Identity/Integration/IdentityUserIntegrationService.cs index 6745bc8837..4019cd9031 100644 --- a/modules/identity/src/Volo.Abp.Identity.Application/Volo/Abp/Identity/Integration/IdentityUserIntegrationService.cs +++ b/modules/identity/src/Volo.Abp.Identity.Application/Volo/Abp/Identity/Integration/IdentityUserIntegrationService.cs @@ -105,11 +105,11 @@ public class IdentityUserIntegrationService : IdentityAppServiceBase, IIdentityU } } - public virtual async Task> SearchRoleByIdsAsync(Guid[] ids) + public virtual async Task> SearchRoleByNamesAsync(string[] names) { using (RoleRepository.DisableTracking()) { - var roles = await RoleRepository.GetListAsync(ids); + var roles = await RoleRepository.GetListAsync(names); return new ListResultDto(roles.Select(r => new RoleData(r.Id, r.Name, r.IsDefault, r.IsStatic, r.IsPublic, r.TenantId, r.ExtraProperties)).ToList()); } } diff --git a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/IUserRoleFinder.cs b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/IUserRoleFinder.cs index 166d066245..75261b2cc4 100644 --- a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/IUserRoleFinder.cs +++ b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/IUserRoleFinder.cs @@ -18,5 +18,5 @@ public interface IUserRoleFinder Task> SearchUserByIdsAsync(Guid[] ids); - Task> SearchRoleByIdsAsync(Guid[] ids); + Task> SearchRoleByNamesAsync(string[] names); } diff --git a/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IIdentityRoleRepository.cs b/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IIdentityRoleRepository.cs index a9eefe019e..26bd8624b9 100644 --- a/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IIdentityRoleRepository.cs +++ b/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IIdentityRoleRepository.cs @@ -31,11 +31,17 @@ public interface IIdentityRoleRepository : IBasicRepository bool includeDetails = false, CancellationToken cancellationToken = default ); + Task> GetListAsync( IEnumerable ids, CancellationToken cancellationToken = default ); + Task> GetListAsync( + IEnumerable names, + CancellationToken cancellationToken = default + ); + Task> GetDefaultOnesAsync( bool includeDetails = false, CancellationToken cancellationToken = default diff --git a/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/UserRoleFinder.cs b/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/UserRoleFinder.cs index a958ac1456..48d8b01a73 100644 --- a/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/UserRoleFinder.cs +++ b/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/UserRoleFinder.cs @@ -70,11 +70,11 @@ public class UserRoleFinder : IUserRoleFinder, ITransientDependency } } - public virtual async Task> SearchRoleByIdsAsync(Guid[] ids) + public virtual async Task> SearchRoleByNamesAsync(string[] names) { using (IdentityUserRepository.DisableTracking()) { - var roles = await IdentityRoleRepository.GetListAsync(ids); + var roles = await IdentityRoleRepository.GetListAsync(names); return roles.Select(user => new RoleFinderResult { Id = user.Id, diff --git a/modules/identity/src/Volo.Abp.Identity.EntityFrameworkCore/Volo/Abp/Identity/EntityFrameworkCore/EfCoreIdentityRoleRepository.cs b/modules/identity/src/Volo.Abp.Identity.EntityFrameworkCore/Volo/Abp/Identity/EntityFrameworkCore/EfCoreIdentityRoleRepository.cs index ca6dc42d6f..1da7758f19 100644 --- a/modules/identity/src/Volo.Abp.Identity.EntityFrameworkCore/Volo/Abp/Identity/EntityFrameworkCore/EfCoreIdentityRoleRepository.cs +++ b/modules/identity/src/Volo.Abp.Identity.EntityFrameworkCore/Volo/Abp/Identity/EntityFrameworkCore/EfCoreIdentityRoleRepository.cs @@ -72,6 +72,13 @@ public class EfCoreIdentityRoleRepository : EfCoreRepository> GetListAsync(IEnumerable names, CancellationToken cancellationToken = default) + { + return await (await GetDbSetAsync()) + .Where(t => names.Contains(t.Name)) + .ToListAsync(GetCancellationToken(cancellationToken)); + } + public virtual async Task> GetDefaultOnesAsync( bool includeDetails = false, CancellationToken cancellationToken = default) { diff --git a/modules/identity/src/Volo.Abp.Identity.HttpApi.Client/ClientProxies/Volo/Abp/Identity/Integration/IdentityUserIntegrationClientProxy.Generated.cs b/modules/identity/src/Volo.Abp.Identity.HttpApi.Client/ClientProxies/Volo/Abp/Identity/Integration/IdentityUserIntegrationClientProxy.Generated.cs index aa91f7d6cd..ddbb2cfc55 100644 --- a/modules/identity/src/Volo.Abp.Identity.HttpApi.Client/ClientProxies/Volo/Abp/Identity/Integration/IdentityUserIntegrationClientProxy.Generated.cs +++ b/modules/identity/src/Volo.Abp.Identity.HttpApi.Client/ClientProxies/Volo/Abp/Identity/Integration/IdentityUserIntegrationClientProxy.Generated.cs @@ -76,11 +76,11 @@ public partial class IdentityUserIntegrationClientProxy : ClientProxyBase> SearchRoleByIdsAsync(Guid[] ids) + public virtual async Task> SearchRoleByNamesAsync(String[] names) { - return await RequestAsync>(nameof(SearchRoleByIdsAsync), new ClientProxyRequestTypeValue + return await RequestAsync>(nameof(SearchRoleByNamesAsync), new ClientProxyRequestTypeValue { - { typeof(Guid[]), ids } + { typeof(String[]), names } }); } diff --git a/modules/identity/src/Volo.Abp.Identity.HttpApi.Client/ClientProxies/identity-generate-proxy.json b/modules/identity/src/Volo.Abp.Identity.HttpApi.Client/ClientProxies/identity-generate-proxy.json index 3977808e84..3937d99aa9 100644 --- a/modules/identity/src/Volo.Abp.Identity.HttpApi.Client/ClientProxies/identity-generate-proxy.json +++ b/modules/identity/src/Volo.Abp.Identity.HttpApi.Client/ClientProxies/identity-generate-proxy.json @@ -1436,12 +1436,12 @@ } }, { - "name": "SearchRoleByIdsAsync", + "name": "SearchRoleByNamesAsync", "parametersOnMethod": [ { "name": "ids", - "typeAsString": "System.Guid[], System.Private.CoreLib", - "type": "System.Guid[]", + "typeAsString": "System.String[], System.Private.CoreLib", + "type": "System.String[]", "typeSimple": "[string]", "isOptional": false, "defaultValue": null @@ -1828,17 +1828,17 @@ "allowAnonymous": null, "implementFrom": "Volo.Abp.Identity.Integration.IIdentityUserIntegrationService" }, - "SearchRoleByIdsAsyncByIds": { - "uniqueName": "SearchRoleByIdsAsyncByIds", - "name": "SearchRoleByIdsAsync", + "SearchRoleByNamesAsyncByNames": { + "uniqueName": "SearchRoleByNamesAsyncByNames", + "name": "SearchRoleByNamesAsync", "httpMethod": "GET", - "url": "integration-api/identity/users/search/roles/by-ids", + "url": "integration-api/identity/users/search/roles/by-names", "supportedVersions": [], "parametersOnMethod": [ { - "name": "ids", - "typeAsString": "System.Guid[], System.Private.CoreLib", - "type": "System.Guid[]", + "name": "names", + "typeAsString": "System.String[], System.Private.CoreLib", + "type": "System.String[]", "typeSimple": "[string]", "isOptional": false, "defaultValue": null @@ -1846,10 +1846,10 @@ ], "parameters": [ { - "nameOnMethod": "ids", - "name": "ids", + "nameOnMethod": "names", + "name": "names", "jsonName": null, - "type": "System.Guid[]", + "type": "System.String[]", "typeSimple": "[string]", "isOptional": false, "defaultValue": null, diff --git a/modules/identity/src/Volo.Abp.Identity.HttpApi.Client/Volo/Abp/Identity/HttpClientUserRoleFinder.cs b/modules/identity/src/Volo.Abp.Identity.HttpApi.Client/Volo/Abp/Identity/HttpClientUserRoleFinder.cs index 6c32d8b11d..ed7f0f5382 100644 --- a/modules/identity/src/Volo.Abp.Identity.HttpApi.Client/Volo/Abp/Identity/HttpClientUserRoleFinder.cs +++ b/modules/identity/src/Volo.Abp.Identity.HttpApi.Client/Volo/Abp/Identity/HttpClientUserRoleFinder.cs @@ -72,9 +72,9 @@ public class HttpClientUserRoleFinder : IUserRoleFinder, ITransientDependency }).ToList(); } - public virtual async Task> SearchRoleByIdsAsync(Guid[] ids) + public virtual async Task> SearchRoleByNamesAsync(string[] names) { - var roles = await _userIntegrationService.SearchRoleByIdsAsync(ids); + var roles = await _userIntegrationService.SearchRoleByNamesAsync(names); return roles.Items.Select(r => new RoleFinderResult { Id = r.Id, diff --git a/modules/identity/src/Volo.Abp.Identity.HttpApi/Volo/Abp/Identity/Integration/IdentityUserIntegrationController.cs b/modules/identity/src/Volo.Abp.Identity.HttpApi/Volo/Abp/Identity/Integration/IdentityUserIntegrationController.cs index dba6c4f253..a30b73d5cd 100644 --- a/modules/identity/src/Volo.Abp.Identity.HttpApi/Volo/Abp/Identity/Integration/IdentityUserIntegrationController.cs +++ b/modules/identity/src/Volo.Abp.Identity.HttpApi/Volo/Abp/Identity/Integration/IdentityUserIntegrationController.cs @@ -71,10 +71,10 @@ public class IdentityUserIntegrationController : AbpControllerBase, IIdentityUse } [HttpGet] - [Route("search/roles/by-ids")] - public virtual Task> SearchRoleByIdsAsync(Guid[] ids) + [Route("search/roles/by-names")] + public virtual Task> SearchRoleByNamesAsync(string[] names) { - return UserIntegrationService.SearchRoleByIdsAsync(ids); + return UserIntegrationService.SearchRoleByNamesAsync(names); } [HttpGet] diff --git a/modules/identity/src/Volo.Abp.Identity.MongoDB/Volo/Abp/Identity/MongoDB/MongoIdentityRoleRepository.cs b/modules/identity/src/Volo.Abp.Identity.MongoDB/Volo/Abp/Identity/MongoDB/MongoIdentityRoleRepository.cs index 7deee94160..f613a3ee88 100644 --- a/modules/identity/src/Volo.Abp.Identity.MongoDB/Volo/Abp/Identity/MongoDB/MongoIdentityRoleRepository.cs +++ b/modules/identity/src/Volo.Abp.Identity.MongoDB/Volo/Abp/Identity/MongoDB/MongoIdentityRoleRepository.cs @@ -78,6 +78,13 @@ public class MongoIdentityRoleRepository : MongoDbRepository> GetListAsync(IEnumerable names, CancellationToken cancellationToken = default) + { + return await (await GetQueryableAsync(cancellationToken)) + .Where(x => names.Contains(x.Name)) + .ToListAsync(GetCancellationToken(cancellationToken)); + } + public virtual async Task> GetDefaultOnesAsync( bool includeDetails = false, CancellationToken cancellationToken = default) diff --git a/modules/identity/src/Volo.Abp.Identity.Web/wwwroot/client-proxies/identity-proxy.js b/modules/identity/src/Volo.Abp.Identity.Web/wwwroot/client-proxies/identity-proxy.js index 250abbc47b..6de3aeb8d5 100644 --- a/modules/identity/src/Volo.Abp.Identity.Web/wwwroot/client-proxies/identity-proxy.js +++ b/modules/identity/src/Volo.Abp.Identity.Web/wwwroot/client-proxies/identity-proxy.js @@ -20,7 +20,7 @@ volo.abp.identity.identityRole.getList = function(input, ajaxParams) { return abp.ajax($.extend(true, { - url: abp.appPath + 'api/identity/roles' + abp.utils.buildQueryString([{ name: 'filter', value: input.filter }, { name: 'sorting', value: input.sorting }, { name: 'skipCount', value: input.skipCount }, { name: 'maxResultCount', value: input.maxResultCount }]) + '', + url: abp.appPath + 'api/identity/roles' + abp.utils.buildQueryString([{ name: 'filter', value: input.filter }, { name: 'sorting', value: input.sorting }, { name: 'skipCount', value: input.skipCount }, { name: 'maxResultCount', value: input.maxResultCount }, { name: 'extraProperties', value: input.extraProperties }]) + '', type: 'GET' }, ajaxParams)); }; @@ -73,7 +73,7 @@ volo.abp.identity.identityUser.getList = function(input, ajaxParams) { return abp.ajax($.extend(true, { - url: abp.appPath + 'api/identity/users' + abp.utils.buildQueryString([{ name: 'filter', value: input.filter }, { name: 'sorting', value: input.sorting }, { name: 'skipCount', value: input.skipCount }, { name: 'maxResultCount', value: input.maxResultCount }]) + '', + url: abp.appPath + 'api/identity/users' + abp.utils.buildQueryString([{ name: 'filter', value: input.filter }, { name: 'sorting', value: input.sorting }, { name: 'skipCount', value: input.skipCount }, { name: 'maxResultCount', value: input.maxResultCount }, { name: 'extraProperties', value: input.extraProperties }]) + '', type: 'GET' }, ajaxParams)); }; @@ -163,7 +163,7 @@ volo.abp.identity.identityUserLookup.search = function(input, ajaxParams) { return abp.ajax($.extend(true, { - url: abp.appPath + 'api/identity/users/lookup/search' + abp.utils.buildQueryString([{ name: 'filter', value: input.filter }, { name: 'sorting', value: input.sorting }, { name: 'skipCount', value: input.skipCount }, { name: 'maxResultCount', value: input.maxResultCount }]) + '', + url: abp.appPath + 'api/identity/users/lookup/search' + abp.utils.buildQueryString([{ name: 'filter', value: input.filter }, { name: 'sorting', value: input.sorting }, { name: 'skipCount', value: input.skipCount }, { name: 'maxResultCount', value: input.maxResultCount }, { name: 'extraProperties', value: input.extraProperties }]) + '', type: 'GET' }, ajaxParams)); }; diff --git a/modules/identity/src/Volo.Abp.PermissionManagement.Domain.Identity/Volo/Abp/PermissionManagement/Identity/RoleResourcePermissionProviderKeyLookupService.cs b/modules/identity/src/Volo.Abp.PermissionManagement.Domain.Identity/Volo/Abp/PermissionManagement/Identity/RoleResourcePermissionProviderKeyLookupService.cs index 6b198558fc..fa9fc31f79 100644 --- a/modules/identity/src/Volo.Abp.PermissionManagement.Domain.Identity/Volo/Abp/PermissionManagement/Identity/RoleResourcePermissionProviderKeyLookupService.cs +++ b/modules/identity/src/Volo.Abp.PermissionManagement.Domain.Identity/Volo/Abp/PermissionManagement/Identity/RoleResourcePermissionProviderKeyLookupService.cs @@ -1,4 +1,3 @@ -using System; using System.Collections.Generic; using System.Linq; using System.Threading; @@ -33,12 +32,7 @@ public class RoleResourcePermissionProviderKeyLookupService : IResourcePermissio public virtual async Task> SearchAsync(string[] keys, CancellationToken cancellationToken = default) { - var ids = keys - .Select(key => Guid.TryParse(key, out var id) ? (Guid?)id : null) - .Where(id => id.HasValue) - .Select(id => id.Value) - .ToArray(); - var roles = await UserRoleFinder.SearchRoleByIdsAsync(ids.ToArray()); + var roles = await UserRoleFinder.SearchRoleByNamesAsync(keys.Distinct().ToArray()); return roles.Select(r => new ResourcePermissionProviderKeyInfo(r.RoleName, r.RoleName)).ToList(); } } diff --git a/modules/identity/src/Volo.Abp.PermissionManagement.Domain.Identity/Volo/Abp/PermissionManagement/Identity/UserResourcePermissionProviderKeyLookupService.cs b/modules/identity/src/Volo.Abp.PermissionManagement.Domain.Identity/Volo/Abp/PermissionManagement/Identity/UserResourcePermissionProviderKeyLookupService.cs index 3e5470f432..83f0e79099 100644 --- a/modules/identity/src/Volo.Abp.PermissionManagement.Domain.Identity/Volo/Abp/PermissionManagement/Identity/UserResourcePermissionProviderKeyLookupService.cs +++ b/modules/identity/src/Volo.Abp.PermissionManagement.Domain.Identity/Volo/Abp/PermissionManagement/Identity/UserResourcePermissionProviderKeyLookupService.cs @@ -37,6 +37,7 @@ public class UserResourcePermissionProviderKeyLookupService : IResourcePermissio .Select(key => Guid.TryParse(key, out var id) ? (Guid?)id : null) .Where(id => id.HasValue) .Select(id => id.Value) + .Distinct() .ToArray(); var users = await UserRoleFinder.SearchUserByIdsAsync(ids.ToArray()); return users.Select(u => new ResourcePermissionProviderKeyInfo(u.Id.ToString(), u.UserName)).ToList(); diff --git a/modules/identity/test/Volo.Abp.Identity.Domain.Tests/Volo/Abp/Identity/UserRoleFinder_Tests.cs b/modules/identity/test/Volo.Abp.Identity.Domain.Tests/Volo/Abp/Identity/UserRoleFinder_Tests.cs index cd36fb3225..56f9049b92 100644 --- a/modules/identity/test/Volo.Abp.Identity.Domain.Tests/Volo/Abp/Identity/UserRoleFinder_Tests.cs +++ b/modules/identity/test/Volo.Abp.Identity.Domain.Tests/Volo/Abp/Identity/UserRoleFinder_Tests.cs @@ -51,9 +51,9 @@ public class UserRoleFinder_Tests : AbpIdentityDomainTestBase } [Fact] - public async Task SearchRoleByIdsAsync() + public async Task SearchRoleByNamesAsync() { - var roleResults = await _userRoleFinder.SearchRoleByIdsAsync(new[] { _testData.RoleModeratorId, _testData.RoleManagerId }); + var roleResults = await _userRoleFinder.SearchRoleByNamesAsync(new[] { "moderator", "manager" }); roleResults.ShouldNotBeEmpty(); roleResults.Count.ShouldBe(2); roleResults.ShouldContain(x => x.RoleName == "moderator"); diff --git a/modules/permission-management/src/Volo.Abp.PermissionManagement.Application.Contracts/Volo/Abp/PermissionManagement/ResourcePermissionGrantInfoDto.cs b/modules/permission-management/src/Volo.Abp.PermissionManagement.Application.Contracts/Volo/Abp/PermissionManagement/ResourcePermissionGrantInfoDto.cs index fd7fb3a8b1..cf286815a5 100644 --- a/modules/permission-management/src/Volo.Abp.PermissionManagement.Application.Contracts/Volo/Abp/PermissionManagement/ResourcePermissionGrantInfoDto.cs +++ b/modules/permission-management/src/Volo.Abp.PermissionManagement.Application.Contracts/Volo/Abp/PermissionManagement/ResourcePermissionGrantInfoDto.cs @@ -10,5 +10,7 @@ public class ResourcePermissionGrantInfoDto public string ProviderDisplayName { get; set; } + public string ProviderNameDisplayName { get; set; } + public List Permissions { get; set; } } diff --git a/modules/permission-management/src/Volo.Abp.PermissionManagement.Application/Volo/Abp/PermissionManagement/PermissionAppService.cs b/modules/permission-management/src/Volo.Abp.PermissionManagement.Application/Volo/Abp/PermissionManagement/PermissionAppService.cs index 89e68f02de..83dd815984 100644 --- a/modules/permission-management/src/Volo.Abp.PermissionManagement.Application/Volo/Abp/PermissionManagement/PermissionAppService.cs +++ b/modules/permission-management/src/Volo.Abp.PermissionManagement.Application/Volo/Abp/PermissionManagement/PermissionAppService.cs @@ -259,6 +259,7 @@ public class PermissionAppService : ApplicationService, IPermissionAppService ProviderName = resourcePermissionGrant.ProviderName, ProviderKey = resourcePermissionGrant.ProviderKey, ProviderDisplayName = resourcePermissionGrant.ProviderDisplayName, + ProviderNameDisplayName = resourcePermissionGrant.ProviderNameDisplayName?.Localize(StringLocalizerFactory), Permissions = new List() }; foreach (var permission in resourcePermissionGrant.Permissions) diff --git a/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/PermissionProviderWithPermissions.cs b/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/PermissionProviderWithPermissions.cs index 0443d54891..a6507ef0bc 100644 --- a/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/PermissionProviderWithPermissions.cs +++ b/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/PermissionProviderWithPermissions.cs @@ -1,4 +1,5 @@ using System.Collections.Generic; +using Volo.Abp.Localization; namespace Volo.Abp.PermissionManagement; @@ -10,6 +11,8 @@ public class PermissionProviderWithPermissions public string ProviderDisplayName { get; set; } + public ILocalizableString ProviderNameDisplayName { get; set; } + public List Permissions { get; set; } public PermissionProviderWithPermissions(string providerName, string providerKey, string providerDisplayName) diff --git a/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/ResourcePermissionManager.cs b/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/ResourcePermissionManager.cs index 1561d5adac..172f326a9a 100644 --- a/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/ResourcePermissionManager.cs +++ b/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/ResourcePermissionManager.cs @@ -217,7 +217,7 @@ public class ResourcePermissionManager : IResourcePermissionManager, ISingletonD { continue; } - var keys = resourcePermissionProvider.Select(rp => rp.ProviderKey).ToList(); + var keys = resourcePermissionProvider.Select(rp => rp.ProviderKey).Distinct().ToList(); providerKeyInfos.Add(resourcePermissionProvider.Key, await providerKeyLookupService.SearchAsync(keys.ToArray())); } @@ -232,6 +232,8 @@ public class ResourcePermissionManager : IResourcePermissionManager, ISingletonD if (providerKeyInfo != null) { item.ProviderDisplayName = providerKeyInfo.ProviderDisplayName; + item.ProviderNameDisplayName = providerKeyLookupServices + .FirstOrDefault(s => s.Name == item.ProviderName)?.DisplayName; } } } @@ -374,7 +376,7 @@ public class ResourcePermissionManager : IResourcePermissionManager, ISingletonD return multiplePermissionWithGrantedProviders; } - foreach (var provider in ManagementProviders) + foreach (var provider in ManagementProviders.Where(x => x.Name == providerName)) { permissionNames = resourcePermissions.Select(x => x.Name).ToArray(); var multiplePermissionValueProviderGrantInfo = await provider.CheckAsync(permissionNames, resourceName, resourceKey, providerName, providerKey); diff --git a/modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Pages/AbpPermissionManagement/AddResourcePermissionManagementModal.cshtml b/modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Pages/AbpPermissionManagement/AddResourcePermissionManagementModal.cshtml index 5ed12d9d62..b9b7f9340a 100644 --- a/modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Pages/AbpPermissionManagement/AddResourcePermissionManagementModal.cshtml +++ b/modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Pages/AbpPermissionManagement/AddResourcePermissionManagementModal.cshtml @@ -34,7 +34,7 @@ -
+

@L["ResourcePermissionPermissions"]

diff --git a/modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Pages/AbpPermissionManagement/ResourcePermissionManagementModal.cshtml b/modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Pages/AbpPermissionManagement/ResourcePermissionManagementModal.cshtml index 535bee6634..d594200866 100644 --- a/modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Pages/AbpPermissionManagement/ResourcePermissionManagementModal.cshtml +++ b/modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Pages/AbpPermissionManagement/ResourcePermissionManagementModal.cshtml @@ -21,7 +21,6 @@ -
diff --git a/modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Pages/AbpPermissionManagement/ResourcePermissionManagementModal.cshtml.cs b/modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Pages/AbpPermissionManagement/ResourcePermissionManagementModal.cshtml.cs index 1b1373e017..28d0afeec0 100644 --- a/modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Pages/AbpPermissionManagement/ResourcePermissionManagementModal.cshtml.cs +++ b/modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Pages/AbpPermissionManagement/ResourcePermissionManagementModal.cshtml.cs @@ -18,10 +18,6 @@ public class ResourcePermissionManagementModal : AbpPageModel [BindProperty(SupportsGet = true)] public string ResourceKey { get; set; } - [HiddenInput] - [BindProperty(SupportsGet = true)] - public string ResourceDisplayName { get; set; } - public bool HasAnyResourcePermission { get; set; } public bool HasAnyResourceProviderKeyLookupService { get; set; } diff --git a/modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Pages/AbpPermissionManagement/add-resource-permission-management-modal.js b/modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Pages/AbpPermissionManagement/add-resource-permission-management-modal.js index 85613044a7..92cbf9620b 100644 --- a/modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Pages/AbpPermissionManagement/add-resource-permission-management-modal.js +++ b/modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Pages/AbpPermissionManagement/add-resource-permission-management-modal.js @@ -61,12 +61,12 @@ var abp = abp || {}; return; } - $items.prop('disabled', true); + abp.ui.setBusy('#permissionList'); var resourceName = $("#ResourceName").val(); var resourceKey = $("#ResourceKey").val(); var providerName = $('input[name="AddModel.ProviderName"]:checked').val(); volo.abp.permissionManagement.permissions.getResourceByProvider(resourceName, resourceKey, providerName, providerKey).then(function (result) { - $items.prop('disabled', false); + abp.ui.clearBusy(); var grantedPermissionNames = result.permissions.filter(function (p) { return p.isGranted === true; }).map(function (p) { diff --git a/modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Pages/AbpPermissionManagement/resource-permission-management-modal.js b/modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Pages/AbpPermissionManagement/resource-permission-management-modal.js index 713bc0ab96..8d79ca8bce 100644 --- a/modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Pages/AbpPermissionManagement/resource-permission-management-modal.js +++ b/modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Pages/AbpPermissionManagement/resource-permission-management-modal.js @@ -60,7 +60,7 @@ var abp = abp || {}; title: l("ResourcePermissionTarget"), data: 'providerName', render: function (data, type, row) { - return '' + row.providerName + '' + row.providerDisplayName; + return '' + row.providerName + '' + row.providerDisplayName; }, }, {