// You generate such file with Artisan command "php artisan make:policy ArticlePolicy"
// In each method, you automatically get the User object from the session
// Each method should return TRUE or FALSE
// Also, you may accept more parameters, which you would need to pass when checking
final class ArticlePolicy
{
const UPDATE = 'update';
const DELETE = 'delete';
const APPROVE = 'approve';
const DISAPPROVE = 'disapprove';
const PINNED = 'togglePinnedStatus';
public function update(User $user, Article $article): bool
{
return $article->isAuthoredBy($user) || $user->isModerator() || $user->isAdmin();
}
public function delete(User $user, Article $article): bool
{
return $article->isAuthoredBy($user) || $user->isModerator() || $user->isAdmin();
}
public function approve(User $user, Article $article): bool
{
return $user->isModerator() || $user->isAdmin();
}
public function disapprove(User $user, Article $article): bool
{
return $user->isModerator() || $user->isAdmin();
}
}