WPFormsにおけるGoogleスプレッドシート・ピッカーへのアクセス制限

WPFormsでGoogleスプレッドシートとの連携を設定する際、接続されたGoogleスプレッドシートのリストを閲覧できるユーザーを制限したいですか?デフォルトでは、フォームビルダーへのアクセス権を持つすべてのユーザーが、連携されたGoogleアカウントに関連付けられたすべてのスプレッドシートを閲覧できます。バックエンドユーザーが複数いるサイトでは、これがプライバシー上の懸念となる可能性があります。

このチュートリアルでは、カスタムコードスニペットを使用して、Google スプレッドシートのピッカーへのアクセスを制限する方法をご紹介します。


スニペットの作成

始める前に、サイトにカスタムコードスニペットを追加する方法についてのチュートリアルをぜひご覧ください。

ユーザーがフォームビルダーでGoogle スプレッドシートのプロバイダーを開くと、Google スプレッドシートのピッカーはAJAXエンドポイントを通じてデータを読み込みます。この wpforms_providers_settings_builder_ajax_access_token_data_get_google-sheets フィルターを使用すれば、スプレッドシートのリストが返される前に権限チェックを追加できます。

以下では、よくある2つのケースについて説明します。

管理者だけにアクセスを制限する

以下のコードスニペットは、Google スプレッドシートのピッカーへのアクセスを、 manage_options 権限。デフォルトでは、これは管理者に限定されています。

/**
 * Restrict the Google Sheets picker to administrators only.
 *
 * @link  https://wpforms.com/developers/
 */

add_filter( 'wpforms_providers_settings_builder_ajax_access_token_data_get_google-sheets', 'wpf_restrict_picker_access_admins_only', 9 );

function wpf_restrict_picker_access_admins_only(): void {

    // Restrict access to users with manage_options capability (administrators by default).
    if ( ! current_user_can( 'manage_options' ) ) {
        wp_send_json_error( 403 );
    }
}

このスニペットをサイトに追加すると、管理者以外のユーザーがGoogle スプレッドシートのピッカーを開こうとした場合、接続済みのスプレッドシートのリストが表示される代わりに、403エラーが表示されます。管理者は、これまでと全く同じようにピッカーを表示できます。

特定のユーザーへのアクセス制限

特定のユーザーのみへのアクセスを制限したい場合は、代わりに特定のユーザーIDと照合することができます。これは、チーム内でGoogle スプレッドシートの接続を管理できる人を1人に限定したい場合に便利です。

/**
 * Restrict the Google Sheets picker to a specific user.
 *
 * @link  https://wpforms.com/developers/
 */

add_filter( 'wpforms_providers_settings_builder_ajax_access_token_data_get_google-sheets', 'wpf_restrict_picker_access_single_user', 9 );

function wpf_restrict_picker_access_single_user(): void {

    // Restrict access to a specific user ID. Replace 1 with the desired user ID.
    if ( get_current_user_id() !== 1 ) {
        wp_send_json_error( 403 );
    }
}

必ず交換してください。 1 許可したいユーザーのIDを指定してください。ユーザーのIDは、以下の手順で確認できます。 ユーザー WordPressの管理画面で、ユーザー名にカーソルを合わせます。IDは編集リンクのURLに表示されます。

これで完了です!WPFormsでのGoogleスプレッドシートピッカーへのアクセス制限が正常に設定されました。Googleスプレッドシート連携の他の設定をカスタマイズしたい場合は、WPFormsでのGoogleスプレッドシートアドオンの設定方法に関するチュートリアルをご覧ください。