Skip to content

Commit d451390

Browse files
Zeegaanelit0451
authored andcommitted
V13: Clear username cache (#17815)
* Clear member username cache on delete * Also refresh cache on update
1 parent cb88cbb commit d451390

File tree

2 files changed

+16
-1
lines changed

2 files changed

+16
-1
lines changed

src/Umbraco.Infrastructure/Cache/MemberRepositoryUsernameCachePolicy.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,4 +30,10 @@ public MemberRepositoryUsernameCachePolicy(IAppPolicyCache cache, IScopeAccessor
3030

3131
return entity;
3232
}
33+
34+
public void DeleteByUserName(string key, string? username)
35+
{
36+
var cacheKey = GetEntityCacheKey(key + username);
37+
Cache.ClearByKey(cacheKey);
38+
}
3339
}

src/Umbraco.Infrastructure/Persistence/Repositories/Implement/MemberRepository.cs

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ public class MemberRepository : ContentRepositoryBase<int, IMember, MemberReposi
3939
private readonly ITagRepository _tagRepository;
4040
private bool _passwordConfigInitialized;
4141
private string? _passwordConfigJson;
42+
private const string UsernameCacheKey = "uRepo_userNameKey+";
4243

4344
public MemberRepository(
4445
IScopeAccessor scopeAccessor,
@@ -326,7 +327,7 @@ public override IEnumerable<IMember> GetPage(
326327
}
327328

328329
public IMember? GetByUsername(string? username) =>
329-
_memberByUsernameCachePolicy.GetByUserName("uRepo_userNameKey+", username, PerformGetByUsername, PerformGetAllByUsername);
330+
_memberByUsernameCachePolicy.GetByUserName(UsernameCacheKey, username, PerformGetByUsername, PerformGetAllByUsername);
330331

331332
public int[] GetMemberIds(string[] usernames)
332333
{
@@ -606,6 +607,12 @@ protected virtual Sql<ISqlContext> GetBaseQuery(QueryType queryType, bool curren
606607
return sql;
607608
}
608609

610+
protected override void PersistDeletedItem(IMember entity)
611+
{
612+
_memberByUsernameCachePolicy.DeleteByUserName(UsernameCacheKey, entity.Username);
613+
base.PersistDeletedItem(entity);
614+
}
615+
609616
// TODO: move that one up to Versionable! or better: kill it!
610617
protected override Sql<ISqlContext> GetBaseQuery(bool isCount) =>
611618
GetBaseQuery(isCount ? QueryType.Count : QueryType.Single);
@@ -936,6 +943,8 @@ protected override void PersistUpdatedItem(IMember entity)
936943

937944
OnUowRefreshedEntity(new MemberRefreshNotification(entity, new EventMessages()));
938945

946+
_memberByUsernameCachePolicy.DeleteByUserName(UsernameCacheKey, entity.Username);
947+
939948
entity.ResetDirtyProperties();
940949
}
941950

0 commit comments

Comments
 (0)