2017-01-09 3 views
1

Ich muss eine Sitzungsvariable überprüfen, um ein Konfigurationselement in Laravel zu setzen. Ich brauche das allerdings vor der Auth-Middleware. Ich habe alle möglichen Konfigurationen ausprobiert, um es zum Laufen zu bringen, aber egal was passiert, auth wird ausgeführt, bevor ich die Datenbank einstelle, so dass sie den Benutzer nicht findet.Überprüfen Sie eine Sitzungsvariable vor Laravel Auth Middleware

Dies ist, was ich bisher:

Kernal.php

'web' => [ 
     \App\Http\Middleware\EncryptCookies::class, 
     \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, 
     \Illuminate\Session\Middleware\StartSession::class, 
     \Illuminate\View\Middleware\ShareErrorsFromSession::class, 
     \App\Http\Middleware\VerifyCsrfToken::class, 
     \Illuminate\Routing\Middleware\SubstituteBindings::class, 
     \App\Http\Middleware\CheckTenant::class, 
    ], 

CheckTenant:

public function handle($request, Closure $next) 
{ 

    if(session()->has('database')){ 
     //set db in config for eloquent 
     Config::set('database.connections.mysql.database', session('database')); 
    } 

    $response = $next($request); 

    return $response; 

} 

Meine Route:

Route::group(['middleware' => 'auth'], function() { 

    // All my routes that needs a logged in user 
    Route::get('/dashboard', function() { 
     return view('jobs.index'); 
    }); 

}); 

ich also im Grunde nur brauchen um ein Konfigurationselement bei e zu setzen ache Anfrage, bevor die Authentifizierung überprüft wird.

Jede Hilfe würde wirklich geschätzt werden.

Antwort

0

Das Problem ist, dass Sie versuchen, Daten in der Konfiguration after the request is handled by the application zu speichern (siehe Vor & Nach Middleware Abschnitt). Das Einrichten der Config nach der Anfrage wurde von der App nur nicht sinnvoll gemacht.

Syntax sollte sein:

public function handle($request, Closure $next) 
{ 
    if (session()->has('database')) { 
     Config::set('database.connections.mysql.database', session('database')); 
    } 

    $response = $next($request); 

    return $response; 

} 
+0

die Auth-Middleware scheint noch bevor diese ausgeführt werden? – jhodgson4

Verwandte Themen