'view', 'HEAD' => 'view', 'POST' => 'create', 'PUT' => 'update', 'PATCH' => 'update', 'DELETE' => 'delete', ]; public function handle(Request $request, Closure $next) { $route = $request->route(); if (! $route) { return $next($request); } // 1) 이미 perm이 attributes에 있으면 존중 if ($request->attributes->get('perm')) { return $next($request); } // 2) 라우트 defaults로 강제 지정된 perm/permission 우선 $forced = $route->defaults['perm'] ?? $route->defaults['permission'] ?? null; if ($forced) { $request->attributes->set('perm', $forced); return $next($request); } // 3) menu_id 가 지정된 경우: HTTP 메서드 → 액션으로 perm 생성 $menuId = $route->defaults['menu_id'] ?? null; if ($menuId) { $action = $this->actionMap[$request->method()] ?? 'view'; $request->attributes->set('perm', "menu:{$menuId}.{$action}"); } // 4) menu_id/perm 둘 다 없으면 설정 안 함(체크 미들웨어 정책에 따름) return $next($request); } }