認証されたユーザーがアイテムの所有者であるかどうかを確認するミドルウェアを作成したいと考えています。単一のモデルの場合、コードは簡単で、次のようになります。
<?php namespace App\Http\Middleware;
use Closure;
class Owner {
public function handle($request, Closure $next)
{
$id = $request->segments()[1]; //get the id parameter
$model = Model::find($id); // find the model from DB
if(!$item)
return 'not found'; //if item not found
//check if authenticated user is owner
if($item->user_id == \Auth::id()){
return $next($request);
}else{
return 'not allowed';
}
}
}
ここで、複数のモデル (ModelX、ModelY、ModelZ) があり、ミドルウェア ハンドル関数を何度も書き直したくないとします。参照モデルをミドルウェアに挿入して、アプリの複数のモデルに対応させるにはどうすればよいですか?