diff --git a/framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/TenantConfiguration.cs b/framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/TenantConfiguration.cs index 0ba64417a3..04e980de69 100644 --- a/framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/TenantConfiguration.cs +++ b/framework/src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/TenantConfiguration.cs @@ -1,11 +1,12 @@ using System; using JetBrains.Annotations; using Volo.Abp.Data; +using Volo.Abp.ObjectExtending; namespace Volo.Abp.MultiTenancy { [Serializable] - public class TenantConfiguration + public class TenantConfiguration : ExtensibleObject { public Guid Id { get; set; } @@ -15,7 +16,7 @@ namespace Volo.Abp.MultiTenancy public TenantConfiguration() { - + } public TenantConfiguration(Guid id, [NotNull] string name) @@ -28,4 +29,4 @@ namespace Volo.Abp.MultiTenancy ConnectionStrings = new ConnectionStrings(); } } -} \ No newline at end of file +} diff --git a/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/AbpUserClaimsPrincipalFactory.cs b/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/AbpUserClaimsPrincipalFactory.cs index 9831b03d5d..ad544a7856 100644 --- a/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/AbpUserClaimsPrincipalFactory.cs +++ b/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/AbpUserClaimsPrincipalFactory.cs @@ -4,27 +4,34 @@ using System.Security.Claims; using System.Threading.Tasks; using Microsoft.AspNetCore.Identity; using Microsoft.Extensions.Options; +using Volo.Abp.Data; using Volo.Abp.DependencyInjection; +using Volo.Abp.MultiTenancy; using Volo.Abp.Security.Claims; using Volo.Abp.Uow; namespace Volo.Abp.Identity { - public class AbpUserClaimsPrincipalFactory : UserClaimsPrincipalFactory, ITransientDependency + public class AbpUserClaimsPrincipalFactory : UserClaimsPrincipalFactory, + ITransientDependency { + protected ITenantStore TenantStore { get; } + public AbpUserClaimsPrincipalFactory( UserManager userManager, RoleManager roleManager, - IOptions options) + IOptions options, + ITenantStore tenantStore) : base( - userManager, - roleManager, - options) + userManager, + roleManager, + options) { + TenantStore = tenantStore; } [UnitOfWork] - public async override Task CreateAsync(IdentityUser user) + public override async Task CreateAsync(IdentityUser user) { var principal = await base.CreateAsync(user); var identity = principal.Identities.First(); @@ -49,7 +56,8 @@ namespace Volo.Abp.Identity identity.AddIfNotContains(new Claim(AbpClaimTypes.PhoneNumber, user.PhoneNumber)); } - identity.AddIfNotContains(new Claim(AbpClaimTypes.PhoneNumberVerified, user.PhoneNumberConfirmed.ToString())); + identity.AddIfNotContains( + new Claim(AbpClaimTypes.PhoneNumberVerified, user.PhoneNumberConfirmed.ToString())); if (!user.Email.IsNullOrWhiteSpace()) { @@ -58,6 +66,16 @@ namespace Volo.Abp.Identity identity.AddIfNotContains(new Claim(AbpClaimTypes.EmailVerified, user.EmailConfirmed.ToString())); + if (user.TenantId.HasValue) + { + var tenant = await TenantStore.FindAsync(user.TenantId.Value); + var editionId = tenant?.GetProperty(AbpClaimTypes.EditionId); + if (editionId != default(Guid)) + { + identity.AddIfNotContains(new Claim(AbpClaimTypes.EditionId, editionId.ToString())); + } + } + return principal; } }