Esempio n. 1
0
 /**
  * @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;
 }
Esempio n. 3
0
 /**
  * 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;
 }