--- 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';
}
}
--- /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 @@
+<?php
+
+namespace CorpusParole\Http\Controllers\Proxy;
+
+use Guzzle;
+
+use Illuminate\Http\Request;
+
+use CorpusParole\Http\Requests;
+use CorpusParole\Http\Controllers\Controller;
+
+
+class BnfController extends Controller
+{
+
+ const HEADERS_FORWARDED = [ "host", "user-agent", "accept", "accept-language", "accept-encoding", "connection" ];
+
+ private function proxyQuery($req, $url) {
+
+ $headers = [];
+ foreach (BnfController::HEADERS_FORWARDED as $h) {
+ $headerValue = $req->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'));
+
+ }
+
+}
--- 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',
+ // ];
}
--- 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');
}
}
--- /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 @@
+<?php
+
+namespace CorpusParole\Http\Middleware;
+
+use Illuminate\Cookie\Middleware\EncryptCookies as BaseEncrypter;
+
+class EncryptCookies extends BaseEncrypter
+{
+ /**
+ * The names of the cookies that should not be encrypted.
+ *
+ * @var array
+ */
+ protected $except = [
+ //
+ ];
+}
--- a/server/src/app/Http/Middleware/RedirectIfAuthenticated.php Fri Mar 04 10:08:52 2016 +0100
+++ b/server/src/app/Http/Middleware/RedirectIfAuthenticated.php Fri Mar 04 19:18:28 2016 +0100
@@ -3,40 +3,22 @@
namespace CorpusParole\Http\Middleware;
use Closure;
-use Illuminate\Contracts\Auth\Guard;
-use Illuminate\Http\RedirectResponse;
+use Illuminate\Support\Facades\Auth;
class RedirectIfAuthenticated
{
/**
- * 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->check()) {
- return new RedirectResponse(url('/home'));
+ if (Auth::guard($guard)->check()) {
+ return redirect('/');
}
return $next($request);
--- 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/*'
];
}
--- 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');
+});
--- 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);
});
--- 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']);
});
}
}
--- 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'
],
];
--- 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",