@ -397,24 +397,24 @@ This is already done for the startup template integration tests.
Abp abstracts the way that authentication creates `ClaimsPrincipal`. You can provide a custom `IAbpClaimsPrincipalContributor` to add additional claims.
Example of add `EditionId` of current tenant to user claims:
Example of add `SocialSecurityNumber` of current tenant to user claims:
```csharp
public class EditionClaimsPrincipalContributor : IAbpClaimsPrincipalContributor, ITransientDependency
public class SocialSecurityNumberClaimsPrincipalContributor : IAbpClaimsPrincipalContributor, ITransientDependency
{
public async Task ContributeAsync(AbpClaimsPrincipalContributorContext context)
{
var identity = context.ClaimsPrincipal.Identities.FirstOrDefault();
if (identity != null)
{
var currentTenant = context.ServiceProvider.GetRequiredService<ICurrentTenant>();
if (currentTenant.Id != null)
var currentUser = context.ServiceProvider.GetRequiredService<ICurrentUser>();
if (currentUser.Id.HasValue)
{
var tenantRepository = context.ServiceProvider.GetRequiredService<ITenantRepository>();
var tenant = await tenantRepository.FindAsync(currentTenant.Id.Value);
if (tenant?.EditionId != null)
var userManager = context.ServiceProvider.GetRequiredService<IdentityUserManager>();
var user = await userManager.GetByIdAsync(currentUser.Id.Value);