Browse Source

Update `UserEntityUpdatedEventHandler `.

pull/18064/head
maliming 3 years ago
parent
commit
f6e844851e
  1. 8
      modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityDynamicClaimsPrincipalContributorCache.cs
  2. 20
      modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/UserUpdatedEventHandler.cs

8
modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityDynamicClaimsPrincipalContributorCache.cs

@ -53,13 +53,7 @@ public class IdentityDynamicClaimsPrincipalContributorCache : ITransientDependen
{
Logger.LogDebug($"Filling dynamic claims cache for user: {userId}");
var user = await UserManager.FindByIdAsync(userId.ToString());
if (user == null)
{
Logger.LogWarning($"User not found: {userId}");
return new List<AbpClaimCacheItem>();
}
var user = await UserManager.GetByIdAsync(userId);
var principal = await UserClaimsPrincipalFactory.CreateAsync(user);
return principal.Identities.FirstOrDefault()?.Claims
.Where(c => AbpClaimsPrincipalFactoryOptions.Value.DynamicClaims.Contains(c.Type))

20
modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/UserUpdatedEventHandler.cs

@ -1,3 +1,4 @@
using System;
using System.Threading.Tasks;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Logging.Abstractions;
@ -8,7 +9,10 @@ using Volo.Abp.Uow;
namespace Volo.Abp.Identity;
public class UserEntityUpdatedEventHandler : ILocalEventHandler<EntityUpdatedEventData<IdentityUser>>, ITransientDependency
public class UserEntityUpdatedEventHandler :
ILocalEventHandler<EntityUpdatedEventData<IdentityUser>>,
ILocalEventHandler<EntityDeletedEventData<IdentityUser>>,
ITransientDependency
{
public ILogger<UserEntityUpdatedEventHandler> Logger { get; set; }
@ -23,8 +27,18 @@ public class UserEntityUpdatedEventHandler : ILocalEventHandler<EntityUpdatedEve
[UnitOfWork]
public virtual async Task HandleEventAsync(EntityUpdatedEventData<IdentityUser> eventData)
{
var userId = eventData.Entity.Id;
await ClearAsync(eventData.Entity.Id, eventData.Entity.TenantId);
}
[UnitOfWork]
public virtual async Task HandleEventAsync(EntityDeletedEventData<IdentityUser> eventData)
{
await ClearAsync(eventData.Entity.Id, eventData.Entity.TenantId);
}
protected virtual async Task ClearAsync(Guid userId, Guid? tenantId)
{
Logger.LogDebug($"Clearing dynamic claims cache for user: {userId}");
await _cache.ClearAsync(userId, eventData.Entity.TenantId);
await _cache.ClearAsync(userId, tenantId);
}
}

Loading…
Cancel
Save