Здравствуйте, опишу задачу: в приложении есть некоторый ресурс, скажем Document, у этого ресурса есть определенные уровни доступа, 0 - для всех, 1 - только для тех пользователей, которые добавлены в участники этого ресурса.
Изначально код выглядел следующим образом:
public function show(Document $document)
{
if(!$document->userHasAccess(auth()->user())
{
return permissionDenied();
}
return $document
}
Но проверок на наличие доступа стало слишком много, и я принял решения отрефакторить эту логику. Я создал middleware посредник "DocumentAccess"
Он выглядит следующим образом:
class DocumentAccess
{
public function handle($request, Closure $next, Document $document)
{
if(!$document->userHasAccess($request->user()))
{
return response()->json(['error' => 'Permission denied'], 403);
}
return $next($request);
}
}
Как мне передать в него Document модель?
Роут выглядит так:
Route::get('documents/{document}', 'DocumentController@show')->middleware('access');