/** * @param RouteInstance $route */ public function setRoute(RouteInstance $route) { // Compile route $request = new Request(); $route->matches($request); $this->route = $route; }
public function validateSignedURL($actual_url, $signed_url, $substitions) { $current_route = Request::route(); $current_route_name = $current_route->getName(); if (isset($substitions[$current_route_name])) { $substition = $substitions[$current_route_name]; // make sure the host of the signed URL matches the host of the substitution URL if (isset($substition['host'])) { $signed_host = $this->getHostFromURL($signed_url); $allowed_host = $substition['host']; if ($signed_host != $allowed_host) { Log::debug("HOST MISMATCH: \$signed_host={$signed_host} \$allowed_host={$allowed_host}"); // no host match - return false return false; } } // check the route $substitute_route = new Route($current_route->getMethods(), $substition['route'], []); $signed_request = \Illuminate\Http\Request::create($signed_url, Request::method()); if ($substitute_route->matches($signed_request)) { // the allowed substitute route matches the signed request return true; } Log::debug("ROUTE MISMATCH: pathinfo=" . json_encode(Request::getFacadeRoot()->getPathInfo()) . " allowed route={$substition['route']}"); } // this signed URL was not valid return false; }
/** * Determine if the route matches given request. * * @param \Illuminate\Http\Request $request * @param bool $includingMethod * * @return bool */ public function matches(Request $request, $includingMethod = true) { // If this route uses a WordPress conditional tag if ($this->condition()) { // Loop trough every validator and if the route passes, return true else false. foreach ($this->getWpValidators() as $validator) { return $validator->matches($this, $request); } return false; } // If no WordPress condition is found, use the normal way of getting a route $matches = parent::matches($request, $includingMethod); // If we can not find a route using the normal laravel router check if the route which is being checked has the uri "404". If so we return this route as the valid one. return !$matches && $this->getUri() === '404' ? true : $matches; }