Enabling an Umbraco admin user to disable 2FA for a member (#13369)
* Fix Invalid authentication code bug
* Add translation keys for 2fa
* Display toggle for 2FA on member
* Add TwoFactorEnabled prop when saving member
* Handle disabling of 2FA
* Fix tests
* Changing obsolete msg
(cherry picked from commit af6b8fc5cb)
This commit is contained in:
committed by
Sebastiaan Janssen
parent
d6d4421a37
commit
dabc7bed9b
@@ -75,7 +75,8 @@ public class MemberControllerUnitTests
|
||||
IBackOfficeSecurityAccessor backOfficeSecurityAccessor,
|
||||
IPasswordChanger<MemberIdentityUser> passwordChanger,
|
||||
IOptions<GlobalSettings> globalSettings,
|
||||
IUser user)
|
||||
IUser user,
|
||||
ITwoFactorLoginService twoFactorLoginService)
|
||||
{
|
||||
// arrange
|
||||
SetupMemberTestData(out var fakeMemberData, out _, ContentSaveAction.SaveNew);
|
||||
@@ -87,7 +88,8 @@ public class MemberControllerUnitTests
|
||||
dataTypeService,
|
||||
backOfficeSecurityAccessor,
|
||||
passwordChanger,
|
||||
globalSettings);
|
||||
globalSettings,
|
||||
twoFactorLoginService);
|
||||
sut.ModelState.AddModelError("key", "Invalid model state");
|
||||
|
||||
Mock.Get(umbracoMembersUserManager)
|
||||
@@ -119,7 +121,8 @@ public class MemberControllerUnitTests
|
||||
IBackOfficeSecurity backOfficeSecurity,
|
||||
IPasswordChanger<MemberIdentityUser> passwordChanger,
|
||||
IOptions<GlobalSettings> globalSettings,
|
||||
IUser user)
|
||||
IUser user,
|
||||
ITwoFactorLoginService twoFactorLoginService)
|
||||
{
|
||||
// arrange
|
||||
var member = SetupMemberTestData(out var fakeMemberData, out var memberDisplay, ContentSaveAction.SaveNew);
|
||||
@@ -148,7 +151,8 @@ public class MemberControllerUnitTests
|
||||
dataTypeService,
|
||||
backOfficeSecurityAccessor,
|
||||
passwordChanger,
|
||||
globalSettings);
|
||||
globalSettings,
|
||||
twoFactorLoginService);
|
||||
|
||||
// act
|
||||
var result = await sut.PostSave(fakeMemberData);
|
||||
@@ -171,7 +175,8 @@ public class MemberControllerUnitTests
|
||||
IBackOfficeSecurity backOfficeSecurity,
|
||||
IPasswordChanger<MemberIdentityUser> passwordChanger,
|
||||
IOptions<GlobalSettings> globalSettings,
|
||||
IUser user)
|
||||
IUser user,
|
||||
ITwoFactorLoginService twoFactorLoginService)
|
||||
{
|
||||
// arrange
|
||||
var member = SetupMemberTestData(out var fakeMemberData, out var memberDisplay, ContentSaveAction.SaveNew);
|
||||
@@ -200,7 +205,8 @@ public class MemberControllerUnitTests
|
||||
dataTypeService,
|
||||
backOfficeSecurityAccessor,
|
||||
passwordChanger,
|
||||
globalSettings);
|
||||
globalSettings,
|
||||
twoFactorLoginService);
|
||||
|
||||
// act
|
||||
var result = await sut.PostSave(fakeMemberData);
|
||||
@@ -223,7 +229,8 @@ public class MemberControllerUnitTests
|
||||
IBackOfficeSecurity backOfficeSecurity,
|
||||
IPasswordChanger<MemberIdentityUser> passwordChanger,
|
||||
IOptions<GlobalSettings> globalSettings,
|
||||
IUser user)
|
||||
IUser user,
|
||||
ITwoFactorLoginService twoFactorLoginService)
|
||||
{
|
||||
// arrange
|
||||
var member = SetupMemberTestData(out var fakeMemberData, out var memberDisplay, ContentSaveAction.Save);
|
||||
@@ -262,7 +269,8 @@ public class MemberControllerUnitTests
|
||||
dataTypeService,
|
||||
backOfficeSecurityAccessor,
|
||||
passwordChanger,
|
||||
globalSettings);
|
||||
globalSettings,
|
||||
twoFactorLoginService);
|
||||
|
||||
// act
|
||||
var result = await sut.PostSave(fakeMemberData);
|
||||
@@ -285,7 +293,8 @@ public class MemberControllerUnitTests
|
||||
IBackOfficeSecurity backOfficeSecurity,
|
||||
IPasswordChanger<MemberIdentityUser> passwordChanger,
|
||||
IOptions<GlobalSettings> globalSettings,
|
||||
IUser user)
|
||||
IUser user,
|
||||
ITwoFactorLoginService twoFactorLoginService)
|
||||
{
|
||||
// arrange
|
||||
var member = SetupMemberTestData(out var fakeMemberData, out _, ContentSaveAction.Save);
|
||||
@@ -320,7 +329,8 @@ public class MemberControllerUnitTests
|
||||
dataTypeService,
|
||||
backOfficeSecurityAccessor,
|
||||
passwordChanger,
|
||||
globalSettings);
|
||||
globalSettings,
|
||||
twoFactorLoginService);
|
||||
|
||||
// act
|
||||
var result = await sut.PostSave(fakeMemberData);
|
||||
@@ -375,7 +385,8 @@ public class MemberControllerUnitTests
|
||||
IBackOfficeSecurity backOfficeSecurity,
|
||||
IPasswordChanger<MemberIdentityUser> passwordChanger,
|
||||
IOptions<GlobalSettings> globalSettings,
|
||||
IUser user)
|
||||
IUser user,
|
||||
ITwoFactorLoginService twoFactorLoginService)
|
||||
{
|
||||
// arrange
|
||||
var member = SetupMemberTestData(out var fakeMemberData, out _, ContentSaveAction.SaveNew);
|
||||
@@ -403,7 +414,8 @@ public class MemberControllerUnitTests
|
||||
dataTypeService,
|
||||
backOfficeSecurityAccessor,
|
||||
passwordChanger,
|
||||
globalSettings);
|
||||
globalSettings,
|
||||
twoFactorLoginService);
|
||||
|
||||
// act
|
||||
var result = sut.PostSave(fakeMemberData).Result;
|
||||
@@ -427,7 +439,8 @@ public class MemberControllerUnitTests
|
||||
IBackOfficeSecurity backOfficeSecurity,
|
||||
IPasswordChanger<MemberIdentityUser> passwordChanger,
|
||||
IOptions<GlobalSettings> globalSettings,
|
||||
IUser user)
|
||||
IUser user,
|
||||
ITwoFactorLoginService twoFactorLoginService)
|
||||
{
|
||||
// arrange
|
||||
var roleName = "anyrole";
|
||||
@@ -470,7 +483,8 @@ public class MemberControllerUnitTests
|
||||
dataTypeService,
|
||||
backOfficeSecurityAccessor,
|
||||
passwordChanger,
|
||||
globalSettings);
|
||||
globalSettings,
|
||||
twoFactorLoginService);
|
||||
|
||||
// act
|
||||
var result = await sut.PostSave(fakeMemberData);
|
||||
@@ -509,7 +523,8 @@ public class MemberControllerUnitTests
|
||||
IDataTypeService dataTypeService,
|
||||
IBackOfficeSecurityAccessor backOfficeSecurityAccessor,
|
||||
IPasswordChanger<MemberIdentityUser> passwordChanger,
|
||||
IOptions<GlobalSettings> globalSettings)
|
||||
IOptions<GlobalSettings> globalSettings,
|
||||
ITwoFactorLoginService twoFactorLoginService)
|
||||
{
|
||||
var httpContextAccessor = new HttpContextAccessor();
|
||||
|
||||
@@ -559,7 +574,8 @@ public class MemberControllerUnitTests
|
||||
memberGroupService,
|
||||
mockPasswordConfig.Object,
|
||||
contentTypeBaseServiceProvider.Object,
|
||||
propertyEditorCollection));
|
||||
propertyEditorCollection,
|
||||
twoFactorLoginService));
|
||||
|
||||
var map = new MapDefinitionCollection(() => new List<IMapDefinition>
|
||||
{
|
||||
@@ -608,7 +624,8 @@ public class MemberControllerUnitTests
|
||||
backOfficeSecurityAccessor,
|
||||
new ConfigurationEditorJsonSerializer(),
|
||||
passwordChanger,
|
||||
scopeProvider);
|
||||
scopeProvider,
|
||||
twoFactorLoginService);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -699,6 +716,11 @@ public class MemberControllerUnitTests
|
||||
$"{Constants.PropertyEditors.InternalGenericPropertiesPrefix}lockedOut",
|
||||
},
|
||||
new()
|
||||
{
|
||||
Alias =
|
||||
$"{Constants.PropertyEditors.InternalGenericPropertiesPrefix}twoFactorEnabled",
|
||||
},
|
||||
new()
|
||||
{
|
||||
Alias =
|
||||
$"{Constants.PropertyEditors.InternalGenericPropertiesPrefix}lastLockoutDate",
|
||||
|
||||
Reference in New Issue
Block a user