2017-08-16 9 views
1

私はいくつかのカスタムAPIエンドポイントを持つことになりますWordPress用のプラグインを提供する必要がある、と私はこれらの2つのプラグインワードプレスとJWT

がインストールされています

私はカスタムエンドポイントを作成しました:

add_action('rest_api_init', function ($data) { 
    register_rest_route('mladi-info/v1', '/user/favorites', [ 
     'methods' => 'GET', 
     'callback' => 'mi_get_favorite_posts' 
    ]); 
}); 

このエンドポイントを保護して、JWTトークンを送信したリクエスト(/ wp-json/jwt-auth/v1 /トークンエンドポイントからユーザ名とパスワードを送信して生成)を処理できるようにする必要があります。それ、どうやったら出来るの?

+0

あなたの問題に関係はありませんが、セットアップやテストのすばやい方法をお探しの場合は、作成した動画をご覧ください:https://youtu.be/Mp7T7x1oxDk –

答えて

1

新しいルートを登録するときは、permission_callbackパラメータを追加する必要があります。

add_action('rest_api_init', function ($data) { 
     register_rest_route('mladi-info/v1', '/user/favorites', 
      array(
       'methods' => 'GET', 
       'callback' => 'mi_get_favorite_posts', 
       'permission_callback' => function ($request) { 
         if (current_user_can('edit_others_posts')) 
         return true; 
       } 
      ) 
     ); 
    }); 

JWT認証プラグインは、ヘッダーからトークン値に基づいて、機能をpermission_callbackするユーザーオブジェクトを提供します、そしてあなたがする必要があるすべては返される、その関数内でいくつかの「許可ロジック」をうまくすることですブール値。

私が投稿したソリューションでは、コールバックによって、アクセスしたユーザーが「edit_others_posts」機能を持っている場合のみ、RESTエンドポイントへのアクセスが許可されます。これは管理者と編集者の場合です。