ユーザIDと投稿user_idが一致すると、ユーザに投稿を更新する権限を与えようとしています。私はAuthServiceProvider
の承認のためにカスタムコールバックを持っています。これは、boot()
機能のAPIキーである'Authorization'
ヘッダーをチェックします。ルーメンの承認 - 配列のメンバ関数のパラメータ()への呼び出し
$this->app['auth']->viaRequest('api', function ($request) {
if($request->header('Authorization')) {
$user = $this->getUserFromAuthorizationHeader($request);
if (!empty($user)) {
$request->request->add(['userid' => $user->id]);
}
return $user;
}
});
機能getUserFromAuthorizationHeader
はRequest $request
パラメータを取得し、APIキーであるAuthorization
ヘッダを抽出し、次いでUser
オブジェクトを返します。
コントローラからゲートウェイupdate-post
を呼び出すときに、コールバックから返されたユーザーとポストが渡されたことを確認するゲートupdate-post
を定義しました。 using Log:: info()
を - - 私は私のPostController
に門を呼び出しています
Gate::define('update-post', function($user, $post){
Log::info($user);
return $user->id == $post->user_id;
});
方法は、以下の
...
$user = $this->getUserFromRequest($request);
if(Gate::denies('update-post', $post)) {
return response("Unauthorized.", 401);
}
...
である私は、ログインして私の門で$user
と$post
変数と私は正常に正しいユーザーを見ることができますし、投稿オブジェクトは渡されますが、私はエラーCall to a member function parameter() on array
を取得し、なぜ私はそれを取得しているのか理解できません。
のような配列を取得している場合と比較する前のコレクションに変換する必要があり –
@ Mr.Pyramid私はコード内のどこにでも 'parameter()'を呼び出すことはありません。 – qasimalbaqali
は '$ user'のように見え、' $ post'は配列型ではありませんか? –