|
|
|
@ -1,5 +1,7 @@ |
|
|
|
using System.Security.Principal; |
|
|
|
using System; |
|
|
|
using System.Security.Principal; |
|
|
|
using System.Threading.Tasks; |
|
|
|
using Volo.Abp.MultiTenancy; |
|
|
|
using Volo.Abp.Security.Claims; |
|
|
|
|
|
|
|
namespace Volo.Abp.Features; |
|
|
|
@ -12,15 +14,25 @@ public class EditionFeatureValueProvider : FeatureValueProvider |
|
|
|
|
|
|
|
protected ICurrentPrincipalAccessor PrincipalAccessor; |
|
|
|
|
|
|
|
public EditionFeatureValueProvider(IFeatureStore featureStore, ICurrentPrincipalAccessor principalAccessor) |
|
|
|
protected ITenantStore TenantStore { get; } |
|
|
|
|
|
|
|
protected ICurrentTenant CurrentTenant { get; } |
|
|
|
|
|
|
|
public EditionFeatureValueProvider( |
|
|
|
IFeatureStore featureStore, |
|
|
|
ICurrentPrincipalAccessor principalAccessor, |
|
|
|
ITenantStore tenantStore, |
|
|
|
ICurrentTenant currentTenant) |
|
|
|
: base(featureStore) |
|
|
|
{ |
|
|
|
PrincipalAccessor = principalAccessor; |
|
|
|
TenantStore = tenantStore; |
|
|
|
CurrentTenant = currentTenant; |
|
|
|
} |
|
|
|
|
|
|
|
public override async Task<string?> GetOrNullAsync(FeatureDefinition feature) |
|
|
|
public async override Task<string?> GetOrNullAsync(FeatureDefinition feature) |
|
|
|
{ |
|
|
|
var editionId = PrincipalAccessor.Principal?.FindEditionId(); |
|
|
|
var editionId = await GetEditionIdAsync(); |
|
|
|
if (editionId == null) |
|
|
|
{ |
|
|
|
return null; |
|
|
|
@ -28,4 +40,21 @@ public class EditionFeatureValueProvider : FeatureValueProvider |
|
|
|
|
|
|
|
return await FeatureStore.GetOrNullAsync(feature.Name, Name, editionId.Value.ToString()); |
|
|
|
} |
|
|
|
|
|
|
|
protected virtual async Task<Guid?> GetEditionIdAsync() |
|
|
|
{ |
|
|
|
var editionId = PrincipalAccessor.Principal?.FindEditionId(); |
|
|
|
if (editionId != null) |
|
|
|
{ |
|
|
|
return editionId; |
|
|
|
} |
|
|
|
|
|
|
|
if (CurrentTenant.Id == null) |
|
|
|
{ |
|
|
|
return null; |
|
|
|
} |
|
|
|
|
|
|
|
var tenant = await TenantStore.FindAsync(CurrentTenant.Id.Value); |
|
|
|
return tenant?.EditionId; |
|
|
|
} |
|
|
|
} |
|
|
|
|