2017-02-14 4 views
0

Ich habe die folgende Methode:Wie behandelt man Daten vor dem Löschen aus dem Modell in Laravel?

public function destroy($id) 
    { 

     $id = \JWTAuth::parseToken()->authenticate(); 
     $offer = Offer::findOrFail($id); 
     $offer->delete(); 

     return response()->json(["offer" => $offer]); 
    } 

Wie Daten umgehen, vor dem Löschen? Ich muss überprüfen, ob Benutzer Erlaubnis hat Daten zu löschen oder nicht

Antwort

1

Wenn Sie die authenticate() Methode verwenden, wird das Benutzermodell abgerufen, so bedeutet das id Sie ist nicht eine ID, sondern eine User. Haben Sie überprüfen the documentation of JWT Da in erster Linie müssen Sie den Benutzer abgerufen wird, und dies ist ausreichend:

$user = \JWTAuth::parseToken()->authenticate(); 

Dann, wenn Sie ein Feld zum Beispiel in Ihrer users Tabelle haben zu sagen, ob der Benutzer das Recht hat, sagen admin die 1 oder 0 sein, dann können Sie wie folgt vorgehen:

if($user->admin == 1) 
{ 
    $offer = Offer::findOrFail(1); //say id 
    $offer->delete(); 

    return response()->json(["offer" => $offer]); 
} 

return response()->json(['error' => 'you dont have the right to delete this'], 403); 

Nur ein kleiner Kratzer auf der Idee, aber meine beste Rat ist, einige Recherchen, wie JWT implementiert zu tun, bin ich ziemlich sicher, dass Sie jede Menge finden sie online.

+0

Kann ich Middleware dafür verwenden? – Darama

+1

Sicher können Sie Middleware dazu verwenden. Versuchen Sie also, sich in der Middleware zu authentifizieren, und wenn dies gelingt, kann die Funktion destroy() im Controller ausgeführt werden. Meinst du, ich sollte ein Beispiel geben, wie dies möglich wäre? –

Verwandte Themen