From 9c6cf2c1fae5fc546068f558f3e2977e62dd620b Mon Sep 17 00:00:00 2001 From: Chris Hood Date: Sun, 17 Feb 2013 14:11:43 +1000 Subject: [PATCH] re-rolled patch for spliting administer users permissions --- .../Drupal/contact/Tests/ContactPersonalTest.php | 2 +- .../Drupal/contact/Tests/ContactSitewideTest.php | 2 +- .../lib/Drupal/field_ui/Tests/AlterTest.php | 3 ++- .../lib/Drupal/field_ui/Tests/FieldUiTestBase.php | 2 +- .../lib/Drupal/user/Tests/UserPermissionsTest.php | 2 +- core/modules/user/user.install | 21 ++++++++++++++++++++ core/modules/user/user.module | 8 ++++++-- 7 files changed, 33 insertions(+), 7 deletions(-) diff --git a/core/modules/contact/lib/Drupal/contact/Tests/ContactPersonalTest.php b/core/modules/contact/lib/Drupal/contact/Tests/ContactPersonalTest.php index bb7d7d4..f6ae2c3 100644 --- a/core/modules/contact/lib/Drupal/contact/Tests/ContactPersonalTest.php +++ b/core/modules/contact/lib/Drupal/contact/Tests/ContactPersonalTest.php @@ -54,7 +54,7 @@ function setUp() { parent::setUp(); // Create an admin user. - $this->admin_user = $this->drupalCreateUser(array('administer contact forms', 'administer users')); + $this->admin_user = $this->drupalCreateUser(array('administer contact forms', 'administer users', 'administer user settings')); // Create some normal users with their contact forms enabled by default. config('contact.settings')->set('user_default_enabled', 1)->save(); diff --git a/core/modules/contact/lib/Drupal/contact/Tests/ContactSitewideTest.php b/core/modules/contact/lib/Drupal/contact/Tests/ContactSitewideTest.php index fd5dd75..e17d7ee 100644 --- a/core/modules/contact/lib/Drupal/contact/Tests/ContactSitewideTest.php +++ b/core/modules/contact/lib/Drupal/contact/Tests/ContactSitewideTest.php @@ -34,7 +34,7 @@ public static function getInfo() { */ function testSiteWideContact() { // Create and login administrative user. - $admin_user = $this->drupalCreateUser(array('access site-wide contact form', 'administer contact forms', 'administer users')); + $admin_user = $this->drupalCreateUser(array('access site-wide contact form', 'administer contact forms', 'administer user settings')); $this->drupalLogin($admin_user); $flood_limit = 3; diff --git a/core/modules/field_ui/lib/Drupal/field_ui/Tests/AlterTest.php b/core/modules/field_ui/lib/Drupal/field_ui/Tests/AlterTest.php index 016b9d0..f81c07a 100644 --- a/core/modules/field_ui/lib/Drupal/field_ui/Tests/AlterTest.php +++ b/core/modules/field_ui/lib/Drupal/field_ui/Tests/AlterTest.php @@ -37,7 +37,8 @@ function setUp() { $this->drupalCreateContentType(array('type' => 'article', 'name' => 'Article')); // Create test user. - $admin_user = $this->drupalCreateUser(array('access content', 'administer content types', 'administer node fields', 'administer users', 'administer user fields')); + $admin_user = $this->drupalCreateUser(array('access content', 'administer content types', 'administer node fields', 'administer user settings', 'administer user fields')); + $this->drupalLogin($admin_user); } diff --git a/core/modules/field_ui/lib/Drupal/field_ui/Tests/FieldUiTestBase.php b/core/modules/field_ui/lib/Drupal/field_ui/Tests/FieldUiTestBase.php index 2d3fb98..e1aadc5 100644 --- a/core/modules/field_ui/lib/Drupal/field_ui/Tests/FieldUiTestBase.php +++ b/core/modules/field_ui/lib/Drupal/field_ui/Tests/FieldUiTestBase.php @@ -25,7 +25,7 @@ function setUp() { parent::setUp(); // Create test user. - $admin_user = $this->drupalCreateUser(array('access content', 'administer content types', 'administer node fields', 'administer node display', 'administer taxonomy', 'administer taxonomy_term fields', 'administer taxonomy_term display', 'administer users', 'administer user display')); + $admin_user = $this->drupalCreateUser(array('access content', 'administer content types', 'administer node fields', 'administer node display', 'administer taxonomy', 'administer taxonomy_term fields', 'administer taxonomy_term display', 'administer users', 'administer user settings', 'administer user display')); $this->drupalLogin($admin_user); // Create content type, with underscores. diff --git a/core/modules/user/lib/Drupal/user/Tests/UserPermissionsTest.php b/core/modules/user/lib/Drupal/user/Tests/UserPermissionsTest.php index 2455b10..fb53b1b 100644 --- a/core/modules/user/lib/Drupal/user/Tests/UserPermissionsTest.php +++ b/core/modules/user/lib/Drupal/user/Tests/UserPermissionsTest.php @@ -24,7 +24,7 @@ public static function getInfo() { function setUp() { parent::setUp(); - $this->admin_user = $this->drupalCreateUser(array('administer permissions', 'access user profiles', 'administer site configuration', 'administer modules', 'administer users')); + $this->admin_user = $this->drupalCreateUser(array('administer permissions', 'access user profiles', 'administer site configuration', 'administer modules', 'administer user settings')); // Find the new role ID. $all_rids = $this->admin_user->roles; diff --git a/core/modules/user/user.install b/core/modules/user/user.install index 10e429c..bd8f020 100644 --- a/core/modules/user/user.install +++ b/core/modules/user/user.install @@ -1056,5 +1056,26 @@ function user_update_8017() { } /** + * Grant "administer user settings" to roles with "administer users." + */ +function user_update_8018() { + $rids = array(); + $rids = db_query("SELECT rid FROM {role_permission} WHERE permission = :perm", array(':perm' => 'administer users'))->fetchCol(); + // None found. + if (empty($rids)) { + return; + } + $insert = db_insert('role_permission')->fields(array('rid', 'permission', 'module')); + foreach ($rids as $rid) { + $insert->values(array( + 'rid' => $rid, + 'permission' => 'administer user settings', + 'module' => 'user' + )); + } + $insert->execute(); +} + +/** * @} End of "addtogroup updates-7.x-to-8.x". */ diff --git a/core/modules/user/user.module b/core/modules/user/user.module index 5570313..6b1accf 100644 --- a/core/modules/user/user.module +++ b/core/modules/user/user.module @@ -532,6 +532,10 @@ function user_permission() { 'title' => t('Administer users'), 'restrict access' => TRUE, ), + 'administer user settings' => array( + 'title' => t('Administer user settings'), + 'restrict access' => TRUE, + ), 'access user profiles' => array( 'title' => t('View user profiles'), ), @@ -1016,7 +1020,7 @@ function user_menu() { 'position' => 'left', 'weight' => -20, 'page callback' => 'system_admin_menu_block_page', - 'access arguments' => array('access administration pages'), + 'access arguments' => array('administer user settings'), 'file' => 'system.admin.inc', 'file path' => drupal_get_path('module', 'system'), ); @@ -1025,7 +1029,7 @@ function user_menu() { 'description' => 'Configure default behavior of users, including registration requirements, e-mails, and fields.', 'page callback' => 'drupal_get_form', 'page arguments' => array('user_admin_settings'), - 'access arguments' => array('administer users'), + 'access arguments' => array('administer user settings'), 'file' => 'user.admin.inc', 'weight' => -10, ); -- 1.7.10.4