diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php
index 5ed1910c..2d148c76 100644
--- a/app/Providers/AppServiceProvider.php
+++ b/app/Providers/AppServiceProvider.php
@@ -64,18 +64,5 @@ public function boot(): void
'favoriteMenuIds' => $menuService->getFavoriteMenuIds(),
]);
});
-
- // 테넌트 콘솔 사이드바에 해당 테넌트의 메뉴 데이터 전달
- View::composer('partials.tenant-console-sidebar', function ($view) {
- $tenantId = $view->getData()['consoleTenantId'] ?? request()->route('tenantId');
- if ($tenantId) {
- $menuService = app(SidebarMenuService::class);
- $menusBySection = $menuService->getTenantMenusBySection((int) $tenantId);
-
- $view->with([
- 'tenantMainMenus' => $menusBySection['main'],
- ]);
- }
- });
}
}
diff --git a/app/Services/SidebarMenuService.php b/app/Services/SidebarMenuService.php
index 505cb0bf..0b51a208 100644
--- a/app/Services/SidebarMenuService.php
+++ b/app/Services/SidebarMenuService.php
@@ -131,35 +131,6 @@ public function getMenusBySection(?User $user = null): array
];
}
- /**
- * 특정 테넌트의 전체 메뉴 트리 조회 (권한 필터 없음, 관리 콘솔용)
- */
- public function getTenantMenuTree(int $tenantId): Collection
- {
- $allMenus = Menu::withoutGlobalScopes()
- ->where('tenant_id', $tenantId)
- ->where('is_active', true)
- ->where('hidden', false)
- ->orderBy('sort_order')
- ->get();
-
- return $this->buildMenuTree($allMenus);
- }
-
- /**
- * 특정 테넌트의 섹션별 메뉴 조회 (관리 콘솔용)
- */
- public function getTenantMenusBySection(int $tenantId): array
- {
- $menuTree = $this->getTenantMenuTree($tenantId);
-
- return [
- 'main' => $menuTree->filter(fn ($m) => $m->getSection() === 'main')->values(),
- 'tools' => $menuTree->filter(fn ($m) => $m->getSection() === 'tools')->values(),
- 'labs' => $menuTree->filter(fn ($m) => $m->getSection() === 'labs')->values(),
- ];
- }
-
/**
* 메뉴 트리 구성
*/
diff --git a/public/js/context-menu.js b/public/js/context-menu.js
index 6ed7723d..5d351b14 100644
--- a/public/js/context-menu.js
+++ b/public/js/context-menu.js
@@ -121,11 +121,8 @@ class ContextMenu {
window.location.href = `/tenants/${id}/edit`;
break;
case 'switch-tenant':
- {
- const w = 1400, h = 900;
- const l = (screen.width - w) / 2, t = (screen.height - h) / 2;
- window.open(`/tenant-console/${id}`, `tenant_${id}`,
- `width=${w},height=${h},left=${l},top=${t},resizable=yes,scrollbars=yes`);
+ if (typeof openTenantConsole === 'function') {
+ openTenantConsole(id, name);
}
break;
case 'view-user':
diff --git a/resources/views/components/context-menu.blade.php b/resources/views/components/context-menu.blade.php
index f5bd7c5e..315908bb 100644
--- a/resources/views/components/context-menu.blade.php
+++ b/resources/views/components/context-menu.blade.php
@@ -28,12 +28,11 @@ class="w-full px-4 py-2 text-left text-sm text-gray-700 hover:bg-gray-100 flex i
{{-- 사용자 관련 메뉴 --}}
diff --git a/resources/views/partials/tenant-console-sidebar.blade.php b/resources/views/partials/tenant-console-sidebar.blade.php
index aaa9afd0..d3c83351 100644
--- a/resources/views/partials/tenant-console-sidebar.blade.php
+++ b/resources/views/partials/tenant-console-sidebar.blade.php
@@ -1,8 +1,51 @@
-{{-- 테넌트 콘솔 전용 사이드바 (DB 기반 메뉴 시스템) --}}
+{{-- 테넌트 콘솔 전용 사이드바 (메인 사이드바 스타일 통일) --}}
@php
$tenantId = $consoleTenantId ?? 0;
+ $currentUrl = request()->url();
$baseUrl = "/tenant-console/{$tenantId}";
- $menus = $tenantMainMenus ?? collect();
+
+ $menuGroups = [
+ [
+ 'title' => '권한 관리',
+ 'icon' => 'ri-shield-keyhole-line',
+ 'items' => [
+ ['name' => '권한 관리', 'url' => "{$baseUrl}/permissions", 'icon' => 'ri-key-2-line'],
+ ['name' => '역할 관리', 'url' => "{$baseUrl}/roles", 'icon' => 'ri-user-settings-line'],
+ ['name' => '역할-권한 매핑', 'url' => "{$baseUrl}/role-permissions", 'icon' => 'ri-links-line'],
+ ['name' => '부서-권한 매핑', 'url' => "{$baseUrl}/department-permissions", 'icon' => 'ri-building-2-line'],
+ ['name' => '사용자-권한 매핑', 'url' => "{$baseUrl}/user-permissions", 'icon' => 'ri-user-star-line'],
+ ],
+ ],
+ [
+ 'title' => '시스템 관리',
+ 'icon' => 'ri-settings-3-line',
+ 'items' => [
+ ['name' => 'AI 설정', 'url' => "{$baseUrl}/system/ai-config", 'icon' => 'ri-robot-line'],
+ ['name' => '휴일 관리', 'url' => "{$baseUrl}/system/holidays", 'icon' => 'ri-calendar-event-line'],
+ ['name' => '시스템 알림', 'url' => "{$baseUrl}/system/alerts", 'icon' => 'ri-notification-3-line'],
+ ['name' => '공통코드', 'url' => "{$baseUrl}/common-codes", 'icon' => 'ri-code-s-slash-line'],
+ ['name' => '카테고리', 'url' => "{$baseUrl}/categories", 'icon' => 'ri-node-tree'],
+ ['name' => '감사 로그', 'url' => "{$baseUrl}/audit-logs", 'icon' => 'ri-file-list-3-line'],
+ ],
+ ],
+ [
+ 'title' => '생산관리',
+ 'icon' => 'ri-instance-line',
+ 'items' => [
+ ['name' => '품목관리', 'url' => "{$baseUrl}/production/items", 'icon' => 'ri-box-3-line'],
+ ['name' => '품목필드', 'url' => "{$baseUrl}/production/item-fields", 'icon' => 'ri-list-settings-line'],
+ ['name' => '견적수식', 'url' => "{$baseUrl}/production/quote-formulas", 'icon' => 'ri-calculator-line'],
+ ['name' => '카테고리', 'url' => "{$baseUrl}/production/categories", 'icon' => 'ri-node-tree'],
+ ],
+ ],
+ [
+ 'title' => '게시판관리',
+ 'icon' => 'ri-article-line',
+ 'items' => [
+ ['name' => '게시판 목록', 'url' => "{$baseUrl}/boards", 'icon' => 'ri-layout-grid-line'],
+ ],
+ ],
+ ];
@endphp
\ No newline at end of file
+