"Управление ролями и правами доступа с помощью Spatie Permission"
Игнатов Андрей
Founder & Techlead
19 мая 2026
47 просмотров
Практически любое серьёзное Laravel-приложение требует системы ролей и прав доступа.
Самый популярный пакет для этого — Spatie Permission.
С его помощью можно реализовать:
- RBAC;
- роли пользователей;
- permissions;
- middleware;
- доступ к разделам сайта.
Почему Laravel Spatie Permission стал стандартом
Пакет:
- стабилен;
- поддерживается сообществом;
- хорошо интегрирован с Laravel auth;
- поддерживает caching;
- легко масштабируется.
Установка Spatie Permission
composer require spatie/laravel-permission
Публикация migration
php artisan vendor:publish --provider="Spatie\Permission\PermissionServiceProvider"
Миграции
php artisan migrate
Подключение HasRoles
Модель User:
use Spatie\Permission\Traits\HasRoles;
class User extends Authenticatable
{
use HasRoles;
}
Создание ролей
use Spatie\Permission\Models\Role;
Role::create(['name' => 'admin']);
Создание permissions
use Spatie\Permission\Models\Permission;
Permission::create(['name' => 'edit posts']);
Назначение роли
$user->assignRole('admin');
Назначение permission
$user->givePermissionTo('edit posts');
Проверка роли
$user->hasRole('admin');
Проверка permission
$user->can('edit posts');
Middleware Spatie
Laravel middleware:
Route::middleware(['role:admin'])->group(function () {
//
});
Permission middleware
Route::middleware(['permission:edit posts'])->group(function () {
//
});
Sync Roles
$user->syncRoles(['admin', 'editor']);
Super Admin
Популярный подход:
Gate::before(function ($user) {
return $user->hasRole('super-admin') ? true : null;
});
Laravel Permission Cache
Spatie использует кеширование permissions.
Очистка:
php artisan permission:cache-reset
RBAC в Laravel
Role-Based Access Control позволяет:
- разграничивать доступ;
- управлять админкой;
- строить SaaS;
- контролировать API.
Laravel Policies и Gates
Spatie отлично работает вместе с:
- Policies;
- Gates;
- middleware.
Лучшие практики Permission System
Рекомендуется:
- использовать roles + permissions;
- не хардкодить роли;
- разделять admin/user права;
- использовать middleware.
Где используется Laravel Permission
Чаще всего:
- CRM;
- SaaS;
- LMS;
- маркетплейсы;
- корпоративные панели.
Итоги
Laravel Spatie Permission — лучший инструмент для управления ролями и permissions.
С помощью пакета можно быстро реализовать:
- RBAC;
- гибкую систему доступа;
- middleware authorization;
- управление ролями пользователей.