diff --git a/admin/roles/manage.html b/admin/roles/manage.html index 41efee245e6..f8260fdb7cd 100755 --- a/admin/roles/manage.html +++ b/admin/roles/manage.html @@ -18,6 +18,7 @@ Role short name (ASCII): name; ?>" VALUE="1" permission) && $localoverride->permission==1){ echo 'checked="checked"'; }?>> permission) && $localoverride->permission==-1){ echo 'checked="checked"'; }?>> permission) && $localoverride->permission==-1000){ echo 'checked="checked"'; }?>> + riskbitmask) { + echo "T"; + } + if (RISK_ADMIN & (int)$capability->riskbitmask) { + echo "A"; + } + if (RISK_XSS & (int)$capability->riskbitmask) { + echo "X"; + } + if (RISK_PERSONAL & (int)$capability->riskbitmask) { + echo "P"; + } + if (RISK_SPAM & (int)$capability->riskbitmask) { + echo "S"; + } + ?> diff --git a/admin/roles/override.html b/admin/roles/override.html index 03c1144fa08..9db29bb2c03 100755 --- a/admin/roles/override.html +++ b/admin/roles/override.html @@ -15,6 +15,7 @@ if ($courseid) { + > + riskbitmask) { + echo "T"; + } + if (RISK_ADMIN & (int)$capability->riskbitmask) { + echo "A"; + } + if (RISK_XSS & (int)$capability->riskbitmask) { + echo "X"; + } + if (RISK_PERSONAL & (int)$capability->riskbitmask) { + echo "P"; + } + if (RISK_SPAM & (int)$capability->riskbitmask) { + echo "S"; + } + ?> diff --git a/lib/accesslib.php b/lib/accesslib.php index 2860e872663..a08efde48b9 100755 --- a/lib/accesslib.php +++ b/lib/accesslib.php @@ -30,6 +30,14 @@ define('CONTEXT_GROUP', 60); define('CONTEXT_MODULE', 70); define('CONTEXT_BLOCK', 80); +// capability risks - see http://docs.moodle.org/en/Hardening_new_Roles_system +define('RISK_MANAGETRUST', 0x0001); +define('RISK_ADMIN', 0x0002); +define('RISK_XSS', 0x0004); +define('RISK_PERSONAL', 0x0008); +define('RISK_SPAM', 0x0010); + + $context_cache = array(); // Cache of all used context objects for performance (by level and instance) $context_cache_id = array(); // Index to above cache by id diff --git a/lib/db/access.php b/lib/db/access.php index 1dd45d9081c..f641d260fd7 100644 --- a/lib/db/access.php +++ b/lib/db/access.php @@ -34,6 +34,7 @@ $moodle_capabilities = array( 'moodle/site:doanything' => array( + 'riskbitmask' => RISK_SPAM | RISK_PERSONAL | RISK_XSS | RISK_ADMIN, 'captype' => 'admin', 'contextlevel' => CONTEXT_SYSTEM ), @@ -45,30 +46,35 @@ $moodle_capabilities = array( 'moodle/legacy:student' => array( + 'riskbitmask' => RISK_SPAM, 'captype' => 'legacy', 'contextlevel' => CONTEXT_SYSTEM ), 'moodle/legacy:teacher' => array( + 'riskbitmask' => RISK_SPAM | RISK_PERSONAL, 'captype' => 'legacy', 'contextlevel' => CONTEXT_SYSTEM ), 'moodle/legacy:editingteacher' => array( + 'riskbitmask' => RISK_SPAM | RISK_PERSONAL | RISK_XSS, 'captype' => 'legacy', 'contextlevel' => CONTEXT_SYSTEM ), 'moodle/legacy:coursecreator' => array( + 'riskbitmask' => RISK_SPAM | RISK_PERSONAL | RISK_XSS, 'captype' => 'legacy', 'contextlevel' => CONTEXT_SYSTEM ), 'moodle/legacy:admin' => array( + 'riskbitmask' => RISK_SPAM | RISK_PERSONAL | RISK_XSS | RISK_ADMIN, 'captype' => 'legacy', 'contextlevel' => CONTEXT_SYSTEM ), @@ -76,6 +82,8 @@ $moodle_capabilities = array( 'moodle/site:config' => array( + 'riskbitmask' => RISK_SPAM | RISK_PERSONAL | RISK_XSS | RISK_ADMIN, + 'captype' => 'write', 'contextlevel' => CONTEXT_SYSTEM, 'legacy' => array( @@ -118,6 +126,8 @@ $moodle_capabilities = array( 'moodle/site:import' => array( + 'riskbitmask' => RISK_SPAM | RISK_PERSONAL | RISK_XSS, + 'captype' => 'write', 'contextlevel' => CONTEXT_SYSTEM, 'legacy' => array( @@ -132,6 +142,8 @@ $moodle_capabilities = array( 'moodle/site:backup' => array( + 'riskbitmask' => RISK_SPAM | RISK_PERSONAL | RISK_XSS, + 'captype' => 'write', 'contextlevel' => CONTEXT_SYSTEM, 'legacy' => array( @@ -146,6 +158,8 @@ $moodle_capabilities = array( 'moodle/site:restore' => array( + 'riskbitmask' => RISK_SPAM | RISK_PERSONAL | RISK_XSS, + 'captype' => 'write', 'contextlevel' => CONTEXT_SYSTEM, 'legacy' => array( @@ -160,6 +174,8 @@ $moodle_capabilities = array( 'moodle/site:manageblocks' => array( + 'riskbitmask' => RISK_SPAM | RISK_XSS, + 'captype' => 'write', 'contextlevel' => CONTEXT_SYSTEM, 'legacy' => array( @@ -216,6 +232,8 @@ $moodle_capabilities = array( 'moodle/site:viewreports' => array( + 'riskbitmask' => RISK_PERSONAL, + 'captype' => 'read', 'contextlevel' => CONTEXT_SYSTEM, 'legacy' => array( @@ -230,6 +248,8 @@ $moodle_capabilities = array( 'moodle/site:trustcontent' => array( + 'riskbitmask' => RISK_XSS, + 'captype' => 'write', 'contextlevel' => CONTEXT_SYSTEM, 'legacy' => array( @@ -244,6 +264,8 @@ $moodle_capabilities = array( 'moodle/user:create' => array( + 'riskbitmask' => RISK_SPAM | RISK_PERSONAL, + 'captype' => 'write', 'contextlevel' => CONTEXT_SYSTEM, 'legacy' => array( @@ -272,6 +294,8 @@ $moodle_capabilities = array( 'moodle/user:update' => array( + 'riskbitmask' => RISK_SPAM, + 'captype' => 'write', 'contextlevel' => CONTEXT_SYSTEM, 'legacy' => array( @@ -300,6 +324,8 @@ $moodle_capabilities = array( 'moodle/user:viewhiddendetails' => array( + 'riskbitmask' => RISK_PERSONAL, + 'captype' => 'read', 'contextlevel' => CONTEXT_SYSTEM, 'legacy' => array( @@ -438,6 +464,8 @@ $moodle_capabilities = array( 'moodle/course:create' => array( + 'riskbitmask' => RISK_XSS, + 'captype' => 'write', 'contextlevel' => CONTEXT_COURSE, 'legacy' => array( @@ -466,6 +494,8 @@ $moodle_capabilities = array( 'moodle/course:update' => array( + 'riskbitmask' => RISK_XSS, + 'captype' => 'write', 'contextlevel' => CONTEXT_COURSE, 'legacy' => array( @@ -494,6 +524,8 @@ $moodle_capabilities = array( 'moodle/course:viewhiddenuserfields' => array( + 'riskbitmask' => RISK_PERSONAL, + 'captype' => 'read', 'contextlevel' => CONTEXT_COURSE, 'legacy' => array( @@ -536,6 +568,8 @@ $moodle_capabilities = array( 'moodle/course:managefiles' => array( + 'riskbitmask' => RISK_XSS, + 'captype' => 'write', 'contextlevel' => CONTEXT_COURSE, 'legacy' => array( @@ -550,6 +584,8 @@ $moodle_capabilities = array( 'moodle/course:managequestions' => array( + 'riskbitmask' => RISK_XSS, + 'captype' => 'write', 'contextlevel' => CONTEXT_COURSE, 'legacy' => array( @@ -564,6 +600,8 @@ $moodle_capabilities = array( 'moodle/course:manageactivities' => array( + 'riskbitmask' => RISK_XSS, + 'captype' => 'write', 'contextlevel' => CONTEXT_COURSE, 'legacy' => array( @@ -704,6 +742,8 @@ $moodle_capabilities = array( 'moodle/blog:create' => array( + 'riskbitmask' => RISK_SPAM, + 'captype' => 'write', 'contextlevel' => CONTEXT_SYSTEM, 'legacy' => array( @@ -718,6 +758,8 @@ $moodle_capabilities = array( 'moodle/blog:manageofficialtags' => array( + 'riskbitmask' => RISK_SPAM, + 'captype' => 'write', 'contextlevel' => CONTEXT_SYSTEM, 'legacy' => array( @@ -732,6 +774,8 @@ $moodle_capabilities = array( 'moodle/blog:managepersonaltags' => array( + 'riskbitmask' => RISK_SPAM, + 'captype' => 'write', 'contextlevel' => CONTEXT_SYSTEM, 'legacy' => array( @@ -746,6 +790,8 @@ $moodle_capabilities = array( 'moodle/blog:manageentries' => array( + 'riskbitmask' => RISK_SPAM, + 'captype' => 'write', 'contextlevel' => CONTEXT_SYSTEM, 'legacy' => array( @@ -760,6 +806,8 @@ $moodle_capabilities = array( 'moodle/calendar:manageownentries' => array( + 'riskbitmask' => RISK_SPAM, + 'captype' => 'write', 'contextlevel' => CONTEXT_SYSTEM, 'legacy' => array( @@ -774,6 +822,8 @@ $moodle_capabilities = array( 'moodle/calendar:manageentries' => array( + 'riskbitmask' => RISK_SPAM, + 'captype' => 'write', 'contextlevel' => CONTEXT_SYSTEM, 'legacy' => array( @@ -828,6 +878,9 @@ $moodle_capabilities = array( ), 'moodle/user:editprofile' => array( + + 'riskbitmask' => RISK_SPAM, + 'captype' => 'read', 'contextlevel' => CONTEXT_USER, 'legacy' => array( @@ -841,6 +894,9 @@ $moodle_capabilities = array( ), 'moodle/question:import' => array( + + 'riskbitmask' => RISK_XSS, + 'captype' => 'write', 'contextlevel' => CONTEXT_COURSE, 'legacy' => array( @@ -880,6 +936,9 @@ $moodle_capabilities = array( ), 'moodle/question:manage' => array( + + 'riskbitmask' => RISK_XSS, + 'captype' => 'write', 'contextlevel' => CONTEXT_COURSE, 'legacy' => array( diff --git a/mod/chat/db/access.php b/mod/chat/db/access.php index f3b7238ddc3..b8d8a33a310 100644 --- a/mod/chat/db/access.php +++ b/mod/chat/db/access.php @@ -35,6 +35,8 @@ $mod_chat_capabilities = array( 'mod/chat:chat' => array( + 'riskbitmask' => RISK_SPAM, + 'captype' => 'write', 'contextlevel' => CONTEXT_MODULE, 'legacy' => array( diff --git a/mod/chat/version.php b/mod/chat/version.php index 98b7acb691c..01bbd01f6b9 100644 --- a/mod/chat/version.php +++ b/mod/chat/version.php @@ -5,7 +5,7 @@ /// This fragment is called by moodle_needs_upgrading() and /admin/index.php ///////////////////////////////////////////////////////////////////////////////// -$module->version = 2006091201; // The (date) version of this module +$module->version = 2006091800; // The (date) version of this module $module->requires = 2006080900; // Requires this Moodle version $module->cron = 300; // How often should cron check this module (seconds)? diff --git a/mod/data/db/access.php b/mod/data/db/access.php index fde55f1da4e..90625ba5d24 100644 --- a/mod/data/db/access.php +++ b/mod/data/db/access.php @@ -63,6 +63,8 @@ $mod_data_capabilities = array( 'mod/data:writeentry' => array( + 'riskbitmask' => RISK_SPAM, + 'captype' => 'write', 'contextlevel' => CONTEXT_MODULE, 'legacy' => array( @@ -77,6 +79,8 @@ $mod_data_capabilities = array( 'mod/data:comment' => array( + 'riskbitmask' => RISK_SPAM, + 'captype' => 'write', 'contextlevel' => CONTEXT_MODULE, 'legacy' => array( @@ -161,6 +165,8 @@ $mod_data_capabilities = array( 'mod/data:managetemplates' => array( + 'riskbitmask' => RISK_SPAM, + 'captype' => 'write', 'contextlevel' => CONTEXT_MODULE, 'legacy' => array( diff --git a/mod/data/version.php b/mod/data/version.php index a0ad66ace07..5fe726bab38 100644 --- a/mod/data/version.php +++ b/mod/data/version.php @@ -5,7 +5,7 @@ // This fragment is called by /admin/index.php //////////////////////////////////////////////////////////////////////////////// -$module->version = 2006091201; +$module->version = 2006091800; $module->requires = 2006080900; // Requires this Moodle version $module->cron = 60; diff --git a/mod/forum/db/access.php b/mod/forum/db/access.php index a0525701d8a..819e5089b9b 100644 --- a/mod/forum/db/access.php +++ b/mod/forum/db/access.php @@ -77,7 +77,9 @@ $mod_forum_capabilities = array( 'mod/forum:startdiscussion' => array( - 'captype' => 'read', + 'riskbitmask' => RISK_SPAM, + + 'captype' => 'write', 'contextlevel' => CONTEXT_MODULE, 'legacy' => array( 'guest' => CAP_PREVENT, @@ -91,7 +93,9 @@ $mod_forum_capabilities = array( 'mod/forum:replypost' => array( - 'captype' => 'read', + 'riskbitmask' => RISK_SPAM, + + 'captype' => 'write', 'contextlevel' => CONTEXT_MODULE, 'legacy' => array( 'guest' => CAP_PREVENT, @@ -133,7 +137,7 @@ $mod_forum_capabilities = array( 'mod/forum:rate' => array( - 'captype' => 'read', + 'captype' => 'write', 'contextlevel' => CONTEXT_MODULE, 'legacy' => array( 'guest' => CAP_PREVENT, @@ -147,7 +151,9 @@ $mod_forum_capabilities = array( 'mod/forum:createattachment' => array( - 'captype' => 'read', + 'riskbitmask' => RISK_SPAM, + + 'captype' => 'write', 'contextlevel' => CONTEXT_MODULE, 'legacy' => array( 'guest' => CAP_PREVENT, @@ -217,7 +223,9 @@ $mod_forum_capabilities = array( 'mod/forum:editanypost' => array( - 'captype' => 'read', + 'riskbitmask' => RISK_SPAM, + + 'captype' => 'write', 'contextlevel' => CONTEXT_MODULE, 'legacy' => array( 'guest' => CAP_PREVENT, diff --git a/mod/forum/version.php b/mod/forum/version.php index 61defdbcc4a..a797f5d48ac 100644 --- a/mod/forum/version.php +++ b/mod/forum/version.php @@ -5,7 +5,7 @@ // This fragment is called by /admin/index.php //////////////////////////////////////////////////////////////////////////////// -$module->version = 2006091201; +$module->version = 2006091800; $module->requires = 2006082600; // Requires this Moodle version $module->cron = 60; diff --git a/mod/glossary/db/access.php b/mod/glossary/db/access.php index 6f7423ced7c..a39cd21d8ba 100644 --- a/mod/glossary/db/access.php +++ b/mod/glossary/db/access.php @@ -49,6 +49,8 @@ $mod_glossary_capabilities = array( 'mod/glossary:write' => array( + 'riskbitmask' => RISK_SPAM, + 'captype' => 'write', 'contextlevel' => CONTEXT_MODULE, 'legacy' => array( @@ -91,6 +93,8 @@ $mod_glossary_capabilities = array( 'mod/glossary:comment' => array( + 'riskbitmask' => RISK_SPAM, + 'captype' => 'write', 'contextlevel' => CONTEXT_MODULE, 'legacy' => array( @@ -119,6 +123,8 @@ $mod_glossary_capabilities = array( 'mod/glossary:import' => array( + 'riskbitmask' => RISK_SPAM, + 'captype' => 'write', 'contextlevel' => CONTEXT_MODULE, 'legacy' => array( diff --git a/mod/glossary/version.php b/mod/glossary/version.php index 6dff8bef431..2a5427ad79c 100644 --- a/mod/glossary/version.php +++ b/mod/glossary/version.php @@ -5,7 +5,7 @@ /// This fragment is called by moodle_needs_upgrading() and /admin/index.php ///////////////////////////////////////////////////////////////////////////////// -$module->version = 2006091201; +$module->version = 2006091800; $module->requires = 2006082600; // Requires this Moodle version $module->cron = 0; // Period for cron to check this module (secs) diff --git a/mod/lesson/db/access.php b/mod/lesson/db/access.php index 747eac2380d..e7e71b258e2 100644 --- a/mod/lesson/db/access.php +++ b/mod/lesson/db/access.php @@ -22,6 +22,8 @@ $mod_lesson_capabilities = array( 'mod/lesson:edit' => array( + 'riskbitmask' => RISK_XSS, + 'captype' => 'write', 'contextlevel' => CONTEXT_MODULE, 'legacy' => array( diff --git a/mod/lesson/version.php b/mod/lesson/version.php index 1d6a3ab3d08..b722ead2df9 100644 --- a/mod/lesson/version.php +++ b/mod/lesson/version.php @@ -5,7 +5,7 @@ /// This fragment is called by moodle_needs_upgrading() and /admin/index.php ///////////////////////////////////////////////////////////////////////////////// -$module->version = 2006091202; // The current module version (Date: YYYYMMDDXX) +$module->version = 2006091801; // The current module version (Date: YYYYMMDDXX) $module->requires = 2006080900; // Requires this Moodle version $module->cron = 0; // Period for cron to check this module (secs) diff --git a/mod/wiki/db/access.php b/mod/wiki/db/access.php index f480bef5f1b..bb48107eb4c 100644 --- a/mod/wiki/db/access.php +++ b/mod/wiki/db/access.php @@ -22,6 +22,8 @@ $mod_wiki_capabilities = array( 'mod/wiki:participate' => array( + 'riskbitmask' => RISK_SPAM, + 'captype' => 'write', 'contextlevel' => CONTEXT_MODULE, 'legacy' => array( @@ -36,6 +38,8 @@ $mod_wiki_capabilities = array( 'mod/wiki:manage' => array( + 'riskbitmask' => RISK_SPAM, + 'captype' => 'write', 'contextlevel' => CONTEXT_MODULE, 'legacy' => array( diff --git a/mod/wiki/version.php b/mod/wiki/version.php index cb7b70f397b..87b1847a9d0 100644 --- a/mod/wiki/version.php +++ b/mod/wiki/version.php @@ -5,7 +5,7 @@ /// This fragment is called by moodle_needs_upgrading() and /admin/index.php ///////////////////////////////////////////////////////////////////////////////// -$module->version = 2006091202; // The current module version (Date: YYYYMMDDXX) +$module->version = 2006091800; // The current module version (Date: YYYYMMDDXX) $module->requires = 2006080900; // The current module version (Date: YYYYMMDDXX) $module->cron = 0; // Period for cron to check this module (secs) diff --git a/mod/workshop/db/access.php b/mod/workshop/db/access.php index b50387ab97a..c16de6759ff 100644 --- a/mod/workshop/db/access.php +++ b/mod/workshop/db/access.php @@ -22,6 +22,8 @@ $mod_workshop_capabilities = array( 'mod/workshop:participate' => array( + 'riskbitmask' => RISK_SPAM, + 'captype' => 'write', 'contextlevel' => CONTEXT_MODULE, 'legacy' => array( @@ -36,6 +38,8 @@ $mod_workshop_capabilities = array( 'mod/workshop:manage' => array( + 'riskbitmask' => RISK_SPAM, + 'captype' => 'write', 'contextlevel' => CONTEXT_MODULE, 'legacy' => array( diff --git a/mod/workshop/version.php b/mod/workshop/version.php index a0ad66ace07..5fe726bab38 100644 --- a/mod/workshop/version.php +++ b/mod/workshop/version.php @@ -5,7 +5,7 @@ // This fragment is called by /admin/index.php //////////////////////////////////////////////////////////////////////////////// -$module->version = 2006091201; +$module->version = 2006091800; $module->requires = 2006080900; // Requires this Moodle version $module->cron = 60; diff --git a/version.php b/version.php index 4a70d7c39a6..459f2478f18 100644 --- a/version.php +++ b/version.php @@ -6,7 +6,7 @@ // This is compared against the values stored in the database to determine // whether upgrades should be performed (see lib/db/*.php) - $version = 2006091804; // YYYYMMDD = date + $version = 2006091807; // YYYYMMDD = date // XY = increments within a single day $release = '1.7 dev'; // Human-friendly version name