diff --git a/admin/tool/mfa/classes/manager.php b/admin/tool/mfa/classes/manager.php index a63a0c58bf0..f8f972b55e5 100644 --- a/admin/tool/mfa/classes/manager.php +++ b/admin/tool/mfa/classes/manager.php @@ -530,6 +530,13 @@ class manager { } } + // Site policies from tool_policy. + $policyviewurl = new \moodle_url('/admin/tool/policy/view.php'); + $policyindexurl = new \moodle_url('/admin/tool/policy/index.php'); + if ($policyviewurl->compare($url, URL_MATCH_BASE) || $policyindexurl->compare($url, URL_MATCH_BASE)) { + return self::NO_REDIRECT; + } + // WS/AJAX check. if (WS_SERVER || AJAX_SCRIPT) { if (isset($SESSION->mfa_pending) && !empty($SESSION->mfa_pending)) { diff --git a/admin/tool/policy/tests/behat/acceptances.feature b/admin/tool/policy/tests/behat/acceptances.feature index 72babfef66a..3d60d989537 100644 --- a/admin/tool/policy/tests/behat/acceptances.feature +++ b/admin/tool/policy/tests/behat/acceptances.feature @@ -304,3 +304,12 @@ Feature: Viewing acceptances reports and accepting on behalf of other users And I log out When I log in as "user1" Then I should see "Calendar" + + Scenario: Policy acceptance is prioritised when MFA is enabled + Given the following config values are set as admin: + | enabled | 1 | tool_mfa | + And I log in as "user1" + And I press "Next" + And I set the field "I agree to the This site policy" to "1" + When I press "Next" + Then I should see "2-step verification"