Data API で特定のフィールドを認証を通さないと見れないようにする
2014-03-09
1分で読了
更新: 2025-12-14
目次
「本文を見るには会員登録が必要です」といったような会員制サイトを作っているとします。
このサイトの情報に 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です。
以上です。