admin = $admin; } /** * Handle routing to the dashboard, group and build objects. * * @param ServerRequestInterface $request * @param RequestHandlerInterface $handler * @return ResponseInterface */ public function process(ServerRequestInterface $request, RequestHandlerInterface $handler) : ResponseInterface { $this->startTimer(); $context = $request->getAttributes(); $query = $request->getQueryParams(); /** @var Route $route */ $route = $context['route']; $normalized = mb_strtolower(trim($route->getRoute(), '/')); $parts = explode('/', $normalized); array_shift($parts); // Admin path $routeStr = implode('/', $parts); $view = array_shift($parts); $path = implode('/', $parts); $task = $this->container['task'] ?? $query['task'] ?? null; $action = $this->container['action'] ?? $query['action'] ?? null; $params = ['view' => $view, 'route' => $routeStr, 'path' => $path, 'parts' => $parts, 'task' => $task, 'action' => $action]; $request = $request->withAttribute('admin', $params); // Run login controller if user isn't fully logged in or asks to logout. $user = $this->admin->user; if (!$user->authorized || !$user->authorize('admin.login')) { $params = (new LoginRouter())->matchServerRequest($request); $request = $request->withAttribute('admin', $params + $request->getAttribute('admin')); } $this->admin->request = $request; $response = $handler->handle($request); $this->stopTimer(); // Never allow admin pages to be rendered in ,