Ich versuche, eine Route in Laravel, die einen Benutzer haben kann, wenn es eingeloggt ist, aber kann immer noch arbeiten, wenn nicht.Laravel (5.4) Passrouten mit aktuellen Benutzer, der auch funktioniert, wenn nicht eingeloggt
In meinem Fall habe ich eine Tabelle namens "Venues" und einen "Benutzer", der einen Veranstaltungsort als seinen Favoriten haben kann.
So sind diese meine Routen:
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]+');
});
Jetzt bemerkte ich, dass Auth::user();
mit der Middleware mit 'auth:api'
in der Route ist nur verfügbar, aber ich will es auch den Veranstaltungsort erhalten, wenn der Benutzer nicht angemeldet ist. Und die Verwendung beider Gruppen funktioniert nicht so.
My Location Modell sieht wie folgt aus:
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;
}
}
Es muss einen besseren Weg, dies zu tun.
Ich hoffe, dass mir jemand helfen kann.