Browse Source

Revert changes of the impersonator.

pull/5190/head
maliming 6 years ago
parent
commit
f8b9595670
  1. 8
      framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/CurrentTenant.cs
  2. 3
      framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/ICurrentTenant.cs
  3. 59
      framework/src/Volo.Abp.Security/System/Security/Principal/AbpClaimsIdentityExtensions.cs
  4. 10
      framework/src/Volo.Abp.Security/Volo/Abp/Security/Claims/AbpClaimTypes.cs
  5. 2
      framework/src/Volo.Abp.Security/Volo/Abp/Users/CurrentUser.cs
  6. 3
      framework/src/Volo.Abp.Security/Volo/Abp/Users/ICurrentUser.cs
  7. 13
      modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/AbpUserClaimsPrincipalFactory.cs
  8. 25
      modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/CurrentPrincipalAccessorExtensions.cs

8
framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/CurrentTenant.cs

@ -1,7 +1,5 @@
using System;
using System.Security.Principal;
using Volo.Abp.DependencyInjection;
using Volo.Abp.Security.Claims;
namespace Volo.Abp.MultiTenancy
{
@ -11,17 +9,13 @@ namespace Volo.Abp.MultiTenancy
public virtual Guid? Id => _currentTenantAccessor.Current?.TenantId;
public virtual Guid? ImpersonatorId => _principalAccessor.Principal?.FindTenantImpersonatorId();
public string Name => _currentTenantAccessor.Current?.Name;
private readonly ICurrentTenantAccessor _currentTenantAccessor;
private readonly ICurrentPrincipalAccessor _principalAccessor;
public CurrentTenant(ICurrentTenantAccessor currentTenantAccessor, ICurrentPrincipalAccessor principalAccessor)
public CurrentTenant(ICurrentTenantAccessor currentTenantAccessor)
{
_currentTenantAccessor = currentTenantAccessor;
_principalAccessor = principalAccessor;
}
public IDisposable Change(Guid? id, string name = null)

3
framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/ICurrentTenant.cs

@ -10,9 +10,6 @@ namespace Volo.Abp.MultiTenancy
[CanBeNull]
Guid? Id { get; }
[CanBeNull]
Guid? ImpersonatorId { get; }
[CanBeNull]
string Name { get; }

59
framework/src/Volo.Abp.Security/System/Security/Principal/AbpClaimsIdentityExtensions.cs

@ -39,37 +39,6 @@ namespace System.Security.Principal
return Guid.Parse(userIdOrNull.Value);
}
public static Guid? FindUserImpersonatorId([NotNull] this ClaimsPrincipal principal)
{
Check.NotNull(principal, nameof(principal));
var userImpersonatorIdOrNull = principal.Claims?.FirstOrDefault(c => c.Type == AbpClaimTypes.UserImpersonatorId);
if (userImpersonatorIdOrNull == null || userImpersonatorIdOrNull.Value.IsNullOrWhiteSpace())
{
return null;
}
if (Guid.TryParse(userImpersonatorIdOrNull.Value, out Guid result))
{
return result;
}
return null;
}
public static Guid? FindUserImpersonatorId([NotNull] this IIdentity identity)
{
Check.NotNull(identity, nameof(identity));
var claimsIdentity = identity as ClaimsIdentity;
var userImpersonatorIdOrNull = claimsIdentity?.Claims?.FirstOrDefault(c => c.Type == AbpClaimTypes.UserImpersonatorId);
if (userImpersonatorIdOrNull == null || userImpersonatorIdOrNull.Value.IsNullOrWhiteSpace())
{
return null;
}
return Guid.Parse(userImpersonatorIdOrNull.Value);
}
public static Guid? FindTenantId([NotNull] this ClaimsPrincipal principal)
{
Check.NotNull(principal, nameof(principal));
@ -98,34 +67,6 @@ namespace System.Security.Principal
return Guid.Parse(tenantIdOrNull.Value);
}
public static Guid? FindTenantImpersonatorId([NotNull] this ClaimsPrincipal principal)
{
Check.NotNull(principal, nameof(principal));
var tenantImpersonatorIdOrNull = principal.Claims?.FirstOrDefault(c => c.Type == AbpClaimTypes.TenantImpersonatorId);
if (tenantImpersonatorIdOrNull == null || tenantImpersonatorIdOrNull.Value.IsNullOrWhiteSpace())
{
return null;
}
return Guid.Parse(tenantImpersonatorIdOrNull.Value);
}
public static Guid? FindTenantImpersonatorId([NotNull] this IIdentity identity)
{
Check.NotNull(identity, nameof(identity));
var claimsIdentity = identity as ClaimsIdentity;
var tenantImpersonatorIdOrNull = claimsIdentity?.Claims?.FirstOrDefault(c => c.Type == AbpClaimTypes.TenantImpersonatorId);
if (tenantImpersonatorIdOrNull == null || tenantImpersonatorIdOrNull.Value.IsNullOrWhiteSpace())
{
return null;
}
return Guid.Parse(tenantImpersonatorIdOrNull.Value);
}
public static string FindClientId([NotNull] this ClaimsPrincipal principal)
{
Check.NotNull(principal, nameof(principal));

10
framework/src/Volo.Abp.Security/Volo/Abp/Security/Claims/AbpClaimTypes.cs

@ -28,11 +28,6 @@ namespace Volo.Abp.Security.Claims
/// </summary>
public static string UserId { get; set; } = ClaimTypes.NameIdentifier;
/// <summary>
/// Default: "user_impersonator_id".
/// </summary>
public static string UserImpersonatorId { get; set; } = "user_impersonator_id";
/// <summary>
/// Default: <see cref="ClaimTypes.Role"/>
/// </summary>
@ -63,11 +58,6 @@ namespace Volo.Abp.Security.Claims
/// </summary>
public static string TenantId { get; set; } = "tenantid";
/// <summary>
/// Default: "tenant_impersonator_id".
/// </summary>
public static string TenantImpersonatorId { get; set; } = "tenant_impersonator_id";
/// <summary>
/// Default: "editionid".
/// </summary>

2
framework/src/Volo.Abp.Security/Volo/Abp/Users/CurrentUser.cs

@ -15,8 +15,6 @@ namespace Volo.Abp.Users
public virtual Guid? Id => _principalAccessor.Principal?.FindUserId();
public virtual Guid? ImpersonatorId => _principalAccessor.Principal?.FindUserImpersonatorId();
public virtual string UserName => this.FindClaimValue(AbpClaimTypes.UserName);
public virtual string Name => this.FindClaimValue(AbpClaimTypes.Name);

3
framework/src/Volo.Abp.Security/Volo/Abp/Users/ICurrentUser.cs

@ -11,9 +11,6 @@ namespace Volo.Abp.Users
[CanBeNull]
Guid? Id { get; }
[CanBeNull]
Guid? ImpersonatorId { get; }
[CanBeNull]
string UserName { get; }

13
modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/AbpUserClaimsPrincipalFactory.cs

@ -64,19 +64,6 @@ namespace Volo.Abp.Identity
}
identity.AddIfNotContains(new Claim(AbpClaimTypes.EmailVerified, user.EmailConfirmed.ToString()));
if (CurrentUser.ImpersonatorId != user.Id || CurrentTenant.ImpersonatorId != user.TenantId)
{
if (CurrentUser.ImpersonatorId.HasValue)
{
identity.AddClaim(new Claim(AbpClaimTypes.UserImpersonatorId, CurrentUser.ImpersonatorId.ToString()));
}
if (CurrentTenant.ImpersonatorId.HasValue)
{
identity.AddClaim(new Claim(AbpClaimTypes.TenantImpersonatorId, CurrentTenant.ImpersonatorId.ToString()));
}
}
return principal;
}
}

25
modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/CurrentPrincipalAccessorExtensions.cs

@ -1,25 +0,0 @@
using System;
using System.Collections.Generic;
using System.Security.Claims;
using Volo.Abp.Security.Claims;
namespace Volo.Abp.Identity
{
public static class CurrentPrincipalAccessorExtensions
{
public static IDisposable ChangeImpersonatorId(this ICurrentPrincipalAccessor currentPrincipalAccessor, Guid? tenantImpersonatorId, Guid? userImpersonatorId)
{
var impersonatorClaims = new List<Claim>();
if (tenantImpersonatorId.HasValue)
{
impersonatorClaims.Add(new Claim(AbpClaimTypes.TenantImpersonatorId, tenantImpersonatorId.ToString()));
}
if (userImpersonatorId.HasValue)
{
impersonatorClaims.Add(new Claim(AbpClaimTypes.UserImpersonatorId, userImpersonatorId.ToString()));
}
return currentPrincipalAccessor.Change(impersonatorClaims);
}
}
}
Loading…
Cancel
Save