Laravel 5.0でMiddlewareに独自のパラメータを渡すには?
Laravel 5.1 では新しく Middleware Parameters 機能が追加され、Middleware に独自のパラメータを渡すことができるようになりましたが、PHP のバージョン要件の都合上 Laravel 5.0 を使わざるを得ない状況です。
今回 Middleware を作成し、ログインしているユーザーが指定した権限を持っているかをチェックしようと思っています。
具体的には Auth::user()->hasRole('owner') のような形でチェックする予定なので、hasRole() に渡すためのパラメータをどうやって middleware に伝えるべきか悩んでいます。
ひとまず Request::route() を借りてパラメータを渡すことで一応動いてはいるのですが、正式に用意された手段ではないためどんな問題が起きるか予測できません。
middlewareの指定は各コントローラーの __construct() で行っています。
public function __construct()
{
$this->middleware('auth');
Request::route()->setParameter('allowed_roles', ['owner']);
$this->middleware('role');
}
middleware の内容は次のとおりです。
class CheckRole
{
public function handle($request, Closure $next)
{
$roles = $request->route()->parameter('allowed_roles', array());
if(empty($roles) || $request->user()->hasRole($roles))
{
return $next($request);
} else {
return response('Unauthorized.', 401);
}
}
}
このようなケースではどのようにしてパラメータを渡すことが定番なのでしょうか?
また、「Request::route()->setParameter()」はこういった個人的な目的のために使って良いものなのでしょうか?
よろしくお願いします。