forgetCachedPermissions(); $permissions = [ // Работа с персональными данными. 'pdn.view', 'pdn.create', 'pdn.update', 'pdn.delete', 'pdn.export', // Администрирование пользователей и прав (УПД.13). 'users.manage', 'roles.manage', // Просмотр журналов аудита. 'audit.view', ]; foreach ($permissions as $permission) { Permission::findOrCreate($permission, 'web'); } // super_admin — только для DBA, не выдаётся через веб-интерфейс. $superAdmin = Role::findOrCreate('super_admin', 'web'); $superAdmin->givePermissionTo(Permission::all()); // admin — управление пользователями, полный доступ к ПДн. $admin = Role::findOrCreate('admin', 'web'); $admin->givePermissionTo([ 'pdn.view', 'pdn.create', 'pdn.update', 'pdn.delete', 'pdn.export', 'users.manage', 'roles.manage', ]); // operator — работа с ПДн в рамках задач, без управления пользователями. $operator = Role::findOrCreate('operator', 'web'); $operator->givePermissionTo(['pdn.view', 'pdn.create', 'pdn.update']); // auditor — только чтение журналов (разделение обязанностей). $auditor = Role::findOrCreate('auditor', 'web'); $auditor->givePermissionTo(['audit.view']); // user — доступ только к своим данным. $user = Role::findOrCreate('user', 'web'); $user->givePermissionTo(['pdn.view']); } }