ログインユーザーの情報でAPIのレスポンスを動的に変更する

ログインユーザーの情報を使用して、APIエンドポイントのレスポンスを動的に変更する方法を解説します。
本チュートリアルでは、以下の構成で、ログインユーザーによってお知らせ一覧の表示内容を変更してみます。

メンバー拡張に会社名を追加する

[メンバー管理]->[メンバー]をクリックします。
Image from Gyazo

[メンバー詳細設定]をクリックします。
Image from Gyazo

[登録されるメンバーの拡張項目を設定する]をクリックします。
Image from Gyazo

以下のように設定し、[更新する]をクリックします。

項目設定
項目名会社名
識別子company_id
設定単一選択(セレクトボックス)
1::株式会社A
2::株式会社B

Image from Gyazo

メンバー一覧のページから、動作確認用メンバーの名前をクリックします。
Image from Gyazo

メンバー編集ページが表示されるのでプロフィール情報のタブで会社名をセットします。
Image from Gyazo

コンテンツ(お知らせ)にターゲットの会社を追加する

[コンテンツ定義]をクリックします。
Image from Gyazo

コンテンツ定義一覧から[お知らせ]をクリックします。
Image from Gyazo

コンテンツ定義編集画面が開くので、下記のように設定し、[更新する]をクリックします。

項目設定
親項目選択なし
項目名ターゲット
項目設定複数選択(チェックボックス)
1::株式会社A
2::株式会社B
2::株式会社C

Image from Gyazo

コンテンツ編集画面に追加した項目が表示されるので、任意のコンテンツの編集画面でターゲットとなる会社名にチェックを入れて更新します。
Image from Gyazo

ログインユーザーの情報をフィルタークエリに設定するカスタム処理を追加する

次にログインユーザーの情報を取得するカスタム処理を追加します。
[カスタム処理]をクリックします。
Image from Gyazo

[追加]をクリックします。
Image from Gyazo

以下を設定し、[追加する]をクリックします。

項目設定
タイトルログインユーザーの情報をフィルタクエリに追加
識別子set_filter_request
処理以下のコード
{if $smarty.session.super_flg ne 1}
{assign_member_detail var='mem' member_id=$smarty.session.member_id}
{assign var=request.filter value="ext_col_01 contains `$mem.company_id_key`"}
{/if}

Image from Gyazo

filterパラメータの記法詳細は検索機能の使い方を参照してください。

エンドポイントにフィルターリクエストの許可と前処理の設定をする

お知らせのリストを取得するエンドポントを持つAPIをクリックします。
Image from Gyazo

お知らせのリストを取得するエンドポントの[更新]をクリックします。
Image from Gyazo

filter_request_allow_listのパラメータにext_col_01を入力して、[更新]をクリックします。
Image from Gyazo

次に[前処理]をクリックします。
Image from Gyazo

カテゴリを未分類にし、一覧から「ログインユーザーの情報をフィルタクエリに追加」を設定します。
Image from Gyazo

動作を確認する

最後に動作確認をします。 ログイン後、お知らせ一覧のページを確認すると、表示される一覧の内容がフィルタリングされていることがわかります。

Image from Gyazo

動作確認はSuwagger UIで確認ができませんので、ブラウザ上で確認をするようにしてください。
参考FAQ:SwaggerUIで確認できないリクエストがあります。確認する方法はありますか?

お探しのページは見つかりましたか?解決しない場合は、問い合わせフォームからお問い合わせいただくか、Slackコミュニティにご参加ください。