From: sam_marshall Date: Wed, 15 Nov 2006 13:36:57 +0000 (+0000) Subject: MDL-7513 - made it so a hack for Guest role only applies to that role and doesn't... X-Git-Url: http://git.mjollnir.org/gw?a=commitdiff_plain;h=39dee8f200baaf60a3afb4c5b8e25f80da7e42d1;p=moodle.git 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 --- 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;