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/index.php b/admin/tool/policy/index.php index 1f6878c9307..18f22cc9610 100644 --- a/admin/tool/policy/index.php +++ b/admin/tool/policy/index.php @@ -58,7 +58,7 @@ $agreedocs = array_values(array_unique($agreedocs)); $declinedocs = array_values(array_unique($declinedocs)); $PAGE->set_context(context_system::instance()); -$PAGE->set_pagelayout('standard'); +$PAGE->set_pagelayout('secure'); $PAGE->set_url('/admin/tool/policy/index.php'); $PAGE->set_popup_notification_allowed(false); diff --git a/admin/tool/policy/tests/behat/acceptances.feature b/admin/tool/policy/tests/behat/acceptances.feature index 72babfef66a..9687af47782 100644 --- a/admin/tool/policy/tests/behat/acceptances.feature +++ b/admin/tool/policy/tests/behat/acceptances.feature @@ -304,3 +304,14 @@ 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 the following config values are set as admin: + | enabled | 1 | factor_email | + 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" diff --git a/admin/tool/policy/tests/behat/consent.feature b/admin/tool/policy/tests/behat/consent.feature index f26e8115fa8..03bddedcdc9 100644 --- a/admin/tool/policy/tests/behat/consent.feature +++ b/admin/tool/policy/tests/behat/consent.feature @@ -290,9 +290,6 @@ Feature: User must accept policy managed by this plugin when logging in and sign And I set the field "I agree to the This privacy policy." to "0" Then I should see "Please agree to the following policies:" And I should see "Before continuing you need to acknowledge all these policies." - # Confirm that user can not browse the site (edit their profile). - When I follow "Profile" in the user menu - Then I should see "Please agree to the following policies:" Scenario: Accept policy on login, accept all policies Given the following config values are set as admin: diff --git a/admin/tool/policy/view.php b/admin/tool/policy/view.php index 8b610eaa09c..c6728581b44 100644 --- a/admin/tool/policy/view.php +++ b/admin/tool/policy/view.php @@ -47,7 +47,7 @@ $numpolicy = optional_param('numpolicy', null, PARAM_INT); $totalpolicies = optional_param('totalpolicies', null, PARAM_INT); $PAGE->set_context(context_system::instance()); -$PAGE->set_pagelayout('standard'); +$PAGE->set_pagelayout('secure'); $viewpage = new page_viewdoc($policyid, $versionid, $returnurl, $behalfid, $manage, $numpolicy, $totalpolicies);