- Убедитесь, что вы опубликовали файл конфигурации (
config/permissions.php
) пакета. Если нет, запустите
php artisan vendor:publish --provider="Spatie\Permission\PermissionServiceProvider"
Расширение модели
Spatie\Permission\Models\Role
. Измените файл конфигурации так, чтобы он указывал на расширенную ролевую модель вместо стандартной. Переопределите метод stati c
boot
внутри расширенную модель и добавьте этот обратный вызов:
self::creatig(function($model) {
$permissions = $model->permissions;
$existingRoles = Role::whereHas('permissions', function($query) using $permissions {
$query->whereIn('id', $permissions->pluck('id'));
})->get();
if (!$existingPosts->isEmpty()) throw Exception('There is already a role with these permissions');
});
Вы можете перехватить это исключение позже в контроллере и вернуть сообщение об ошибке в качестве ответа, если вы хотите, чтобы пользователь знал, что произошло.