WordPress.org

Make WordPress Core

Ticket #15326: 15326.diff

File 15326.diff, 9.9 KB (added by nacin, 4 years ago)
  • wp-admin/admin-ajax.php

     
    6161        if ( ! $wp_list_table ) 
    6262                die( '0' ); 
    6363 
    64         $wp_list_table->check_permissions(); 
     64        if ( ! $wp_list_table->ajax_user_can() ) 
     65                die( '-1' ); 
     66 
    6567        $wp_list_table->ajax_response(); 
    6668 
    6769        die( '0' ); 
     
    12001202case 'inline-save-tax': 
    12011203        check_ajax_referer( 'taxinlineeditnonce', '_inline_edit' ); 
    12021204 
    1203         set_current_screen( 'edit-' . $_POST['taxonomy'] ); 
     1205        $taxonomy = sanitize_key( $_POST['taxonomy'] ); 
     1206        $tax = get_taxonomy( $taxonomy ); 
     1207        if ( ! $tax ) 
     1208                die( '0' ); 
    12041209 
     1210        if ( ! current_user_can( $tax->cap->edit_terms ) ) 
     1211                die( '-1' ); 
     1212 
     1213        set_current_screen( 'edit-' . $taxonomy ); 
     1214 
    12051215        $wp_list_table = get_list_table('WP_Terms_List_Table'); 
    12061216 
    1207         $wp_list_table->check_permissions('edit'); 
    1208  
    12091217        if ( ! isset($_POST['tax_ID']) || ! ( $id = (int) $_POST['tax_ID'] ) ) 
    12101218                die(-1); 
    12111219 
  • wp-admin/includes/class-wp-ms-sites-list-table.php

     
    1414                ) ); 
    1515        } 
    1616 
    17         function check_permissions() { 
    18                 if ( ! current_user_can( 'manage_sites' ) ) 
    19                         wp_die( __( 'You do not have permission to access this page.' ) ); 
     17        function ajax_user_can() { 
     18                return current_user_can( 'manage_sites' ); 
    2019        } 
    2120 
    2221        function prepare_items() { 
  • wp-admin/includes/class-wp-posts-list-table.php

     
    7878                ) ); 
    7979        } 
    8080 
    81         function check_permissions() { 
     81        function ajax_user_can() { 
    8282                global $post_type_object; 
    8383 
    84                 if ( !current_user_can( $post_type_object->cap->edit_posts ) ) 
    85                         wp_die( __( 'Cheatin’ uh?' ) ); 
     84                return current_user_can( $post_type_object->cap->edit_posts ); 
    8685        } 
    8786 
    8887        function prepare_items() { 
  • wp-admin/includes/class-wp-media-list-table.php

     
    1616                ) ); 
    1717        } 
    1818 
    19         function check_permissions() { 
    20                 if ( !current_user_can('upload_files') ) 
    21                         wp_die( __( 'You do not have permission to upload files.' ) ); 
     19        function ajax_user_can() { 
     20                return current_user_can('upload_files'); 
    2221        } 
    2322 
    2423        function prepare_items() { 
  • wp-admin/includes/class-wp-links-list-table.php

     
    1414                ) ); 
    1515        } 
    1616 
    17         function check_permissions() { 
    18                 if ( ! current_user_can( 'manage_links' ) ) 
    19                         wp_die( __( 'You do not have sufficient permissions to edit the links for this site.' ) ); 
     17        function ajax_user_can() { 
     18                return current_user_can( 'manage_links' ); 
    2019        } 
    2120 
    2221        function prepare_items() { 
  • wp-admin/includes/class-wp-terms-list-table.php

     
    3232                ) ); 
    3333        } 
    3434 
    35         function check_permissions( $type = '' ) { 
     35        function ajax_user_can() { 
    3636                global $tax; 
    3737 
    38                 $cap = 'edit' == $type ? $tax->cap->edit_terms : $tax->cap->manage_terms; 
    39                 if ( !current_user_can( $cap ) ) 
    40                         wp_die( __( 'Cheatin’ uh?' ) ); 
     38                return current_user_can( $tax->cap->manage_terms ); 
    4139        } 
    4240 
    4341        function prepare_items() { 
  • wp-admin/includes/class-wp-users-list-table.php

     
    2424                ) ); 
    2525        } 
    2626 
    27         function check_permissions() { 
    28                 if ( ! $this->is_site_users && ! current_user_can( 'list_users' ) ) 
    29                         wp_die( __( 'Cheatin’ uh?' ) ); 
    30  
    31                 if ( $this->is_site_users && ! current_user_can( 'manage_sites' ) ) 
    32                         wp_die(__( 'You do not have sufficient permissions to edit this site.' ) ); 
     27        function ajax_user_can() { 
     28                if ( $this->is_site_users ) 
     29                        return current_user_can( 'manage_sites' ); 
     30                else 
     31                        return current_user_can( 'list_users' ); 
    3332        } 
    3433 
    3534        function prepare_items() { 
  • wp-admin/includes/class-wp-list-table.php

     
    105105         * @since 3.1.0 
    106106         * @access public 
    107107         */ 
    108         function check_permissions() { 
    109                 die( 'function WP_List_Table::check_permissions() must be over-ridden in a sub-class.' ); 
     108        function ajax_user_can() { 
     109                die( 'function WP_List_Table::ajax_user_can() must be over-ridden in a sub-class.' ); 
    110110        } 
    111111 
    112112        /** 
  • wp-admin/includes/class-wp-ms-themes-list-table.php

     
    3636                ) ); 
    3737        } 
    3838 
    39         function check_permissions() { 
     39        function ajax_user_can() { 
    4040                $menu_perms = get_site_option( 'menu_items', array() ); 
    4141 
    4242                if ( empty( $menu_perms['themes'] ) && ! is_super_admin() ) 
    43                         wp_die( __( 'Cheatin’ uh?' ) ); 
     43                        return false; 
    4444 
    4545                if ( $this->is_site_themes && !current_user_can('manage_sites') ) 
    46                         wp_die( __( 'You do not have sufficient permissions to manage themes for this site.' ) ); 
     46                        return false; 
    4747                elseif ( !$this->is_site_themes && !current_user_can('manage_network_themes') ) 
    48                         wp_die( __( 'You do not have sufficient permissions to manage network themes.' ) ); 
     48                        return false; 
     49                return true; 
    4950        } 
    5051 
    5152        function prepare_items() { 
  • wp-admin/includes/class-wp-plugin-install-list-table.php

     
    88 */ 
    99class WP_Plugin_Install_List_Table extends WP_List_Table { 
    1010 
    11         function check_permissions() { 
    12                 if ( ! current_user_can('install_plugins') ) 
    13                         wp_die(__('You do not have sufficient permissions to install plugins on this site.')); 
     11        function ajax_user_can() { 
     12                return current_user_can('install_plugins'); 
    1413        } 
    1514 
    1615        function prepare_items() { 
  • wp-admin/includes/class-wp-theme-install-list-table.php

     
    88 */ 
    99class WP_Theme_Install_List_Table extends WP_List_Table { 
    1010 
    11         function check_permissions() { 
    12                 if ( ! current_user_can('install_themes') ) 
    13                         wp_die( __( 'You do not have sufficient permissions to install themes on this site.' ) ); 
     11        function ajax_user_can() { 
     12                return current_user_can('install_themes'); 
    1413        } 
    1514 
    1615        function prepare_items() { 
  • wp-admin/includes/class-wp-ms-users-list-table.php

     
    88 */ 
    99class WP_MS_Users_List_Table extends WP_List_Table { 
    1010 
    11         function check_permissions() { 
    12                 if ( ! current_user_can( 'manage_network_users' ) ) 
    13                         wp_die( __( 'You do not have permission to access this page.' ) ); 
     11        function ajax_user_can() { 
     12                return current_user_can( 'manage_network_users' ); 
    1413        } 
    1514 
    1615        function prepare_items() { 
  • wp-admin/includes/class-wp-plugins-list-table.php

     
    2727                ) ); 
    2828        } 
    2929 
    30         function check_permissions() { 
     30        function ajax_user_can() { 
    3131                if ( is_multisite() ) { 
    3232                        $menu_perms = get_site_option( 'menu_items', array() ); 
    3333 
    3434                        if ( empty( $menu_perms['plugins'] ) && ! is_super_admin() ) 
    35                                 wp_die( __( 'Cheatin’ uh?' ) ); 
     35                                return false; 
    3636                } 
    3737 
    38                 if ( !current_user_can('activate_plugins') ) 
    39                         wp_die( __( 'You do not have sufficient permissions to manage plugins for this site.' ) ); 
     38                return current_user_can('activate_plugins'); 
    4039        } 
    4140 
    4241        function prepare_items() { 
  • wp-admin/includes/class-wp-themes-list-table.php

     
    1111        var $search = array(); 
    1212        var $features = array(); 
    1313 
    14         function check_permissions() { 
     14        function ajax_user_can() { 
    1515                // Do not check edit_theme_options here. AJAX calls for available themes require switch_themes. 
    16                 if ( !current_user_can('switch_themes') ) 
    17                         wp_die( __( 'Cheatin’ uh?' ) ); 
     16                return current_user_can('switch_themes'); 
    1817        } 
    1918 
    2019        function prepare_items() { 
  • wp-admin/includes/class-wp-comments-list-table.php

     
    3333                ) ); 
    3434        } 
    3535 
    36         function check_permissions() { 
    37                 if ( !current_user_can('edit_posts') ) 
    38                         wp_die(__('Cheatin’ uh?')); 
     36        function ajax_user_can() { 
     37                return current_user_can('edit_posts'); 
    3938        } 
    4039 
    4140        function prepare_items() {