V13: Clear username cache (#17815)
* Clear member username cache on delete * Also refresh cache on update
This commit is contained in:
@@ -30,4 +30,10 @@ public class MemberRepositoryUsernameCachePolicy : DefaultRepositoryCachePolicy<
|
||||
|
||||
return entity;
|
||||
}
|
||||
|
||||
public void DeleteByUserName(string key, string? username)
|
||||
{
|
||||
var cacheKey = GetEntityCacheKey(key + username);
|
||||
Cache.ClearByKey(cacheKey);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -38,6 +38,7 @@ public class MemberRepository : ContentRepositoryBase<int, IMember, MemberReposi
|
||||
private readonly ITagRepository _tagRepository;
|
||||
private bool _passwordConfigInitialized;
|
||||
private string? _passwordConfigJson;
|
||||
private const string UsernameCacheKey = "uRepo_userNameKey+";
|
||||
|
||||
public MemberRepository(
|
||||
IScopeAccessor scopeAccessor,
|
||||
@@ -228,7 +229,7 @@ public class MemberRepository : ContentRepositoryBase<int, IMember, MemberReposi
|
||||
}
|
||||
|
||||
public IMember? GetByUsername(string? username) =>
|
||||
_memberByUsernameCachePolicy.GetByUserName("uRepo_userNameKey+", username, PerformGetByUsername, PerformGetAllByUsername);
|
||||
_memberByUsernameCachePolicy.GetByUserName(UsernameCacheKey, username, PerformGetByUsername, PerformGetAllByUsername);
|
||||
|
||||
public int[] GetMemberIds(string[] usernames)
|
||||
{
|
||||
@@ -508,6 +509,12 @@ public class MemberRepository : ContentRepositoryBase<int, IMember, MemberReposi
|
||||
return sql;
|
||||
}
|
||||
|
||||
protected override void PersistDeletedItem(IMember entity)
|
||||
{
|
||||
_memberByUsernameCachePolicy.DeleteByUserName(UsernameCacheKey, entity.Username);
|
||||
base.PersistDeletedItem(entity);
|
||||
}
|
||||
|
||||
// TODO: move that one up to Versionable! or better: kill it!
|
||||
protected override Sql<ISqlContext> GetBaseQuery(bool isCount) =>
|
||||
GetBaseQuery(isCount ? QueryType.Count : QueryType.Single);
|
||||
@@ -837,6 +844,8 @@ public class MemberRepository : ContentRepositoryBase<int, IMember, MemberReposi
|
||||
|
||||
OnUowRefreshedEntity(new MemberRefreshNotification(entity, new EventMessages()));
|
||||
|
||||
_memberByUsernameCachePolicy.DeleteByUserName(UsernameCacheKey, entity.Username);
|
||||
|
||||
entity.ResetDirtyProperties();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user