2017-02-14 12 views
0

У меня есть следующий метод:Как обрабатывать данные перед удалением из модели в Laravel?

public function destroy($id) 
    { 

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

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

Как обрабатывать данные перед удалением? Мне нужно проверить, если пользователь имеет разрешение на удаление данных или не

ответ

1

При использовании метода authenticate(), пользовательская модель извлекается так это означает, что id вы это не идентификатор, но в User. Вы уже проверили the documentation of JWT, потому что в первую очередь вы должны получить пользователь и этого достаточно:

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

Тогда, если у вас есть поле, например в вашем users таблицы, чтобы сказать, если пользователь имеет право сказать admin, который может быть 1 или 0, то вы можете сделать следующее:

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); 

Просто немного царапины на идее, но мой лучший совет, чтобы сделать некоторые поисковые запросы о том, как реализуются JWT, я уверен, вы найдете тонны их онлайн.

+0

Могу ли я использовать промежуточное программное обеспечение для этого? – Darama

+1

Уверен, вы можете использовать промежуточное программное обеспечение для этого. Таким образом, попытка аутентификации в промежуточном программном обеспечении, и если она будет успешной, тогда эта функция destroy() в контроллере может быть выполнена. Вы имеете в виду, что я должен привести пример о том, как это можно сделать? –