2017-07-27 59 views
0

我正在嘗試在laravel中創建一條路線,如果它已登錄但可以繼續使用,但如果不是,則仍然可以使用。Laravel(5.4)與當前用戶一起使用的護照路線,如果未登錄也可以使用

在我的情況下,我有一個名爲「場地」和一個「用戶」,可以有一個場地作爲他的最愛。

因此,這些都是我的路線:

Route::group(['middleware' => ['cors', 'bindings', 'auth:api']], function() { 
    Route::match(['GET', 'OPTIONS'], 'venue/{venue}', '[email protected]')->name('venue')->where('venue', '[0-9]+'); 
}); 

Route::group(['middleware' => ['cors', 'bindings', 'api'], 'namespace' => 'Api'], function() { 
    Route::match(['GET', 'OPTIONS'], 'venue/{venue}', '[email protected]')->name('venue')->where('venue', '[0-9]+'); 
}); 

現在我注意到,Auth::user();只適用於與中間件的路線與'auth:api'但我也想讓它變得場地,如果用戶沒有登錄。並且使用這兩個組不能以這種方式工作。

我的場館模型是這樣的:

class Venue extends Model 
{ 
    protected $appends = [ 
     'favourite', 
    ]; 

    public function users() 
    { 
     return $this->belongsToMany('App\Models\User', 'venue_user'); 
    } 

    public function getFavouriteAttribute() 
    { 
     $user = Auth::user(); 
     $isFav = false; 
     if ($user) { 
      if ($user->venues) { 
       foreach ($user->venues as $item) { 
        if ($item->id === $this->id) { 
         $isFav = true; 
        } 
       } 
      } 
     } 

     return $isFav; 
    } 
} 

必須有一個更好的方式來做到這一點。

我希望有人能幫助我。

回答

0

好吧,我終於找到了我自己的問題的答案。 顯然拿到護照的電流以正確的方式是這樣做的:

$user = auth()->guard('api')->user(); 

Auth::user()僅在線路可用的'auth:api'一個middlewhere但是這一次是隨處可見,如果我說的不錯。

隨時糾正我,如果我錯了:)

相關問題