Browse Source

Merge pull request #952 from ddrsql/master

Docking with third-party OAuth services for ease of rewriting CurrentUser
pull/992/head
Halil İbrahim Kalkan 8 years ago
committed by GitHub
parent
commit
c6f5ffaaf5
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 10
      framework/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Permissions/ClientPermissionValueProvider.cs
  2. 10
      framework/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Permissions/RolePermissionValueProvider.cs
  3. 9
      framework/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Permissions/UserPermissionValueProvider.cs
  4. 12
      framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/CurrentClaimsPrincipalTenantResolveContributor.cs

10
framework/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Permissions/ClientPermissionValueProvider.cs

@ -1,23 +1,25 @@
using System.Threading.Tasks; using System.Threading.Tasks;
using Volo.Abp.Security.Claims; using Volo.Abp.Clients;
namespace Volo.Abp.Authorization.Permissions namespace Volo.Abp.Authorization.Permissions
{ {
public class ClientPermissionValueProvider : PermissionValueProvider public class ClientPermissionValueProvider : PermissionValueProvider
{ {
protected ICurrentClient CurrentClient { get; }
public const string ProviderName = "Client"; public const string ProviderName = "Client";
public override string Name => ProviderName; public override string Name => ProviderName;
public ClientPermissionValueProvider(IPermissionStore permissionStore) public ClientPermissionValueProvider(ICurrentClient currentClient, IPermissionStore permissionStore)
: base(permissionStore) : base(permissionStore)
{ {
CurrentClient = currentClient;
} }
public override async Task<PermissionGrantResult> CheckAsync(PermissionValueCheckContext context) public override async Task<PermissionGrantResult> CheckAsync(PermissionValueCheckContext context)
{ {
var clientId = context.Principal?.FindFirst(AbpClaimTypes.ClientId)?.Value; var clientId = CurrentClient.Id;
if (clientId == null) if (clientId == null)
{ {

10
framework/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Permissions/RolePermissionValueProvider.cs

@ -1,24 +1,28 @@
using System.Linq; using System.Linq;
using System.Threading.Tasks; using System.Threading.Tasks;
using Volo.Abp.Security.Claims; using Volo.Abp.Security.Claims;
using Volo.Abp.Users;
namespace Volo.Abp.Authorization.Permissions namespace Volo.Abp.Authorization.Permissions
{ {
public class RolePermissionValueProvider : PermissionValueProvider public class RolePermissionValueProvider : PermissionValueProvider
{ {
protected ICurrentUser CurrentUser { get; }
public const string ProviderName = "Role"; public const string ProviderName = "Role";
public override string Name => ProviderName; public override string Name => ProviderName;
public RolePermissionValueProvider(IPermissionStore permissionStore) public RolePermissionValueProvider(ICurrentUser currentUser, IPermissionStore permissionStore)
: base(permissionStore) : base(permissionStore)
{ {
CurrentUser = currentUser;
} }
public override async Task<PermissionGrantResult> CheckAsync(PermissionValueCheckContext context) public override async Task<PermissionGrantResult> CheckAsync(PermissionValueCheckContext context)
{ {
var roles = context.Principal?.FindAll(AbpClaimTypes.Role).Select(c => c.Value).ToArray(); var roles = CurrentUser.Roles;
if (roles == null || !roles.Any()) if (roles == null || !roles.Any())
{ {
return PermissionGrantResult.Undefined; return PermissionGrantResult.Undefined;

9
framework/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Permissions/UserPermissionValueProvider.cs

@ -1,23 +1,26 @@
using System.Threading.Tasks; using System.Threading.Tasks;
using Volo.Abp.Security.Claims; using Volo.Abp.Security.Claims;
using Volo.Abp.Users;
namespace Volo.Abp.Authorization.Permissions namespace Volo.Abp.Authorization.Permissions
{ {
public class UserPermissionValueProvider : PermissionValueProvider public class UserPermissionValueProvider : PermissionValueProvider
{ {
protected ICurrentUser CurrentUser { get; }
public const string ProviderName = "User"; public const string ProviderName = "User";
public override string Name => ProviderName; public override string Name => ProviderName;
public UserPermissionValueProvider(IPermissionStore permissionStore) public UserPermissionValueProvider(ICurrentUser currentUser, IPermissionStore permissionStore)
: base(permissionStore) : base(permissionStore)
{ {
CurrentUser = currentUser;
} }
public override async Task<PermissionGrantResult> CheckAsync(PermissionValueCheckContext context) public override async Task<PermissionGrantResult> CheckAsync(PermissionValueCheckContext context)
{ {
var userId = context.Principal?.FindFirst(AbpClaimTypes.UserId)?.Value; var userId = CurrentUser.Id?.ToString();
if (userId == null) if (userId == null)
{ {

12
framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/CurrentClaimsPrincipalTenantResolveContributor.cs

@ -1,6 +1,5 @@
using System.Linq;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Volo.Abp.Security.Claims; using Volo.Abp.Users;
namespace Volo.Abp.MultiTenancy namespace Volo.Abp.MultiTenancy
{ {
@ -12,17 +11,14 @@ namespace Volo.Abp.MultiTenancy
public override void Resolve(ITenantResolveContext context) public override void Resolve(ITenantResolveContext context)
{ {
var principal = context.ServiceProvider.GetRequiredService<ICurrentPrincipalAccessor>().Principal; var currentUser = context.ServiceProvider.GetRequiredService<ICurrentUser>();
if (principal?.Identity?.IsAuthenticated != true) if (currentUser.IsAuthenticated != true)
{ {
return; return;
} }
context.Handled = true; context.Handled = true;
context.TenantIdOrName = principal context.TenantIdOrName = currentUser.TenantId?.ToString();
.Claims
.FirstOrDefault(c => c.Type == AbpClaimTypes.TenantId)
?.Value;
} }
} }
} }
Loading…
Cancel
Save