$id
в функции уничтожения - это id
ресурса, который вы хотите удалить, так что он никогда не будет идентифицированным идентификатором пользователя, лучшим вариантом для проверки роли может быть политика авторизации вместо промежуточного программного обеспечения.
Или получите аутентифицированный идентификатор пользователя, используя: auth()->id()
или $request->user()->id
Вы также можете добавить метод в модель User
и проверить, какнапример:
class User ...
public function isAdmin()
{
return $this->role === 'admin';
}
В промежуточном программном обеспечении
$request->user()->isAdmin();
--- EDIT
Так что если вы используете resource
, когда вы, например, определили свой маршрут:
Route::resource('user', 'UsersController');
Затем в вашем промежуточном программном обеспечении вы можете получить доступ к id
пользователя следующим образом:
$request->user
Если ваш маршрут такой:
Route::delete('/users/{user}', 'UsersController@destroy');
Затем вы можете получить его, используя именованный параметр $request->user
.Убедитесь, что все, что вы используете в своем маршруте в {}
, это имя параметра, который вы используете для получения id
из.