From 39dee8f200baaf60a3afb4c5b8e25f80da7e42d1 Mon Sep 17 00:00:00 2001 From: sam_marshall Date: Wed, 15 Nov 2006 13:36:57 +0000 Subject: [PATCH] MDL-7513 - made it so a hack for Guest role only applies to that role and doesn't remove the course:view capability from other roles at site level when specifically assigned --- lib/accesslib.php | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/lib/accesslib.php b/lib/accesslib.php index c057e0b74b..cae0f38135 100755 --- a/lib/accesslib.php +++ b/lib/accesslib.php @@ -130,17 +130,17 @@ function load_defaultuser_role() { if ($capabilities = get_records_select('role_capabilities', "roleid = $CFG->defaultuserroleid AND contextid = $sitecontext->id AND permission <> 0")) { foreach ($capabilities as $capability) { - if (!isset($USER->capabilities[$sitecontext->id][$capability->capability])) { // Don't overwrite + // Don't overwrite capabilities from real role... + if (!isset($USER->capabilities[$sitecontext->id][$capability->capability]) + // ...and if the default role is a guest role, then don't copy legacy:guest, + // otherwise this user could get confused with a REAL guest. Also don't copy + // course:view, which is a hack that's necessary because guest roles are + // not really handled properly (see MDL-7513) + && (($capability->capability!='moodle/legacy:guest' + && $capability->capability!='moodle/course:view') || $USER->username=='guest')) { $USER->capabilities[$sitecontext->id][$capability->capability] = $capability->permission; } } - - // SPECIAL EXCEPTION: If the default user role is actually a guest role, then - // remove some capabilities so this user doesn't get confused with a REAL guest - if (isset($USER->capabilities[$sitecontext->id]['moodle/legacy:guest']) and $USER->username != 'guest') { - unset($USER->capabilities[$sitecontext->id]['moodle/legacy:guest']); - unset($USER->capabilities[$sitecontext->id]['moodle/course:view']); // No access to courses by default - } } return true; -- 2.39.5