"Управление ролями и правами доступа с помощью 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;
  • управление ролями пользователей.

👉 Заказать бесплатный экспресс-аудит проекта

Задать вопрос

Если у вас возник технический вопрос по нашим статьям или появилась потребность в профессиональной разработке сложного веб-проекта — оставьте свои контакты. Техлид «Команды-А» свяжется с вами, чтобы проконсультировать и помочь найти оптимальное решение.

Нажимая кнопку, вы соглашаетесь с политикой обработки персональных данных.