WordPress.org

Make WordPress Core

Ticket #15326: 15326.diff

File 15326.diff, 9.9 KB (added by nacin, 7 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() {