Fixed issue with LV 5.6 upgrade

get current route uri was broken for global
middlewares, thus CORS middleware got broken

Change-Id: Iaf7a244e67afd8b0f007364f18e5de1ba5af64f1
This commit is contained in:
Sebastian Marcet 2019-01-09 12:27:19 -03:00
parent 609ec9c7ce
commit 2d3d20152a
4 changed files with 29 additions and 28 deletions

View File

@ -1,20 +1,18 @@
<?php namespace libs\utils; <?php namespace libs\utils;
/** /**
* Copyright 2015 OpenStack Foundation * Copyright 2015 OpenStack Foundation
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
* You may obtain a copy of the License at * You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0 * http://www.apache.org/licenses/LICENSE-2.0
* Unless required by applicable law or agreed to in writing, software * Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, * distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and * See the License for the specific language governing permissions and
* limitations under the License. * limitations under the License.
**/ **/
use Illuminate\Support\Facades\Route; use Illuminate\Support\Facades\Route;
use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Log;
/** /**
* Class RequestUtils * Class RequestUtils
* @package libs\utils * @package libs\utils
@ -22,23 +20,26 @@ use Illuminate\Support\Facades\Log;
final class RequestUtils { final class RequestUtils {
/** /**
* @param \Illuminate\Http\Request $request
* @return bool|string * @return bool|string
*/ */
public static function getCurrentRoutePath() public static function getCurrentRoutePath($request)
{ {
try try
{ {
$route_path = Route::getCurrentRoute()->uri(); $route = Route::getRoutes()->match($request);
if(is_null($route)) return false;
$route_path = $route->uri();
if (strpos($route_path, '/') != 0) if (strpos($route_path, '/') != 0)
$route_path = '/' . $route_path; $route_path = '/' . $route_path;
return $route_path; return $route_path;
} }
catch (\Exception $ex) catch (\Exception $ex)
{ {
Log::error($ex); Log::error($ex);
} }
return false; return false;
} }
} }

View File

@ -157,7 +157,7 @@ class CORSMiddleware
$real_method = $request->headers->get('Access-Control-Request-Method'); $real_method = $request->headers->get('Access-Control-Request-Method');
$request->setMethod($real_method); $request->setMethod($real_method);
$route_path = RequestUtils::getCurrentRoutePath(); $route_path = RequestUtils::getCurrentRoutePath($request);
if (!$route_path || !$this->checkEndPoint($route_path, $real_method)) if (!$route_path || !$this->checkEndPoint($route_path, $real_method))
{ {
$response = new Response(); $response = new Response();

View File

@ -86,7 +86,7 @@ class OAuth2BearerAccessTokenRequestValidator
try { try {
$route = RequestUtils::getCurrentRoutePath(); $route = RequestUtils::getCurrentRoutePath($request);
if (!$route) { if (!$route) {
throw new OAuth2ResourceServerException( throw new OAuth2ResourceServerException(
400, 400,

View File

@ -62,7 +62,7 @@ final class RateLimitMiddleware extends ThrottleRequests
*/ */
public function handle($request, Closure $next, $max_attempts = 0, $decay_minutes = 0) public function handle($request, Closure $next, $max_attempts = 0, $decay_minutes = 0)
{ {
$route = RequestUtils::getCurrentRoutePath(); $route = RequestUtils::getCurrentRoutePath($request);
$method = $request->getMethod(); $method = $request->getMethod();
$endpoint = $this->endpoint_repository->getApiEndpointByUrlAndMethod($route, $method); $endpoint = $this->endpoint_repository->getApiEndpointByUrlAndMethod($route, $method);
$key = $this->resolveRequestSignature($request); $key = $this->resolveRequestSignature($request);