Ticket #42999: 42999.diff
| File 42999.diff, 2.8 KB (added by , 9 years ago) |
|---|
-
src/wp-includes/rest-api/endpoints/class-wp-rest-users-controller.php
891 891 } 892 892 893 893 if ( ! empty( $schema['properties']['capabilities'] ) ) { 894 $data['capabilities'] = (object) $user->allcaps; 894 /** 895 * If the user has no role on a site of the network, make sure 896 * to populate his capabilities with Administrator ones if he 897 * is one of the Super Administrators. 898 */ 899 if ( ! $user->allcaps && is_multisite() ) { 900 $site_roles = wp_roles(); 901 $admin_caps = array_merge( 902 $site_roles->get_role( 'administrator' )->capabilities, 903 array( 'administrator' => true ) 904 ); 905 906 $capabilities = array_fill_keys( array_keys( $admin_caps ), is_super_admin( $user->ID ) ); 907 $allcaps = wp_parse_args( $user->allcaps, array_filter( $capabilities ) ); 908 909 // Otherwise use user role's capabilities. 910 } else { 911 $allcaps = $user->allcaps; 912 } 913 914 $data['capabilities'] = (object) $allcaps; 895 915 } 896 916 897 917 if ( ! empty( $schema['properties']['extra_capabilities'] ) ) { -
tests/phpunit/tests/rest-api/rest-users-controller.php
996 996 $this->assertEquals( rest_url( 'wp/v2/users/' . self::$user ), $links['self'][0]['href'] ); 997 997 } 998 998 999 /** 1000 * @group ms-required 1001 */ 1002 public function test_get_current_user_ms() { 1003 $this->allow_user_to_manage_multisite(); 1004 wp_set_current_user( self::$user ); 1005 1006 $request = new WP_REST_Request( 'GET', '/wp/v2/users/me' ); 1007 $request->set_param( 'context', 'edit' ); 1008 $response = $this->server->dispatch( $request ); 1009 $data = $response->get_data(); 1010 $capabilities = $data['capabilities']; 1011 1012 $this->assertTrue( $capabilities->manage_options ); 1013 1014 // Create a new site the SuperAdmin is not a member of. 1015 $user_id = $this->factory->user->create(); 1016 $blog_id = $this->factory->blog->create( array( 'user_id' => $user_id ) ); 1017 switch_to_blog( $blog_id ); 1018 1019 $request = new WP_REST_Request( 'GET', '/wp/v2/users/me' ); 1020 $request->set_param( 'context', 'edit' ); 1021 $response = $this->server->dispatch( $request ); 1022 $data = $response->get_data(); 1023 1024 restore_current_blog(); 1025 1026 $this->assertEquals( $capabilities, $data['capabilities'] ); 1027 } 1028 999 1029 public function test_get_current_user_without_permission() { 1000 1030 wp_set_current_user( 0 ); 1001 1031 $request = new WP_REST_Request( 'GET', '/wp/v2/users/me' );
![(please configure the [header_logo] section in trac.ini)](/chrome/site/your_project_logo.png)