mirror of
https://github.com/gosticks/wordpress-develop.git
synced 2026-08-11 20:30:23 +00:00
Site health: Introduce view_site_health_checks capability.
Introduces the faux primitive capability `view_site_health_checks` available to single site admins and multisite super-admin to view the site health page within the admin. The capability is mapped to the `install_plugins` capability without being dependent on the file system being writable. This fixes a bug where the feature couldn't be used by sites unable to write to the file system or managed through version control. The capability is granted on the `user_has_cap` filter. Props birgire, Clorith, palmiak, peterwilsoncc, spacedmonkey. Fixes #46957. git-svn-id: https://develop.svn.wordpress.org/trunk@45507 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
@@ -76,79 +76,80 @@ class Tests_User_Capabilities extends WP_UnitTestCase {
|
||||
final private function _getSingleSitePrimitiveCaps() {
|
||||
return array(
|
||||
|
||||
'unfiltered_html' => array( 'administrator', 'editor' ),
|
||||
'unfiltered_html' => array( 'administrator', 'editor' ),
|
||||
|
||||
'activate_plugins' => array( 'administrator' ),
|
||||
'create_users' => array( 'administrator' ),
|
||||
'delete_plugins' => array( 'administrator' ),
|
||||
'delete_themes' => array( 'administrator' ),
|
||||
'delete_users' => array( 'administrator' ),
|
||||
'edit_files' => array( 'administrator' ),
|
||||
'edit_plugins' => array( 'administrator' ),
|
||||
'edit_themes' => array( 'administrator' ),
|
||||
'edit_users' => array( 'administrator' ),
|
||||
'install_plugins' => array( 'administrator' ),
|
||||
'install_themes' => array( 'administrator' ),
|
||||
'update_core' => array( 'administrator' ),
|
||||
'update_plugins' => array( 'administrator' ),
|
||||
'update_themes' => array( 'administrator' ),
|
||||
'edit_theme_options' => array( 'administrator' ),
|
||||
'export' => array( 'administrator' ),
|
||||
'import' => array( 'administrator' ),
|
||||
'list_users' => array( 'administrator' ),
|
||||
'manage_options' => array( 'administrator' ),
|
||||
'promote_users' => array( 'administrator' ),
|
||||
'remove_users' => array( 'administrator' ),
|
||||
'switch_themes' => array( 'administrator' ),
|
||||
'edit_dashboard' => array( 'administrator' ),
|
||||
'resume_plugins' => array( 'administrator' ),
|
||||
'resume_themes' => array( 'administrator' ),
|
||||
'activate_plugins' => array( 'administrator' ),
|
||||
'create_users' => array( 'administrator' ),
|
||||
'delete_plugins' => array( 'administrator' ),
|
||||
'delete_themes' => array( 'administrator' ),
|
||||
'delete_users' => array( 'administrator' ),
|
||||
'edit_files' => array( 'administrator' ),
|
||||
'edit_plugins' => array( 'administrator' ),
|
||||
'edit_themes' => array( 'administrator' ),
|
||||
'edit_users' => array( 'administrator' ),
|
||||
'install_plugins' => array( 'administrator' ),
|
||||
'install_themes' => array( 'administrator' ),
|
||||
'update_core' => array( 'administrator' ),
|
||||
'update_plugins' => array( 'administrator' ),
|
||||
'update_themes' => array( 'administrator' ),
|
||||
'edit_theme_options' => array( 'administrator' ),
|
||||
'export' => array( 'administrator' ),
|
||||
'import' => array( 'administrator' ),
|
||||
'list_users' => array( 'administrator' ),
|
||||
'manage_options' => array( 'administrator' ),
|
||||
'promote_users' => array( 'administrator' ),
|
||||
'remove_users' => array( 'administrator' ),
|
||||
'switch_themes' => array( 'administrator' ),
|
||||
'edit_dashboard' => array( 'administrator' ),
|
||||
'resume_plugins' => array( 'administrator' ),
|
||||
'resume_themes' => array( 'administrator' ),
|
||||
'view_site_health_checks' => array( 'administrator' ),
|
||||
|
||||
'moderate_comments' => array( 'administrator', 'editor' ),
|
||||
'manage_categories' => array( 'administrator', 'editor' ),
|
||||
'edit_others_posts' => array( 'administrator', 'editor' ),
|
||||
'edit_pages' => array( 'administrator', 'editor' ),
|
||||
'edit_others_pages' => array( 'administrator', 'editor' ),
|
||||
'edit_published_pages' => array( 'administrator', 'editor' ),
|
||||
'publish_pages' => array( 'administrator', 'editor' ),
|
||||
'delete_pages' => array( 'administrator', 'editor' ),
|
||||
'delete_others_pages' => array( 'administrator', 'editor' ),
|
||||
'delete_published_pages' => array( 'administrator', 'editor' ),
|
||||
'delete_others_posts' => array( 'administrator', 'editor' ),
|
||||
'delete_private_posts' => array( 'administrator', 'editor' ),
|
||||
'edit_private_posts' => array( 'administrator', 'editor' ),
|
||||
'read_private_posts' => array( 'administrator', 'editor' ),
|
||||
'delete_private_pages' => array( 'administrator', 'editor' ),
|
||||
'edit_private_pages' => array( 'administrator', 'editor' ),
|
||||
'read_private_pages' => array( 'administrator', 'editor' ),
|
||||
'moderate_comments' => array( 'administrator', 'editor' ),
|
||||
'manage_categories' => array( 'administrator', 'editor' ),
|
||||
'edit_others_posts' => array( 'administrator', 'editor' ),
|
||||
'edit_pages' => array( 'administrator', 'editor' ),
|
||||
'edit_others_pages' => array( 'administrator', 'editor' ),
|
||||
'edit_published_pages' => array( 'administrator', 'editor' ),
|
||||
'publish_pages' => array( 'administrator', 'editor' ),
|
||||
'delete_pages' => array( 'administrator', 'editor' ),
|
||||
'delete_others_pages' => array( 'administrator', 'editor' ),
|
||||
'delete_published_pages' => array( 'administrator', 'editor' ),
|
||||
'delete_others_posts' => array( 'administrator', 'editor' ),
|
||||
'delete_private_posts' => array( 'administrator', 'editor' ),
|
||||
'edit_private_posts' => array( 'administrator', 'editor' ),
|
||||
'read_private_posts' => array( 'administrator', 'editor' ),
|
||||
'delete_private_pages' => array( 'administrator', 'editor' ),
|
||||
'edit_private_pages' => array( 'administrator', 'editor' ),
|
||||
'read_private_pages' => array( 'administrator', 'editor' ),
|
||||
|
||||
'edit_published_posts' => array( 'administrator', 'editor', 'author' ),
|
||||
'upload_files' => array( 'administrator', 'editor', 'author' ),
|
||||
'publish_posts' => array( 'administrator', 'editor', 'author' ),
|
||||
'delete_published_posts' => array( 'administrator', 'editor', 'author' ),
|
||||
'edit_published_posts' => array( 'administrator', 'editor', 'author' ),
|
||||
'upload_files' => array( 'administrator', 'editor', 'author' ),
|
||||
'publish_posts' => array( 'administrator', 'editor', 'author' ),
|
||||
'delete_published_posts' => array( 'administrator', 'editor', 'author' ),
|
||||
|
||||
'edit_posts' => array( 'administrator', 'editor', 'author', 'contributor' ),
|
||||
'delete_posts' => array( 'administrator', 'editor', 'author', 'contributor' ),
|
||||
'edit_posts' => array( 'administrator', 'editor', 'author', 'contributor' ),
|
||||
'delete_posts' => array( 'administrator', 'editor', 'author', 'contributor' ),
|
||||
|
||||
'read' => array( 'administrator', 'editor', 'author', 'contributor', 'subscriber' ),
|
||||
'read' => array( 'administrator', 'editor', 'author', 'contributor', 'subscriber' ),
|
||||
|
||||
'level_10' => array( 'administrator' ),
|
||||
'level_9' => array( 'administrator' ),
|
||||
'level_8' => array( 'administrator' ),
|
||||
'level_7' => array( 'administrator', 'editor' ),
|
||||
'level_6' => array( 'administrator', 'editor' ),
|
||||
'level_5' => array( 'administrator', 'editor' ),
|
||||
'level_4' => array( 'administrator', 'editor' ),
|
||||
'level_3' => array( 'administrator', 'editor' ),
|
||||
'level_2' => array( 'administrator', 'editor', 'author' ),
|
||||
'level_1' => array( 'administrator', 'editor', 'author', 'contributor' ),
|
||||
'level_0' => array( 'administrator', 'editor', 'author', 'contributor', 'subscriber' ),
|
||||
'level_10' => array( 'administrator' ),
|
||||
'level_9' => array( 'administrator' ),
|
||||
'level_8' => array( 'administrator' ),
|
||||
'level_7' => array( 'administrator', 'editor' ),
|
||||
'level_6' => array( 'administrator', 'editor' ),
|
||||
'level_5' => array( 'administrator', 'editor' ),
|
||||
'level_4' => array( 'administrator', 'editor' ),
|
||||
'level_3' => array( 'administrator', 'editor' ),
|
||||
'level_2' => array( 'administrator', 'editor', 'author' ),
|
||||
'level_1' => array( 'administrator', 'editor', 'author', 'contributor' ),
|
||||
'level_0' => array( 'administrator', 'editor', 'author', 'contributor', 'subscriber' ),
|
||||
|
||||
'administrator' => array( 'administrator' ),
|
||||
'editor' => array( 'editor' ),
|
||||
'author' => array( 'author' ),
|
||||
'contributor' => array( 'contributor' ),
|
||||
'subscriber' => array( 'subscriber' ),
|
||||
'administrator' => array( 'administrator' ),
|
||||
'editor' => array( 'editor' ),
|
||||
'author' => array( 'author' ),
|
||||
'contributor' => array( 'contributor' ),
|
||||
'subscriber' => array( 'subscriber' ),
|
||||
|
||||
);
|
||||
|
||||
@@ -157,80 +158,81 @@ class Tests_User_Capabilities extends WP_UnitTestCase {
|
||||
final private function _getMultiSitePrimitiveCaps() {
|
||||
return array(
|
||||
|
||||
'unfiltered_html' => array(),
|
||||
'unfiltered_html' => array(),
|
||||
|
||||
'activate_plugins' => array(),
|
||||
'create_users' => array(),
|
||||
'delete_plugins' => array(),
|
||||
'delete_themes' => array(),
|
||||
'delete_users' => array(),
|
||||
'edit_files' => array(),
|
||||
'edit_plugins' => array(),
|
||||
'edit_themes' => array(),
|
||||
'edit_users' => array(),
|
||||
'install_plugins' => array(),
|
||||
'install_themes' => array(),
|
||||
'update_core' => array(),
|
||||
'update_plugins' => array(),
|
||||
'update_themes' => array(),
|
||||
'activate_plugins' => array(),
|
||||
'create_users' => array(),
|
||||
'delete_plugins' => array(),
|
||||
'delete_themes' => array(),
|
||||
'delete_users' => array(),
|
||||
'edit_files' => array(),
|
||||
'edit_plugins' => array(),
|
||||
'edit_themes' => array(),
|
||||
'edit_users' => array(),
|
||||
'install_plugins' => array(),
|
||||
'install_themes' => array(),
|
||||
'update_core' => array(),
|
||||
'update_plugins' => array(),
|
||||
'update_themes' => array(),
|
||||
'view_site_health_checks' => array(),
|
||||
|
||||
'edit_theme_options' => array( 'administrator' ),
|
||||
'export' => array( 'administrator' ),
|
||||
'import' => array( 'administrator' ),
|
||||
'list_users' => array( 'administrator' ),
|
||||
'manage_options' => array( 'administrator' ),
|
||||
'promote_users' => array( 'administrator' ),
|
||||
'remove_users' => array( 'administrator' ),
|
||||
'switch_themes' => array( 'administrator' ),
|
||||
'edit_dashboard' => array( 'administrator' ),
|
||||
'resume_plugins' => array( 'administrator' ),
|
||||
'resume_themes' => array( 'administrator' ),
|
||||
'edit_theme_options' => array( 'administrator' ),
|
||||
'export' => array( 'administrator' ),
|
||||
'import' => array( 'administrator' ),
|
||||
'list_users' => array( 'administrator' ),
|
||||
'manage_options' => array( 'administrator' ),
|
||||
'promote_users' => array( 'administrator' ),
|
||||
'remove_users' => array( 'administrator' ),
|
||||
'switch_themes' => array( 'administrator' ),
|
||||
'edit_dashboard' => array( 'administrator' ),
|
||||
'resume_plugins' => array( 'administrator' ),
|
||||
'resume_themes' => array( 'administrator' ),
|
||||
|
||||
'moderate_comments' => array( 'administrator', 'editor' ),
|
||||
'manage_categories' => array( 'administrator', 'editor' ),
|
||||
'edit_others_posts' => array( 'administrator', 'editor' ),
|
||||
'edit_pages' => array( 'administrator', 'editor' ),
|
||||
'edit_others_pages' => array( 'administrator', 'editor' ),
|
||||
'edit_published_pages' => array( 'administrator', 'editor' ),
|
||||
'publish_pages' => array( 'administrator', 'editor' ),
|
||||
'delete_pages' => array( 'administrator', 'editor' ),
|
||||
'delete_others_pages' => array( 'administrator', 'editor' ),
|
||||
'delete_published_pages' => array( 'administrator', 'editor' ),
|
||||
'delete_others_posts' => array( 'administrator', 'editor' ),
|
||||
'delete_private_posts' => array( 'administrator', 'editor' ),
|
||||
'edit_private_posts' => array( 'administrator', 'editor' ),
|
||||
'read_private_posts' => array( 'administrator', 'editor' ),
|
||||
'delete_private_pages' => array( 'administrator', 'editor' ),
|
||||
'edit_private_pages' => array( 'administrator', 'editor' ),
|
||||
'read_private_pages' => array( 'administrator', 'editor' ),
|
||||
'moderate_comments' => array( 'administrator', 'editor' ),
|
||||
'manage_categories' => array( 'administrator', 'editor' ),
|
||||
'edit_others_posts' => array( 'administrator', 'editor' ),
|
||||
'edit_pages' => array( 'administrator', 'editor' ),
|
||||
'edit_others_pages' => array( 'administrator', 'editor' ),
|
||||
'edit_published_pages' => array( 'administrator', 'editor' ),
|
||||
'publish_pages' => array( 'administrator', 'editor' ),
|
||||
'delete_pages' => array( 'administrator', 'editor' ),
|
||||
'delete_others_pages' => array( 'administrator', 'editor' ),
|
||||
'delete_published_pages' => array( 'administrator', 'editor' ),
|
||||
'delete_others_posts' => array( 'administrator', 'editor' ),
|
||||
'delete_private_posts' => array( 'administrator', 'editor' ),
|
||||
'edit_private_posts' => array( 'administrator', 'editor' ),
|
||||
'read_private_posts' => array( 'administrator', 'editor' ),
|
||||
'delete_private_pages' => array( 'administrator', 'editor' ),
|
||||
'edit_private_pages' => array( 'administrator', 'editor' ),
|
||||
'read_private_pages' => array( 'administrator', 'editor' ),
|
||||
|
||||
'edit_published_posts' => array( 'administrator', 'editor', 'author' ),
|
||||
'upload_files' => array( 'administrator', 'editor', 'author' ),
|
||||
'publish_posts' => array( 'administrator', 'editor', 'author' ),
|
||||
'delete_published_posts' => array( 'administrator', 'editor', 'author' ),
|
||||
'edit_published_posts' => array( 'administrator', 'editor', 'author' ),
|
||||
'upload_files' => array( 'administrator', 'editor', 'author' ),
|
||||
'publish_posts' => array( 'administrator', 'editor', 'author' ),
|
||||
'delete_published_posts' => array( 'administrator', 'editor', 'author' ),
|
||||
|
||||
'edit_posts' => array( 'administrator', 'editor', 'author', 'contributor' ),
|
||||
'delete_posts' => array( 'administrator', 'editor', 'author', 'contributor' ),
|
||||
'edit_posts' => array( 'administrator', 'editor', 'author', 'contributor' ),
|
||||
'delete_posts' => array( 'administrator', 'editor', 'author', 'contributor' ),
|
||||
|
||||
'read' => array( 'administrator', 'editor', 'author', 'contributor', 'subscriber' ),
|
||||
'read' => array( 'administrator', 'editor', 'author', 'contributor', 'subscriber' ),
|
||||
|
||||
'level_10' => array( 'administrator' ),
|
||||
'level_9' => array( 'administrator' ),
|
||||
'level_8' => array( 'administrator' ),
|
||||
'level_7' => array( 'administrator', 'editor' ),
|
||||
'level_6' => array( 'administrator', 'editor' ),
|
||||
'level_5' => array( 'administrator', 'editor' ),
|
||||
'level_4' => array( 'administrator', 'editor' ),
|
||||
'level_3' => array( 'administrator', 'editor' ),
|
||||
'level_2' => array( 'administrator', 'editor', 'author' ),
|
||||
'level_1' => array( 'administrator', 'editor', 'author', 'contributor' ),
|
||||
'level_0' => array( 'administrator', 'editor', 'author', 'contributor', 'subscriber' ),
|
||||
'level_10' => array( 'administrator' ),
|
||||
'level_9' => array( 'administrator' ),
|
||||
'level_8' => array( 'administrator' ),
|
||||
'level_7' => array( 'administrator', 'editor' ),
|
||||
'level_6' => array( 'administrator', 'editor' ),
|
||||
'level_5' => array( 'administrator', 'editor' ),
|
||||
'level_4' => array( 'administrator', 'editor' ),
|
||||
'level_3' => array( 'administrator', 'editor' ),
|
||||
'level_2' => array( 'administrator', 'editor', 'author' ),
|
||||
'level_1' => array( 'administrator', 'editor', 'author', 'contributor' ),
|
||||
'level_0' => array( 'administrator', 'editor', 'author', 'contributor', 'subscriber' ),
|
||||
|
||||
'administrator' => array( 'administrator' ),
|
||||
'editor' => array( 'editor' ),
|
||||
'author' => array( 'author' ),
|
||||
'contributor' => array( 'contributor' ),
|
||||
'subscriber' => array( 'subscriber' ),
|
||||
'administrator' => array( 'administrator' ),
|
||||
'editor' => array( 'editor' ),
|
||||
'author' => array( 'author' ),
|
||||
'contributor' => array( 'contributor' ),
|
||||
'subscriber' => array( 'subscriber' ),
|
||||
|
||||
);
|
||||
|
||||
@@ -397,9 +399,10 @@ class Tests_User_Capabilities extends WP_UnitTestCase {
|
||||
$actual['author'],
|
||||
$actual['subscriber'],
|
||||
$actual['contributor'],
|
||||
// the following two are granted via `user_has_cap`:
|
||||
// The following are granted via `user_has_cap`:
|
||||
$actual['resume_plugins'],
|
||||
$actual['resume_themes']
|
||||
$actual['resume_themes'],
|
||||
$actual['view_site_health_checks']
|
||||
);
|
||||
|
||||
unset(
|
||||
@@ -1200,7 +1203,7 @@ class Tests_User_Capabilities extends WP_UnitTestCase {
|
||||
$this->assertFalse( $contributor->has_cap( 'publish_post', $post ) );
|
||||
$this->assertFalse( $contributor->has_cap( 'edit_post', $post ) );
|
||||
$this->assertFalse( $contributor->has_cap( 'delete_post', $post ) );
|
||||
$this->assertEquals( $status === 'publish', $contributor->has_cap( 'read_post', $post ) );
|
||||
$this->assertEquals( 'publish' === $status, $contributor->has_cap( 'read_post', $post ) );
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user