「更新 - 投稿」の権限を持つユーザーがデータベース内の投稿を編集できるLaravelゲートのチュートリアルに従っています。さらに、権限に関係なく、どのユーザーでも投稿した投稿を編集できます。/AuthServiceProvider.php自分の投稿を更新するLaravelユーザーの権限
アプリ/プロバイダ:
Gate::define('update-post', function ($user, \App\Post $post) {
return $user->hasAccess(['update-post']) or $user->id == $post->user_id;
});
ルート/ web.php:
Route::get('/edit/{post}', '[email protected]')
->name('edit_post')
->middleware('can:update-post,post');
Route::post('/edit/{post}', '[email protected]')
->name('update_post')
->middleware('can:update-post,post');
私が探している新しい権限を追加する方法である、「アップデートを言いますその権限を持つユーザーだけが自分の投稿を編集することができます。
たとえば、モデレータは、すべての投稿を編集できる権限 'update-post'を持っています。通常のユーザーは、 'update-own-post'という新しい権限が割り当てられていても、現在実装されているすべてのユーザーに割り当てられていない場合にのみ、自分の投稿を編集することができます。
この変更を自分のコードに実装するにはどうすればよいですか?
ユーザーの種類を確認したいので、次のいずれかに該当する場合、彼らは編集することができるはず門で
私に正しい方向を指摘していただきありがとうございます。私はゲートを以下のように変更することで必要なものを達成することができました: 'Gate :: define( 'update-post'、function($ user、\ App \ Post $ post){ if(($ user-> id trueを返します; else if($ user-> hasAccess(['update-post']) ) true; return }); 'しかし、よりクリーンなコードをいただければ幸いです。 –
私はあなたが持っていることがうれしいです、あなたが持っているもののよりクリーンなバージョンのために私のコードをチェックしてください。また、PHPでOR( '' || '')を調べることをお勧めします。これは余分な条件チェックを取り除くのに役立ちます。 http://php.net/manual/en/language.operators.logical.php – kyle