From d9e0726431e3141f273047e5a14480dfb9847d4d Mon Sep 17 00:00:00 2001 From: Sam Hemelryk Date: Fri, 12 Nov 2010 07:53:55 +0000 Subject: [PATCH] lib MDL-1975 Users who have been auto logged in by guest are now redirected to login on capability exceptions rather than being shown the exception. --- lib/moodlelib.php | 1 + lib/setuplib.php | 7 ++++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/lib/moodlelib.php b/lib/moodlelib.php index 60dbcc95559..82b82b0be31 100644 --- a/lib/moodlelib.php +++ b/lib/moodlelib.php @@ -2330,6 +2330,7 @@ function require_login($courseorid = NULL, $autologinguest = true, $cm = NULL, $ } $lang = isset($SESSION->lang) ? $SESSION->lang : $CFG->lang; complete_user_login($guest, false); + $USER->autologinguest = true; $SESSION->lang = $lang; } else { //NOTE: $USER->site check was obsoleted by session test cookie, diff --git a/lib/setuplib.php b/lib/setuplib.php index ae941285873..116b4b484b1 100644 --- a/lib/setuplib.php +++ b/lib/setuplib.php @@ -274,11 +274,16 @@ class invalid_dataroot_permissions extends moodle_exception { * @return void -does not return. Terminates execution! */ function default_exception_handler($ex) { - global $DB, $OUTPUT; + global $CFG, $DB, $OUTPUT, $USER, $FULLME, $SESSION; // detect active db transactions, rollback and log as error abort_all_db_transactions(); + if (($ex instanceof required_capability_exception) && !CLI_SCRIPT && !AJAX_SCRIPT && !empty($CFG->autologinguests) && !empty($USER->autologinguest)) { + $SESSION->wantsurl = $FULLME; + redirect(get_login_url()); + } + $info = get_exception_info($ex); if (debugging('', DEBUG_MINIMAL)) {