ensurePermission($permissionName); } // ── Menu items ─────────────────────────────────────────────────────── if (DB::table('bap_menu')->where('label', 'Help')->where('url', '#')->exists()) { return; } // Push Settings to last position DB::table('bap_menu')->where('id', 18)->update(['order_by' => 999]); $parentId = DB::table('bap_menu')->insertGetId([ 'label' => 'Help', 'url' => '#', 'icon' => 'help_outline', 'permission' => 'help.browse', 'parent_id' => null, 'visibility' => 1, 'order_by' => 11, 'dont_translate' => 1, ]); DB::table('bap_menu')->insert([ 'label' => 'API Integration', 'url' => '/help/api-integration', 'icon' => 'code', 'permission' => 'help.api_integration', 'parent_id' => $parentId, 'visibility' => 0, 'order_by' => 1, 'dont_translate' => 1, ]); } private function ensurePermission($name) { $permissions = Permission::where('name', $name) ->where('guard_name', 'web') ->get(); if ($permissions->isEmpty()) { Permission::create([ 'name' => $name, 'guard_name' => 'web', 'perm_group' => self::PERMISSION_GROUP, ]); return; } // Older installations may already have this permission under the // lowercase "help" group. Update every matching row without creating // a duplicate or touching its role assignments. foreach ($permissions as $permission) { if ($permission->perm_group !== self::PERMISSION_GROUP) { $permission->update(['perm_group' => self::PERMISSION_GROUP]); } } } public function down() { // Remove permissions Permission::whereIn('name', self::PERMISSIONS)->delete(); // Remove Help menu items $parent = DB::table('bap_menu') ->where('label', 'Help') ->where('url', '#') ->first(); // Remove Help menu items $parent = DB::table('bap_menu')->where('label', 'Help')->where('url', '#')->first(); if ($parent) { DB::table('bap_menu')->where('parent_id', $parent->id)->delete(); DB::table('bap_menu')->where('id', $parent->id)->delete(); } // Restore Settings order DB::table('bap_menu')->where('id', 18)->update(['order_by' => 11]); } }