diff --git a/src/Umbraco.Web.Common/Security/MemberManager.cs b/src/Umbraco.Web.Common/Security/MemberManager.cs
index 19be3de489..95d6d5b635 100644
--- a/src/Umbraco.Web.Common/Security/MemberManager.cs
+++ b/src/Umbraco.Web.Common/Security/MemberManager.cs
@@ -50,7 +50,7 @@ public class MemberManager : UmbracoUserManager
- public async Task IsMemberAuthorizedAsync(
+ public virtual async Task IsMemberAuthorizedAsync(
IEnumerable? allowTypes = null,
IEnumerable? allowGroups = null,
IEnumerable? allowMembers = null)
@@ -122,14 +122,14 @@ public class MemberManager : UmbracoUserManager
- public bool IsLoggedIn()
+ public virtual bool IsLoggedIn()
{
HttpContext? httpContext = _httpContextAccessor.HttpContext;
return httpContext?.User.Identity?.IsAuthenticated ?? false;
}
///
- public async Task MemberHasAccessAsync(string path)
+ public virtual async Task MemberHasAccessAsync(string path)
{
if (await IsProtectedAsync(path))
{
@@ -140,7 +140,7 @@ public class MemberManager : UmbracoUserManager
- public async Task> MemberHasAccessAsync(IEnumerable paths)
+ public virtual async Task> MemberHasAccessAsync(IEnumerable paths)
{
IReadOnlyDictionary protectedPaths = await IsProtectedAsync(paths);
@@ -163,10 +163,10 @@ public class MemberManager : UmbracoUserManager
/// this is a cached call
///
- public Task IsProtectedAsync(string path) => Task.FromResult(_publicAccessService.IsProtected(path).Success);
+ public virtual Task IsProtectedAsync(string path) => Task.FromResult(_publicAccessService.IsProtected(path).Success);
///
- public Task> IsProtectedAsync(IEnumerable paths)
+ public virtual Task> IsProtectedAsync(IEnumerable paths)
{
var result = new Dictionary();
foreach (var path in paths)
@@ -179,7 +179,7 @@ public class MemberManager : UmbracoUserManager
- public async Task GetCurrentMemberAsync()
+ public virtual async Task GetCurrentMemberAsync()
{
if (_currentMember == null)
{
@@ -194,7 +194,7 @@ public class MemberManager : UmbracoUserManager _store.GetPublishedMember(user);
+ public virtual IPublishedContent? AsPublishedMember(MemberIdentityUser user) => _store.GetPublishedMember(user);
///
/// This will check if the member has access to this path
diff --git a/src/Umbraco.Web.Common/Security/MemberSignInManager.cs b/src/Umbraco.Web.Common/Security/MemberSignInManager.cs
index 4517a0d865..c9c7f44805 100644
--- a/src/Umbraco.Web.Common/Security/MemberSignInManager.cs
+++ b/src/Umbraco.Web.Common/Security/MemberSignInManager.cs
@@ -126,7 +126,7 @@ public class MemberSignInManager : UmbracoSignInManager, IMe
///
/// Custom ExternalLoginSignInAsync overload for handling external sign in with auto-linking
///
- public async Task ExternalLoginSignInAsync(ExternalLoginInfo loginInfo, bool isPersistent, bool bypassTwoFactor = false)
+ public virtual async Task ExternalLoginSignInAsync(ExternalLoginInfo loginInfo, bool isPersistent, bool bypassTwoFactor = false)
{
// borrowed from https://github.com/dotnet/aspnetcore/blob/master/src/Identity/Core/src/SignInManager.cs
// to be able to deal with auto-linking and reduce duplicate lookups