2017-09-05 6 views
0

Ich benutze JavaScript, um ein Zugriffs-Token für den Benutzer-Facebook-Account zu erhalten.Laravel: Middleware für Sociailite Auth erstellen

Wenn ich das Token bekomme, sende ich eine Anfrage an den Server mit dem Token, um Informationen über den Benutzer mit Socialite zu erhalten.

$user = Socialite::driver('facebook')->userFromToken($request->token); 
     return $user->getName(); 

Jetzt Gruppe API-Aufrufe Ich versuche, dass nur authentifizierte Benutzer, /my-profile zum Beispiel my-data machen, etc ...

Die Middleware Zweck, wenn der Benutzer für eine authentifiziert ist zu prüfen ist Gruppe von API-Anrufen eingeben, anstatt die gleichen Bedingungen in allen Methoden:

if ($user->getName()) { 
...Execute... 
} 

Irgendeine Idee, wie ich die folgende Bedingung für eine Liste von Routen für autehnticated Nutzer platzieren können?

Mein Zustand ist einfach:

$user = Socialite::driver('facebook')->userFromToken($request->token); 
if ($user->getName()) { 
return true; 
} 
else { return false; } 
+0

Überprüfung der Antwort unten hilft – Sletheren

Antwort

0

Okay, zuerst die Middleware erstellen:

php artisan make:middleware name_of_your_middleware 

Danach wird innerhalb der Middleware-Datei, die erstellt wurde:

public function handle($request, Closure $next) 
    { 
     $user = Socialite::driver('facebook')->userFromToken($request->token); 

     if ($user->getName()) { 
      return $next($request); 
     } 
     return redirect('some_other_route_for_error');    
    } 

Weisen Sie dann die Middleware den Middelware-Middleware inzu

protected $routeMiddleware = [ 
    //....... 
    'name_of_your_middleware' => \Illuminate\Auth\Middleware\Authenticate::class, 
]; 

In Ihrer Route-Datei (api.php):

Route::group(['middleware'=>['name_of_your_middleware']],function(){ 
    //your routes 
}); 

Hope it :)