app->singleton(SidebarMenuService::class); } /** * Bootstrap any application services. */ public function boot(): void { // File Observer: 파일 생성/삭제 시 테넌트 저장소 사용량 자동 업데이트 File::observe(FileObserver::class); // Morph Map: Polymorphic 관계 모델 등록 Relation::enforceMorphMap([ 'user' => User::class, 'post' => Post::class, 'department' => Department::class, ]); // 일회성 메뉴명 변경: 협력사관리 → 거래처 관리 if (! Cache::has('menu_rename_partner_to_vendor')) { $updated = DB::table('menus') ->where('tenant_id', 1) ->whereIn('name', ['협력사관리', '협력사 관리']) ->update(['name' => '거래처 관리']); if ($updated > 0) { Cache::put('menu_rename_partner_to_vendor', true, now()->addYear()); } } // 사이드바에 메뉴 데이터 전달 View::composer('partials.sidebar', function ($view) { $menuService = app(SidebarMenuService::class); $menusBySection = $menuService->getMenusBySection(); $view->with([ 'mainMenus' => $menusBySection['main'], 'toolsMenus' => $menusBySection['tools'], 'labsMenus' => $menusBySection['labs'], 'favoriteMenus' => $menuService->getFavoriteMenus(), 'favoriteMenuIds' => $menuService->getFavoriteMenuIds(), ]); }); } }