I use Multi-Auth with a passport , so the previous answers did not help me.
After hours of “googling” I found this (after-) middleware answer.
My middleware basically gets the Passport authentication result, checks to see if there is any Bearer inside, and adds extra data to the content.
<?php namespace App\Http\Middleware; use Closure; class AppendTokenResponse { public function handle($request, Closure $next) { $response = $next($request); $content = json_decode($response->content(), true); if (!empty($content['access_token'])) { $content['moredata'] = 'some data'; $response->setContent($content); } return $response; } }
Now put the new middleware in $ routemiddleware in App / Http / Kernel.php
protected $routeMiddleware = [ 'auth' => \App\Http\Middleware\Authenticate::class, 'cors' => \App\Http\Middleware\Cors::class, 'multiauth' => \SMartins\PassportMultiauth\Http\Middleware\MultiAuthenticate::class, 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, 'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class, 'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class, 'can' => \Illuminate\Auth\Middleware\Authorize::class, 'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class, 'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class, 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, 'oauth.providers' => \SMartins\PassportMultiauth\Http\Middleware\AddCustomProvider::class, 'append_auth' =>\App\Http\Middleware\AppendTokenResponse::class, ];
Then simply register this passport route middleware with Providers / AuthServiceProvider.php
With MultiAuth:
Route::group(['middleware' => ['oauth.providers','append_auth']], function () { Passport::routes(function ($router) { return $router->forAccessTokens(); }); });
I believe that a regular passport should be (not verified):
Route::group(['middleware' => ['append_auth']], function () { Passport::routes(); });