diff --git a/app/Http/Controllers/MenuSyncController.php b/app/Http/Controllers/MenuSyncController.php index e260f994..9abcf0ec 100644 --- a/app/Http/Controllers/MenuSyncController.php +++ b/app/Http/Controllers/MenuSyncController.php @@ -158,6 +158,7 @@ public function import(Request $request): JsonResponse } $validated = $request->validate([ + 'tenant_id' => 'nullable|integer', 'menus' => 'required|array', 'menus.*.name' => 'required|string|max:100', 'menus.*.url' => 'nullable|string|max:255', @@ -168,9 +169,12 @@ public function import(Request $request): JsonResponse 'menus.*.children' => 'nullable|array', ]); + // 요청에서 tenant_id를 받으면 사용 (API 호출 시 세션 없으므로 필수) + $importTenantId = $validated['tenant_id'] ?? $this->getTenantId(); + $imported = 0; foreach ($validated['menus'] as $menuData) { - $this->importMenu($menuData); + $this->importMenu($menuData, null, $importTenantId); $imported++; } @@ -232,6 +236,7 @@ public function push(Request $request): JsonResponse 'X-Menu-Sync-Key' => $env['api_key'], 'Accept' => 'application/json', ])->timeout(15)->post(rtrim($env['url'], '/').'/menu-sync/import', [ + 'tenant_id' => $this->getTenantId(), 'menus' => $menuData, ]); @@ -683,12 +688,14 @@ private function applyOrder(array $orderMap, int $tenantId, ?int $parentId = nul /** * 메뉴 Import */ - private function importMenu(array $data, ?int $parentId = null): void + private function importMenu(array $data, ?int $parentId = null, ?int $tenantId = null): void { + $tenantId = $tenantId ?? $this->getTenantId(); + // 부모 메뉴 찾기 if (! $parentId && ! empty($data['parent_name'])) { $parent = Menu::withoutGlobalScopes() - ->where('tenant_id', $this->getTenantId()) + ->where('tenant_id', $tenantId) ->where('name', $data['parent_name']) ->first(); $parentId = $parent?->id; @@ -697,7 +704,7 @@ private function importMenu(array $data, ?int $parentId = null): void // name + parent_id로 매칭 (동명 메뉴가 다른 계층에 있을 때 자기참조 방지) $menu = Menu::withoutGlobalScopes()->updateOrCreate( [ - 'tenant_id' => $this->getTenantId(), + 'tenant_id' => $tenantId, 'name' => $data['name'], 'parent_id' => $parentId, ], @@ -713,7 +720,7 @@ private function importMenu(array $data, ?int $parentId = null): void // 자식 메뉴 처리 if (! empty($data['children'])) { foreach ($data['children'] as $child) { - $this->importMenu($child, $menu->id); + $this->importMenu($child, $menu->id, $tenantId); } } }