Laravel Middleware devuelve variable al controlador

Estoy llevando a cabo una verificación de permisos de un usuario para determinar si puede ver una página o no. Esto implica pasar primero la solicitud a través de algún middleware.

El problema que tengo es que estoy duplicando la misma consulta de base de datos en el middleware y en el controlador antes de devolver los datos a la vista en sí.

Aquí hay un ejemplo de la configuración;

- routes.php

Route::get('pages/{id}', [
   'as' => 'pages',
   'middleware' => 'pageUser'
   'uses' => 'PagesController@view'
]);

- PageUserMiddleware.php (clase PageUserMiddleware)

public function handle($request, Closure $next)
    {
        //get the page
        $pageId = $request->route('id');
        //find the page with users
        $page = Page::with('users')->where('id', $pageId)->first();
        //check if the logged in user exists for the page
        if(!$page->users()->wherePivot('user_id', Auth::user()->id)->exists()) {
            //redirect them if they don't exist
            return redirect()->route('redirectRoute');
        }
        return $next($request);
    }

- PagesController.php

public function view($id)
{
    $page = Page::with('users')->where('id', $id)->first();
    return view('pages.view', ['page' => $page]);
}

Como puede ver, elPage::with('users')->where('id', $id)->first() se repite tanto en el middleware como en el controlador. Necesito pasar los datos de uno a otro para no duplicarlos.