Я создал REST API Laravel.Мои маршруты генерируются автоматически с Route::apiResource()
.Аутентификация настроена с использованием Passport и работает по назначению.
Теперь я попытался реализовать роль администратора с промежуточным программным обеспечением, которое я подключаю к store
, update
и delete
в моем контроллере:
$this->middleware('admin-only', ['only' => ['store', 'update', 'delete']]);
Я хочу, чтобы мое приложение ответило 403 Insufficient permissions
, если пользователь не является администратором.Для GET
он работает как положено, но для запросов PUT Laravel всегда возвращает ответ с 302 Found
.
AdminOnly Middleware
namespace App\Http\Middleware;
use Illuminate\Http\Response;
use Closure;
use Illuminate\Support\Facades\Auth;
class AdminOnly {
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next) {
$user = Auth::user();
if (!$user->admin) {
return Response::create('Insufficient permissions', 403);
}
return $next($request);
}
}