MDL-78534 Authentication: MFA refactoring and clean up

General refactoring and cleanup of MFA code, to allow for easier
addition of UX improvements.
This commit is contained in:
Matt Porritt
2023-09-14 11:49:34 +10:00
parent f140a0dff9
commit 27ca1dee46
5 changed files with 124 additions and 88 deletions
@@ -45,7 +45,7 @@ class plugininfo_factor_test extends \advanced_testcase {
$this->setUser($user);
// Test that with no enabled factors, fallback is returned.
$this->assertEquals('fallback', \tool_mfa\plugininfo\factor::get_next_user_factor()->name);
$this->assertEquals('fallback', \tool_mfa\plugininfo\factor::get_next_user_login_factor()->name);
// Setup enabled totp factor for user.
set_config('enabled', 1, 'factor_totp');
@@ -57,11 +57,11 @@ class plugininfo_factor_test extends \advanced_testcase {
$this->assertNotEmpty($totpfactor->setup_user_factor((object) $totpdata));
// Test that factor now appears (from STATE_UNKNOWN).
$this->assertEquals('totp', \tool_mfa\plugininfo\factor::get_next_user_factor()->name);
$this->assertEquals('totp', \tool_mfa\plugininfo\factor::get_next_user_login_factor()->name);
// Now pass this factor, check for fallback.
$totpfactor->set_state(\tool_mfa\plugininfo\factor::STATE_PASS);
$this->assertEquals('fallback', \tool_mfa\plugininfo\factor::get_next_user_factor()->name);
$this->assertEquals('fallback', \tool_mfa\plugininfo\factor::get_next_user_login_factor()->name);
// Add in a no-input factor.
set_config('enabled', 1, 'factor_auth');
@@ -73,6 +73,6 @@ class plugininfo_factor_test extends \advanced_testcase {
// Check that the next factor is still the fallback factor.
$this->assertEquals(2, count(\tool_mfa\plugininfo\factor::get_active_user_factor_types()));
$this->assertEquals('fallback', \tool_mfa\plugininfo\factor::get_next_user_factor()->name);
$this->assertEquals('fallback', \tool_mfa\plugininfo\factor::get_next_user_login_factor()->name);
}
}