В Laravel 4.2 у меня был следующий фильтр, который не позволял одному пользователю просматривать/редактировать/удалять курс другого пользователя, который представляет собой объект, основанный на модели «Курс». Вот код, который я использовал:
Route::filter('restrictPermission', function($route)
{
$id = $route->parameter('id');
$course = Course::find($id);
$user_id = $course->user_id;
if(Auth::user()->id !== $user_id)
return Redirect::to('/')->with('flash_message', '*** Permission denied ***');
# This compares the currently logged in user's id to the course's
# user ID (in the database) so that the logged in user can
# only view or delete their own courses.
});
Вот промежуточное программное обеспечение, которое я пытаюсь создать, которое делает то же самое, что и фильтр выше:
<?php
namespace App\Http\Middleware;
use Closure;
class RedirectIfWrongUser
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
$id = $route->parameter('id');
$course = Course::find($id);
$user_id = $course->user_id;
if ($request->user()->id !== $user_id) {
return Redirect::to('/')->with('flash_message', '*** Permission denied ***');
}
return $next($request);
}
}
Проблема в том, что я не знаю, как заставить промежуточное ПО распознавать класс Course и функциональность Course::.
Любая конструктивная помощь будет принята с благодарностью.
Gate
для этой цели laravel.com/docs/5.3/authorization - person Ali Sherafat   schedule 26.02.2017