Policies in Laravel give a structured approach to handling permission logic related to Eloquent models. They are classes that have methods for determining whether a user has permission to do specific activities on a given resource.
Policies are part of Laravel's strong authorization system. It aims to simplify and consolidate permission logic. It does this by using reusable, model-specific classes.
Create a policy:
php artisan make:policy PostPolicy --model=Post
Define a policy method:
public function update(User $user, Post $post)
{
return $user->id === $post->user_id;
}
Register the policy in AuthServiceProvider
:
protected $policies = [
Post::class => PostPolicy::class,
];
Authorize an action in a controller:
$this->authorize('update', $post);