mirror of https://github.com/abpframework/abp.git
15 changed files with 192 additions and 15 deletions
@ -0,0 +1,35 @@ |
|||
using System.Threading.Tasks; |
|||
using Volo.Abp.Security.Claims; |
|||
|
|||
namespace Volo.Abp.Authorization.Permissions |
|||
{ |
|||
public class ClientPermissionValueProvider : PermissionValueProvider |
|||
{ |
|||
public const string ProviderName = "Client"; |
|||
|
|||
public override string Name => ProviderName; |
|||
|
|||
public ClientPermissionValueProvider(IPermissionStore permissionStore) |
|||
: base(permissionStore) |
|||
{ |
|||
|
|||
} |
|||
|
|||
public override async Task<PermissionValueProviderGrantInfo> CheckAsync(PermissionValueCheckContext context) |
|||
{ |
|||
var clientId = context.Principal?.FindFirst(AbpClaimTypes.ClientId)?.Value; |
|||
|
|||
if (clientId == null) |
|||
{ |
|||
return PermissionValueProviderGrantInfo.NonGranted; |
|||
} |
|||
|
|||
if (await PermissionStore.IsGrantedAsync(context.Permission.Name, Name, clientId)) |
|||
{ |
|||
return new PermissionValueProviderGrantInfo(true, clientId); |
|||
} |
|||
|
|||
return PermissionValueProviderGrantInfo.NonGranted; |
|||
} |
|||
} |
|||
} |
|||
@ -0,0 +1,20 @@ |
|||
using System.Security.Principal; |
|||
using Volo.Abp.DependencyInjection; |
|||
using Volo.Abp.Security.Claims; |
|||
|
|||
namespace Volo.Abp.Clients |
|||
{ |
|||
public class CurrentClient : ICurrentClient, ITransientDependency |
|||
{ |
|||
public virtual string Id => _principalAccessor.Principal?.FindClientId(); |
|||
|
|||
public virtual bool IsAuthenticated => Id != null; |
|||
|
|||
private readonly ICurrentPrincipalAccessor _principalAccessor; |
|||
|
|||
public CurrentClient(ICurrentPrincipalAccessor principalAccessor) |
|||
{ |
|||
_principalAccessor = principalAccessor; |
|||
} |
|||
} |
|||
} |
|||
@ -0,0 +1,9 @@ |
|||
namespace Volo.Abp.Clients |
|||
{ |
|||
public interface ICurrentClient |
|||
{ |
|||
string Id { get; } |
|||
|
|||
bool IsAuthenticated { get; } |
|||
} |
|||
} |
|||
@ -0,0 +1,21 @@ |
|||
<Project Sdk="Microsoft.NET.Sdk"> |
|||
|
|||
<Import Project="..\..\..\..\common.props" /> |
|||
|
|||
<PropertyGroup> |
|||
<TargetFramework>netstandard2.0</TargetFramework> |
|||
<AssemblyName>Volo.Abp.PermissionManagement.Domain.IdentityServer</AssemblyName> |
|||
<PackageId>Volo.Abp.PermissionManagement.Domain.IdentityServer</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.IdentityServer.Domain.Shared\Volo.Abp.IdentityServer.Domain.Shared.csproj" /> |
|||
<ProjectReference Include="..\..\..\permission-management\src\Volo.Abp.PermissionManagement.Domain\Volo.Abp.PermissionManagement.Domain.csproj" /> |
|||
</ItemGroup> |
|||
|
|||
</Project> |
|||
@ -0,0 +1,18 @@ |
|||
using Volo.Abp.Authorization.Permissions; |
|||
using Volo.Abp.Modularity; |
|||
|
|||
namespace Volo.Abp.PermissionManagement.IdentityServer |
|||
{ |
|||
public class AbpPermissionManagementDomainIdentityServerModule : AbpModule |
|||
{ |
|||
public override void ConfigureServices(ServiceConfigurationContext context) |
|||
{ |
|||
Configure<PermissionManagementOptions>(options => |
|||
{ |
|||
options.ManagementProviders.Add<ClientPermissionManagementProvider>(); |
|||
|
|||
options.ProviderPolicies[ClientPermissionValueProvider.ProviderName] = "IdentityServer.Client.ManagePermissions"; |
|||
}); |
|||
} |
|||
} |
|||
} |
|||
@ -0,0 +1,23 @@ |
|||
using Volo.Abp.Authorization.Permissions; |
|||
using Volo.Abp.Guids; |
|||
using Volo.Abp.MultiTenancy; |
|||
|
|||
namespace Volo.Abp.PermissionManagement.IdentityServer |
|||
{ |
|||
public class ClientPermissionManagementProvider : PermissionManagementProvider |
|||
{ |
|||
public override string Name => ClientPermissionValueProvider.ProviderName; |
|||
|
|||
public ClientPermissionManagementProvider( |
|||
IPermissionGrantRepository permissionGrantRepository, |
|||
IGuidGenerator guidGenerator, |
|||
ICurrentTenant currentTenant) |
|||
: base( |
|||
permissionGrantRepository, |
|||
guidGenerator, |
|||
currentTenant) |
|||
{ |
|||
|
|||
} |
|||
} |
|||
} |
|||
Loading…
Reference in new issue