# HG changeset patch # User ymh # Date 1457115508 -3600 # Node ID 8d688175513a6b1a25b2562de49e1d12ebbef241 # Parent 3079cbf80006ad98a93668fbcabe6471cd42ea05 add proxy for bnf completion and sparql request + upgrade kernel + route diff -r 3079cbf80006 -r 8d688175513a server/src/app/Facades/GuzzleFacade.php --- a/server/src/app/Facades/GuzzleFacade.php Fri Mar 04 10:08:52 2016 +0100 +++ b/server/src/app/Facades/GuzzleFacade.php Fri Mar 04 19:18:28 2016 +0100 @@ -6,7 +6,7 @@ class GuzzleFacade extends Facade { protected static function getFacadeAccessor() { - return 'guzzle'; + return 'Guzzle'; } } diff -r 3079cbf80006 -r 8d688175513a server/src/app/Http/Controllers/Proxy/BnfController.php --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/server/src/app/Http/Controllers/Proxy/BnfController.php Fri Mar 04 19:18:28 2016 +0100 @@ -0,0 +1,53 @@ +header($h); + if($headerValue) { + $headers[$h] = $headerValue; + } + } + + $complResp = Guzzle::get($url, ['query' => $req->all(), 'headers' => $headers]); + + $resp = response((string)$complResp->getBody(), $complResp->getStatusCode()); + foreach ($complResp->getHeaders() as $name => $values) { + if($name != 'Transfer-Encoding') { + $resp->header($name, $values); + } + } + + return $resp; + + } + + // proxy Auto completion query for bnf + public function proxyAutoCompletion(Request $req) { + return $this->proxyQuery($req, config('corpusparole.bnf_completion_url')); + } + + // proxy sparql query for bnf + public function proxySparql(Request $req) { + + return $this->proxyQuery($req, config('corpusparole.bnf_query_url')); + + } + +} diff -r 3079cbf80006 -r 8d688175513a server/src/app/Http/Kernel.php --- a/server/src/app/Http/Kernel.php Fri Mar 04 10:08:52 2016 +0100 +++ b/server/src/app/Http/Kernel.php Fri Mar 04 19:18:28 2016 +0100 @@ -6,28 +6,69 @@ class Kernel extends HttpKernel { + /** * The application's global HTTP middleware stack. * + * These middleware are run during every request to your application. + * * @var array */ protected $middleware = [ - 'Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode', - 'Illuminate\Cookie\Middleware\EncryptCookies', - 'Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse', - 'Illuminate\Session\Middleware\StartSession', - 'Illuminate\View\Middleware\ShareErrorsFromSession', - 'CorpusParole\Http\Middleware\VerifyCsrfToken', + \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class, ]; - + /** + * The application's route middleware groups. + * + * @var array + */ + protected $middlewareGroups = [ + 'web' => [ + \CorpusParole\Http\Middleware\EncryptCookies::class, + \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, + \Illuminate\Session\Middleware\StartSession::class, + \Illuminate\View\Middleware\ShareErrorsFromSession::class, + \CorpusParole\Http\Middleware\VerifyCsrfToken::class, + ], + 'api' => [ + 'throttle:60,1', + ], + ]; /** * The application's route middleware. * + * These middleware may be assigned to groups or used individually. + * * @var array */ protected $routeMiddleware = [ - 'auth' => 'CorpusParole\Http\Middleware\Authenticate', - 'auth.basic' => 'Illuminate\Auth\Middleware\AuthenticateWithBasicAuth', - 'guest' => 'CorpusParole\Http\Middleware\RedirectIfAuthenticated', + 'auth' => \CorpusParole\Http\Middleware\Authenticate::class, + 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, + 'guest' => \CorpusParole\Http\Middleware\RedirectIfAuthenticated::class, + 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, ]; + // /** + // * The application's global HTTP middleware stack. + // * + // * @var array + // */ + // protected $middleware = [ + // // 'Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode', + // // 'Illuminate\Cookie\Middleware\EncryptCookies', + // // 'Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse', + // // 'Illuminate\Session\Middleware\StartSession', + // // 'Illuminate\View\Middleware\ShareErrorsFromSession', + // // 'CorpusParole\Http\Middleware\VerifyCsrfToken', + // ]; + // + // /** + // * The application's route middleware. + // * + // * @var array + // */ + // protected $routeMiddleware = [ + // 'auth' => 'CorpusParole\Http\Middleware\Authenticate', + // 'auth.basic' => 'Illuminate\Auth\Middleware\AuthenticateWithBasicAuth', + // 'guest' => 'CorpusParole\Http\Middleware\RedirectIfAuthenticated', + // ]; } diff -r 3079cbf80006 -r 8d688175513a server/src/app/Http/Middleware/Authenticate.php --- a/server/src/app/Http/Middleware/Authenticate.php Fri Mar 04 10:08:52 2016 +0100 +++ b/server/src/app/Http/Middleware/Authenticate.php Fri Mar 04 19:18:28 2016 +0100 @@ -3,42 +3,25 @@ namespace CorpusParole\Http\Middleware; use Closure; -use Illuminate\Contracts\Auth\Guard; +use Illuminate\Support\Facades\Auth; class Authenticate { /** - * The Guard implementation. - * - * @var Guard - */ - protected $auth; - - /** - * Create a new filter instance. - * - * @param Guard $auth - */ - public function __construct(Guard $auth) - { - $this->auth = $auth; - } - - /** * Handle an incoming request. * - * @param \Illuminate\Http\Request $request - * @param \Closure $next - * + * @param \Illuminate\Http\Request $request + * @param \Closure $next + * @param string|null $guard * @return mixed */ - public function handle($request, Closure $next) + public function handle($request, Closure $next, $guard = null) { - if ($this->auth->guest()) { - if ($request->ajax()) { + if (Auth::guard($guard)->guest()) { + if ($request->ajax() || $request->wantsJson()) { return response('Unauthorized.', 401); } else { - return redirect()->guest('auth/login'); + return redirect()->guest('login'); } } diff -r 3079cbf80006 -r 8d688175513a server/src/app/Http/Middleware/EncryptCookies.php --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/server/src/app/Http/Middleware/EncryptCookies.php Fri Mar 04 19:18:28 2016 +0100 @@ -0,0 +1,17 @@ +auth = $auth; - } - - /** * Handle an incoming request. * - * @param \Illuminate\Http\Request $request - * @param \Closure $next - * + * @param \Illuminate\Http\Request $request + * @param \Closure $next + * @param string|null $guard * @return mixed */ - public function handle($request, Closure $next) + public function handle($request, Closure $next, $guard = null) { - if ($this->auth->check()) { - return new RedirectResponse(url('/home')); + if (Auth::guard($guard)->check()) { + return redirect('/'); } return $next($request); diff -r 3079cbf80006 -r 8d688175513a server/src/app/Http/Middleware/VerifyCsrfToken.php --- a/server/src/app/Http/Middleware/VerifyCsrfToken.php Fri Mar 04 10:08:52 2016 +0100 +++ b/server/src/app/Http/Middleware/VerifyCsrfToken.php Fri Mar 04 19:18:28 2016 +0100 @@ -2,30 +2,17 @@ namespace CorpusParole\Http\Middleware; -use Closure; use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as BaseVerifier; class VerifyCsrfToken extends BaseVerifier { /** - * Handle an incoming request. - * - * @param \Illuminate\Http\Request $request - * @param \Closure $next - * - * @return mixed - */ - public function handle($request, Closure $next) - { - return parent::handle($request, $next); - } - - /** * The URIs that should be excluded from CSRF verification. * * @var array */ protected $except = [ 'api/*', + 'proxy/*' ]; } diff -r 3079cbf80006 -r 8d688175513a server/src/app/Http/routes.php --- a/server/src/app/Http/routes.php Fri Mar 04 10:08:52 2016 +0100 +++ b/server/src/app/Http/routes.php Fri Mar 04 19:18:28 2016 +0100 @@ -11,21 +11,24 @@ | */ -Route::get('/', 'WelcomeController@index'); +Route::group(['middleware' => ['web']], function () { -Route::get('home', 'HomeController@index'); + Route::get('/', 'WelcomeController@index'); + + Route::get('home', 'HomeController@index'); -//Route::get('bo/docs/docDetailClient', 'Bo\DocumentListController@showClient'); -Route::resource('bo/docs', 'Bo\DocumentListController'); -Route::controller('bo/docs', 'Bo\DocumentListController', [ - 'getClient' => 'bo.docs.client' -]); + //Route::get('bo/docs/docDetailClient', 'Bo\DocumentListController@showClient'); + Route::resource('bo/docs', 'Bo\DocumentListController'); + Route::controller('bo/docs', 'Bo\DocumentListController', [ + 'getClient' => 'bo.docs.client' + ]); -Route::controllers([ -// 'auth' => 'Auth\AuthController', - 'password' => 'Auth\PasswordController', -]); + Route::controllers([ + // 'auth' => 'Auth\AuthController', + 'password' => 'Auth\PasswordController', + ]); +}); /* |-------------------------------------------------------------------------- @@ -47,3 +50,15 @@ Route::resource('languages', 'Api\LanguageController', ['only' => ['index']]); }); + +/* +|-------------------------------------------------------------------------- +| Proxy Route +|-------------------------------------------------------------------------- +| +| +*/ +Route::group(['prefix' => 'proxy', 'middleware' => 'cors'] , function() { + Route::get('bnf', 'Proxy\BnfController@proxyAutoCompletion'); + Route::get('bnf-sparql', 'Proxy\BnfController@proxySparql'); +}); diff -r 3079cbf80006 -r 8d688175513a server/src/app/Providers/GuzzleServiceProvider.php --- a/server/src/app/Providers/GuzzleServiceProvider.php Fri Mar 04 10:08:52 2016 +0100 +++ b/server/src/app/Providers/GuzzleServiceProvider.php Fri Mar 04 19:18:28 2016 +0100 @@ -17,7 +17,7 @@ */ public function register() { - $this->app->bind('guzzle', function() { + $this->app->bind('Guzzle', function() { $config = isset($this->app['config']['guzzle']) ? $this->app['config']['guzzle'] : []; return new Client($config); }); diff -r 3079cbf80006 -r 8d688175513a server/src/app/Providers/ViafServiceProvider.php --- a/server/src/app/Providers/ViafServiceProvider.php Fri Mar 04 10:08:52 2016 +0100 +++ b/server/src/app/Providers/ViafServiceProvider.php Fri Mar 04 19:18:28 2016 +0100 @@ -18,7 +18,7 @@ public function register() { $this->app->bind('CorpusParole\Services\ViafResolverInterface', function($app) { - return new ViafResolver($app['guzzle']); + return new ViafResolver($app['Guzzle']); }); } } diff -r 3079cbf80006 -r 8d688175513a server/src/config/app.php --- a/server/src/config/app.php Fri Mar 04 10:08:52 2016 +0100 +++ b/server/src/config/app.php Fri Mar 04 19:18:28 2016 +0100 @@ -206,6 +206,7 @@ 'View' => 'Illuminate\Support\Facades\View', 'Html' => 'Collective\Html\HtmlFacade', 'Form' => 'Collective\Html\FormFacade', + 'Guzzle' => 'CorpusParole\Facades\GuzzleFacade' ], ]; diff -r 3079cbf80006 -r 8d688175513a server/src/config/corpusparole.php --- a/server/src/config/corpusparole.php Fri Mar 04 10:08:52 2016 +0100 +++ b/server/src/config/corpusparole.php Fri Mar 04 19:18:28 2016 +0100 @@ -98,6 +98,7 @@ 'bnf_cache_expiration' => 60*24*30, 'bnf_max_ids' => 500, 'bnf_query_url' => 'http://data.bnf.fr/sparql', + 'bnf_completion_url' => 'http://data.bnf.fr/search-letter/', 'bo_client_environment' => [ "modulePrefix" => "bo-client",