From 0c30fdc9248877842ea4eb50533ce324e6480191 Mon Sep 17 00:00:00 2001 From: vyshane Date: Fri, 11 Aug 2006 02:44:42 +0000 Subject: [PATCH] Modified to support fresh installation of new Roles System. --- admin/index.php | 27 ++++++++++++++++++++++++--- admin/user.php | 49 +++++++++++++++++++++++++++++++++++++------------ 2 files changed, 61 insertions(+), 15 deletions(-) diff --git a/admin/index.php b/admin/index.php index 7b855f77bd8..4f03811417c 100644 --- a/admin/index.php +++ b/admin/index.php @@ -127,6 +127,12 @@ $db->debug = true; if (modify_database("$CFG->libdir/db/$CFG->dbtype.sql")) { $db->debug = false; + + // Install the roles system. + moodle_install_roles(); + if (!update_capabilities()) { + error('Had trouble installing the core capabilities for the Roles System'); + } notify($strdatabasesuccess, "green"); } else { $db->debug = false; @@ -171,10 +177,13 @@ $db->debug=true; if (main_upgrade($CFG->version)) { if (empty($CFG->rolesactive)) { - moodle_upgrade_roles_system_17(); + // Upgrade to the roles system. + moodle_install_roles(); } if (!update_capabilities()) { - error('Had trouble upgrading the core capabilities for Roles'); + error('Had trouble upgrading the core capabilities for the Roles System'); + } else { + set_config('rolesactive', 1); } $db->debug=false; if (set_config("version", $version)) { @@ -308,8 +317,20 @@ } } + +////////////////////////////////////////////////////////////////////////////// +// +// +// NOTE: We aren't going to have a user_admin table anymore. FIX below! +// We need to assign the "admin" user to the default admin role at some point! +// +// +////////////////////////////////////////////////////////////////////////////// + + /// Set up the admin user - if (! record_exists("user_admins")) { // No admin user yet + //if (!record_exists("user_admins")) { // No admin user yet + if (!$CFG->rolesactive) { redirect("user.php"); } diff --git a/admin/user.php b/admin/user.php index 7da4d146363..7e906aa2f26 100644 --- a/admin/user.php +++ b/admin/user.php @@ -22,7 +22,9 @@ $context = get_context_instance(CONTEXT_SYSTEM, SITEID); - if (! record_exists("user_admins")) { // No admin user yet + + //if (! record_exists("user_admins")) { // No admin user yet + if (!$CFG->rolesactive) { // No admin user yet. $user->firstname = get_string("admin"); $user->lastname = get_string("user"); @@ -38,20 +40,28 @@ error("SERIOUS ERROR: Could not create admin user record !!!"); } + $admin->userid = $user->id; if (! insert_record("user_admins", $admin)) { error("Could not make user $user->id an admin !!!"); } - if (! $user = get_record("user", "id", $user->id)) { // Double check + if (! $user = get_record("user", "id", $user->id)) { // Double check. error("User ID was incorrect (can't find it)"); } + + // Assign the default admin role to the new user. + $adminrole = get_record('role', 'name', get_string('administrator')); + role_assign($adminrole->id, $user->id, 0, $context->id); + set_config('rolesactive', 1); + + + // Assign as a teacher in the site-level course. if (! $site = get_site()) { error("Could not find site-level course"); } - $teacher->userid = $user->id; $teacher->course = $site->id; $teacher->authority = 1; @@ -59,6 +69,8 @@ error("Could not make user $id a teacher of site-level course !!!"); } + + // Log the user in. $USER = $user; $USER->loggedin = true; $USER->sessionIP = md5(getremoteaddr()); // Store the current IP in the session @@ -66,7 +78,9 @@ $USER->admin = true; $USER->teacher["$site->id"] = true; $USER->newadminuser = true; - sesskey(); // for added security, used to check script parameters + sesskey(); // For added security, used to check script parameters + load_user_capability(); + redirect("$CFG->wwwroot/user/edit.php?id=$user->id&course=$site->id"); exit; @@ -79,11 +93,13 @@ require_login(); - if (!isadmin()) { - error("You must be an administrator to edit users this way."); - } - - if ($newuser and confirm_sesskey()) { // Create a new user + + if ($newuser && confirm_sesskey()) { // Create a new user + + if (!has_capability('moodle/user:create', $context->id)) { + error('You do not have the required permission to create new users.'); + } + $user->auth = "manual"; $user->firstname = ""; $user->lastname = ""; @@ -103,7 +119,11 @@ redirect("$CFG->wwwroot/user/edit.php?id=$user->id&course=$site->id"); } else { // List all users for editing - + + if (!has_capability('moodle/user:update', $context->id)) { + error('You do not have the required permission to edit users.'); + } + $stredituser = get_string("edituser"); $stradministration = get_string("administration"); $strusers = get_string("users"); @@ -140,7 +160,12 @@ notify(get_string("usernotconfirmed", "", fullname($user, true))); } - } else if ($delete and confirm_sesskey() and has_capability('moodle/user:delete', $context->id)) { // Delete a selected user, after confirmation + } else if ($delete and confirm_sesskey()) { // Delete a selected user, after confirmation + + if (!has_capability('moodle/user:delete', $context->id)) { + error('You do not have the required permission to delete a user.'); + } + if (!$user = get_record("user", "id", "$delete")) { error("No such user!"); } @@ -376,4 +401,4 @@ print_footer(); } -?> +?> \ No newline at end of file