Data API で特定のフィールドを認証を通さないと見れないようにする

「本文を見るには会員登録が必要です」といったような会員制サイトを作っているとします。

このサイトの情報に Data API で記事の情報にアクセスすると、デフォルトの状態だと本文欄は普通に見えてしまいます。

例えば、Data API の JavaScript ライブラリーの listEntries を使って記事の一覧をコンソールに表示してみると以下のようになります。

ちなみに、今パラメータには limit=3、status=Publish、fields=title,body を指定しています。もちろん、URL で entries のエンドポイントを叩いても同様です。

そこで、以下のようなプラグインを作ることにより、本文欄を認証を通さないと見れない状態に変えることができます。

name: DataAPIPrivateFields
version: 1.0.0
applications:
  data_api:
    resources:
      entry:
        fields:
          - name: body
            condition: |
              sub {
                  ! MT->instance->user->is_anonymous;
              }

ここでは、プラグイン名を「DataAPIPrivateFields」としているので、MT のプラグインディレクトリに「DataAPIPrivateFields」というディレクトリを作り、その中に上記の内容を config.yaml として保存してあげればOKです。

このプラグインをインストールした状態で先程の結果を再読込してみると、以下のように本文欄(body)が表示されなくなります。

この本文欄を再度表示させるには、api.getAuthorizationUrl(); などで一度ログインすればOKです。

以上です。

  • このエントリーをはてなブックマークに追加
Just a second...