namespace, '/' . $this->rest_base . '/disconnect', array( array( 'methods' => WP_REST_Server::EDITABLE, 'callback' => array( $this, 'handle_disconnect_request' ), 'permission_callback' => array( $this, 'check_permission' ), ), ), ); } /** * Check whether user has permission to access controller's endpoints. * * @since 9.6.0 * @param WP_USER $user User object. * @return bool */ public function user_has_permission( $user ): bool { return user_can( $user, 'install_plugins' ) && user_can( $user, 'activate_plugins' ); } /** * Disconnect the site from WooCommerce.com. * * @since 9.6.0 * @param WP_REST_Request $request Full details about the request. * @return WP_REST_Response */ public function handle_disconnect_request( $request ) { $request_hash = $request['hash']; if ( empty( $request_hash ) || ! WC_Helper::verify_request_hash( $request_hash ) ) { return $this->get_response( array(), 403 ); } if ( WC_Helper::is_site_connected() ) { WC_Helper::disconnect(); } return $this->get_response( array( 'status' => true, ) ); } }