Make WordPress Core


Ignore:
Timestamp:
05/02/2018 01:07:00 AM (8 years ago)
Author:
iandunn
Message:

Privacy: Limit export and erasure to super admins on Multisite.

Multisite networks have a variety of use cases, and in many of them single-site administrators are not trusted to take actions that affect the whole network, require making decisions about legal compliance, etc. By default, those actions should require super admin capabilities. Plugins can be used to override that behavior if a particular site's use case calls for it.

Props allendav, jeremyfelt, iandunn.
Fixes #43919.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-admin/includes/user.php

    r43057 r43085  
    786786 */
    787787function _wp_personal_data_export_page() {
    788     if ( ! current_user_can( 'manage_options' ) ) {
    789         wp_die( esc_html__( 'Sorry, you are not allowed to manage privacy on this site.' ) );
     788    if ( ! current_user_can( 'export_others_personal_data' ) ) {
     789        wp_die( __( 'Sorry, you are not allowed to export personal data on this site.' ) );
    790790    }
    791791
     
    851851 */
    852852function _wp_personal_data_removal_page() {
    853     if ( ! current_user_can( 'delete_users' ) ) {
    854         wp_die( esc_html__( 'Sorry, you are not allowed to manage privacy on this site.' ) );
     853    /*
     854     * Require both caps in order to make it explicitly clear that delegating
     855     * erasure from network admins to single-site admins will give them the
     856     * ability to affect global users, rather than being limited to the site
     857     * that they administer.
     858     */
     859    if ( ! current_user_can( 'erase_others_personal_data' ) || ! current_user_can( 'delete_users' ) ) {
     860        wp_die( __( 'Sorry, you are not allowed to erase data on this site.' ) );
    855861    }
    856862
     
    918924 */
    919925function _wp_privacy_hook_requests_page() {
    920     add_submenu_page( 'tools.php', __( 'Export Personal Data' ), __( 'Export Personal Data' ), 'manage_options', 'export_personal_data', '_wp_personal_data_export_page' );
    921     add_submenu_page( 'tools.php', __( 'Remove Personal Data' ), __( 'Remove Personal Data' ), 'manage_options', 'remove_personal_data', '_wp_personal_data_removal_page' );
     926    add_submenu_page( 'tools.php', __( 'Export Personal Data' ), __( 'Export Personal Data' ), 'export_others_personal_data', 'export_personal_data', '_wp_personal_data_export_page' );
     927    add_submenu_page( 'tools.php', __( 'Remove Personal Data' ), __( 'Remove Personal Data' ), 'erase_others_personal_data', 'remove_personal_data', '_wp_personal_data_removal_page' );
    922928}
    923929
Note: See TracChangeset for help on using the changeset viewer.