I have a middleware which does a query and I would like to pass the result back to my controller. Is it possible? I'm using Laravel 5.
public function handle($request, Closure $next)
{
if ($this->auth->guest()) {
if ($request->ajax()) {
return view('errors.401');
} else {
return redirect()->guest('auth/login');
}
}
$cur_route = Request::segment(1);
$result = DB::table('t_user_acl_masters')->join('t_function_details', 't_function_details.functiondtl_id', '=' ,'t_user_acl_masters.functiondtl_id')
->where('t_function_details.routename', '=', $cur_route)
->where('t_user_acl_masters.user_id', '=', $request->user()->user_id)
->select('t_user_acl_masters.viewaccess','t_user_acl_masters.addaccess','t_user_acl_masters.editaccess','t_user_acl_masters.deleteaccess')
->first();
if(!empty($result)) {
if ($result->viewaccess != 'y') {
return view('errors.401');
}
}
return $next($request, $result);
}
Controller:
public function __construct(Request $request)
{
parent::__construct();
$this->middleware('auth');
$this->user = Auth::user();
$this->acl = $request->attributes->get('acl');
}
public function index(Request $request){
dd($this->acl);
}
I have injected it in to the attributes of request, but I can't get it from my function. If I dd($request->attributes->get('acl')) in my index() function, data is available.