AuthServiceProvider.php */ protected $policies = [ // 'App\Models\Model' => 'App\Policies\ModelPolicy', ]; /** * Register any authentication / authorization services. */ public function boot(): void { $this->registerPolicies(); // Posts permissions Gate::define('posts.list', function ($user) { return in_array($user->role, [ UserRole::ADMIN, UserRole::PUBLISHER, UserRole::AUTHOR, ]); }); Gate::define('posts.edit', function ($user) { return in_array($user->role, [ UserRole::ADMIN, UserRole::PUBLISHER, UserRole::AUTHOR, ]); }); Gate::define('posts.publish', function ($user) { return in_array($user->role, [ UserRole::ADMIN, UserRole::PUBLISHER, UserRole::AUTHOR, ]); }); Gate::define('posts.delete', function ($user) { return in_array($user->role, [ UserRole::ADMIN, UserRole::PUBLISHER, UserRole::AUTHOR, ]); }); // Topics permissions Gate::define('topics.list', function ($user) { return in_array($user->role, [ UserRole::ADMIN, UserRole::PUBLISHER, UserRole::AUTHOR, ]); }); Gate::define('topics.edit', function ($user) { return in_array($user->role, [ UserRole::ADMIN, UserRole::PUBLISHER, UserRole::AUTHOR, ]); }); Gate::define('topics.publish', function ($user) { return in_array($user->role, [ UserRole::ADMIN, UserRole::PUBLISHER, UserRole::AUTHOR, ]); }); Gate::define('topics.delete', function ($user) { return in_array($user->role, [ UserRole::ADMIN, UserRole::PUBLISHER, UserRole::AUTHOR, ]); }); // Authors permissions Gate::define('authors.list', function ($user) { return in_array($user->role, [ UserRole::ADMIN, UserRole::PUBLISHER, ]); }); Gate::define('authors.edit', function ($user) { return in_array($user->role, [ UserRole::ADMIN, UserRole::PUBLISHER, ]); }); // Users permissions Gate::define('users.list', function ($user) { return $user->role === UserRole::ADMIN; }); Gate::define('users.edit', function ($user) { return $user->role === UserRole::ADMIN; }); // Settings permissions Gate::define('settings.edit', function ($user) { return in_array($user->role, [ UserRole::ADMIN, UserRole::PUBLISHER, ]); }); } }