From a2dc9ff8e3a9b4bcf57dc7c791ec898ce8aa7efd Mon Sep 17 00:00:00 2001 From: Robbie Averill Date: Mon, 24 Jun 2019 11:08:24 +1200 Subject: [PATCH] FIX No longer redirects to MFA when no methods are installed on the system --- src/Service/EnforcementManager.php | 4 ++++ tests/php/Service/EnforcementManagerTest.php | 12 ++++++++++++ 2 files changed, 16 insertions(+) diff --git a/src/Service/EnforcementManager.php b/src/Service/EnforcementManager.php index 1b4fd762..5b6b164c 100644 --- a/src/Service/EnforcementManager.php +++ b/src/Service/EnforcementManager.php @@ -100,6 +100,10 @@ public function shouldRedirectToMFA(Member $member): bool return false; } + if (empty(MethodRegistry::singleton()->getMethods())) { + return false; + } + if ($member->RegisteredMFAMethods()->exists()) { return true; } diff --git a/tests/php/Service/EnforcementManagerTest.php b/tests/php/Service/EnforcementManagerTest.php index 9a370e0c..1d972bc2 100644 --- a/tests/php/Service/EnforcementManagerTest.php +++ b/tests/php/Service/EnforcementManagerTest.php @@ -153,6 +153,18 @@ public function testShouldNotRedirectToMFAWhenConfigIsDisabled() $this->assertFalse($shouldRedirect); } + public function testShouldNotRedirectToMFAWhenNoMethodsAreRegisteredInTheSystem() + { + $this->setSiteConfig(['MFARequired' => true]); + MethodRegistry::config()->set('methods', []); + + /** @var Member $member */ + $member = $this->objFromFixture(Member::class, 'sally_smith'); + $this->logInAs($member); + + $this->assertFalse(EnforcementManager::create()->shouldRedirectToMFA($member)); + } + /** * Helper method for changing the current SiteConfig values *