Я бы предложил использовать выделенный класс политики , который делает код достаточно выразительным в ваших намерениях.
, поэтому сначала запустите php artisan make:policy PostPolicy
. Затем откройте свой класс Policy и обновите его следующим образом:
namespace App\Policies;
use App\User;
use App\Post;
class PostPolicy
{
/**
* Determine if the given post can be updated by the user.
*
* @param \App\User $user
* @param \App\Post $post
* @return bool
*/
public function update(User $user, Post $post)
{
// May be define isAdmin() on user class ??
return $user->role_id==4 || $user->id === $post->user_id;
}
}
после создания политики, затем вы можете зарегистрировать его в своем AuthService provider
как
protected $policies = [
Post::class => PostPolicy::class,
];
Кстати, также дать краткое прочтение Политика автоматического обнаружения
Как только это будет сделано, это то, что вы можете сделать,
public function __construct($post_number)
{
$posts=Post::where('post_number',$post_number)->first();
$this->authorize('update', PostPolicy::class);
}