Browse Source

Introduce IdentityUserIntegrationService

pull/16962/head
Halil İbrahim Kalkan 3 years ago
parent
commit
d7b32f7f9e
  1. 11
      modules/identity/src/Volo.Abp.Identity.Application.Contracts/Volo/Abp/Identity/Integration/IIdentityUserIntegrationService.cs
  2. 19
      modules/identity/src/Volo.Abp.Identity.Application/Volo/Abp/Identity/Integration/IdentityUserIntegrationService.cs
  3. 3
      modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/IUserRoleFinder.cs
  4. 6
      modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/UserRoleFinder.cs
  5. 11
      modules/identity/src/Volo.Abp.Identity.HttpApi.Client/Volo/Abp/Identity/HttpClientUserRoleFinder.cs
  6. 27
      modules/identity/src/Volo.Abp.Identity.HttpApi/Volo/Abp/Identity/Integration/IdentityUserIntegrationController.cs
  7. 4
      modules/identity/src/Volo.Abp.PermissionManagement.Domain.Identity/Volo/Abp/PermissionManagement/Identity/AbpPermissionManagementDomainIdentityModule.cs
  8. 6
      modules/identity/src/Volo.Abp.PermissionManagement.Domain.Identity/Volo/Abp/PermissionManagement/Identity/RolePermissionManagementProvider.cs

11
modules/identity/src/Volo.Abp.Identity.Application.Contracts/Volo/Abp/Identity/Integration/IIdentityUserIntegrationService.cs

@ -0,0 +1,11 @@
using System;
using System.Threading.Tasks;
using Volo.Abp.Application.Services;
namespace Volo.Abp.Identity.Integration;
[IntegrationService]
public interface IIdentityUserIntegrationService : IApplicationService
{
Task<string[]> GetRoleNamesAsync(Guid id);
}

19
modules/identity/src/Volo.Abp.Identity.Application/Volo/Abp/Identity/Integration/IdentityUserIntegrationService.cs

@ -0,0 +1,19 @@
using System;
using System.Threading.Tasks;
namespace Volo.Abp.Identity.Integration;
public class IdentityUserIntegrationService : IdentityAppServiceBase, IIdentityUserIntegrationService
{
protected IIdentityUserRepository UserRepository { get; }
public IdentityUserIntegrationService(IIdentityUserRepository userRepository)
{
UserRepository = userRepository;
}
public async Task<string[]> GetRoleNamesAsync(Guid id)
{
return (await UserRepository.GetRoleNamesAsync(id)).ToArray();
}
}

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

@ -5,5 +5,8 @@ namespace Volo.Abp.Identity;
public interface IUserRoleFinder
{
[Obsolete("Use GetRoleNamesAsync instead.")]
Task<string[]> GetRolesAsync(Guid userId);
Task<string[]> GetRoleNamesAsync(Guid userId);
}

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

@ -13,8 +13,14 @@ public class UserRoleFinder : IUserRoleFinder, ITransientDependency
IdentityUserRepository = identityUserRepository;
}
[Obsolete("Use GetRoleNamesAsync instead.")]
public virtual async Task<string[]> GetRolesAsync(Guid userId)
{
return (await IdentityUserRepository.GetRoleNamesAsync(userId)).ToArray();
}
public async Task<string[]> GetRoleNamesAsync(Guid userId)
{
return (await IdentityUserRepository.GetRoleNamesAsync(userId)).ToArray();
}
}

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

@ -2,6 +2,7 @@
using System.Linq;
using System.Threading.Tasks;
using Volo.Abp.DependencyInjection;
using Volo.Abp.Identity.Integration;
namespace Volo.Abp.Identity;
@ -9,15 +10,23 @@ namespace Volo.Abp.Identity;
public class HttpClientUserRoleFinder : IUserRoleFinder, ITransientDependency
{
protected IIdentityUserAppService _userAppService { get; }
protected IIdentityUserIntegrationService _userIntegrationService { get; }
public HttpClientUserRoleFinder(IIdentityUserAppService userAppService)
public HttpClientUserRoleFinder(IIdentityUserAppService userAppService, IIdentityUserIntegrationService userIntegrationService)
{
_userAppService = userAppService;
_userIntegrationService = userIntegrationService;
}
[Obsolete("Use GetRoleNamesAsync instead.")]
public virtual async Task<string[]> GetRolesAsync(Guid userId)
{
var output = await _userAppService.GetRolesAsync(userId);
return output.Items.Select(r => r.Name).ToArray();
}
public async Task<string[]> GetRoleNamesAsync(Guid userId)
{
return await _userIntegrationService.GetRoleNamesAsync(userId);
}
}

27
modules/identity/src/Volo.Abp.Identity.HttpApi/Volo/Abp/Identity/Integration/IdentityUserIntegrationController.cs

@ -0,0 +1,27 @@
using System;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Volo.Abp.AspNetCore.Mvc;
namespace Volo.Abp.Identity.Integration;
[RemoteService(Name = IdentityRemoteServiceConsts.RemoteServiceName)]
[Area(IdentityRemoteServiceConsts.ModuleName)]
[ControllerName("UserIntegration")]
[Route("integration-api/identity/users")]
public class IdentityUserIntegrationController : AbpControllerBase, IIdentityUserIntegrationService
{
protected IIdentityUserIntegrationService UserIntegrationService { get; }
public IdentityUserIntegrationController(IIdentityUserIntegrationService userIntegrationService)
{
UserIntegrationService = userIntegrationService;
}
[HttpGet]
[Route("{id}/role-names")]
public virtual Task<string[]> GetRoleNamesAsync(Guid id)
{
return UserIntegrationService.GetRoleNamesAsync(id);
}
}

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

@ -17,8 +17,8 @@ public class AbpPermissionManagementDomainIdentityModule : AbpModule
options.ManagementProviders.Add<UserPermissionManagementProvider>();
options.ManagementProviders.Add<RolePermissionManagementProvider>();
//TODO: Can we prevent duplication of permission names without breaking the design and making the system complicated
options.ProviderPolicies[UserPermissionValueProvider.ProviderName] = "AbpIdentity.Users.ManagePermissions";
//TODO: Can we prevent duplication of permission names without breaking the design and making the system complicated
options.ProviderPolicies[UserPermissionValueProvider.ProviderName] = "AbpIdentity.Users.ManagePermissions";
options.ProviderPolicies[RolePermissionValueProvider.ProviderName] = "AbpIdentity.Roles.ManagePermissions";
});
}

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

@ -28,14 +28,14 @@ public class RolePermissionManagementProvider : PermissionManagementProvider
UserRoleFinder = userRoleFinder;
}
public override async Task<PermissionValueProviderGrantInfo> CheckAsync(string name, string providerName, string providerKey)
public async override Task<PermissionValueProviderGrantInfo> CheckAsync(string name, string providerName, string providerKey)
{
var multipleGrantInfo = await CheckAsync(new[] { name }, providerName, providerKey);
return multipleGrantInfo.Result.Values.First();
}
public override async Task<MultiplePermissionValueProviderGrantInfo> CheckAsync(string[] names, string providerName, string providerKey)
public async override Task<MultiplePermissionValueProviderGrantInfo> CheckAsync(string[] names, string providerName, string providerKey)
{
var multiplePermissionValueProviderGrantInfo = new MultiplePermissionValueProviderGrantInfo(names);
var permissionGrants = new List<PermissionGrant>();
@ -49,7 +49,7 @@ public class RolePermissionManagementProvider : PermissionManagementProvider
if (providerName == UserPermissionValueProvider.ProviderName)
{
var userId = Guid.Parse(providerKey);
var roleNames = await UserRoleFinder.GetRolesAsync(userId);
var roleNames = await UserRoleFinder.GetRoleNamesAsync(userId);
foreach (var roleName in roleNames)
{

Loading…
Cancel
Save