I'm using Lumen v5.4.5 with JWTAuth 1.0.0-beta.2 and getting the following error:
Undefined index: provider in /var/www/html/vendor/tymon/jwt-auth/src/Providers/AbstractServiceProvider.php:80
I am trying to access the login method within my Controller that looks like:
public function login(Request $request) {
// grab credentials from the request
$credentials = $request->only('email', 'password');
$token = app(JWTAuth::class)->attempt($credentials);
}
My bootstrap/app.php file looks like:
$app->alias('cache', 'Illuminate\Cache\CacheManager');
$app->alias('auth', 'Illuminate\Auth\AuthManager');
...
$app->configure('auth');
$app->configure('jwt');
...
$app->register(App\Providers\AuthServiceProvider::class);
$app->register(Tymon\JWTAuth\Providers\LumenServiceProvider::class);
In my config/ folder I have auth.php:
'guards' => [
'api' => ['driver' => 'jwt'],
],
and jwt.php which is basically the default config file that comes with JWTAuth library.
Following is the full stack trace of the error:
{
"error": {
"message": "Undefined index: provider",
"status_code": 500,
"debug": {
"line": 80,
"file": "/var/www/html/vendor/tymon/jwt-auth/src/Providers/AbstractServiceProvider.php",
"class": "ErrorException",
"trace": [
"#0 /var/www/html/vendor/tymon/jwt-auth/src/Providers/AbstractServiceProvider.php(80): Laravel\\Lumen\\Application->Laravel\\Lumen\\Concerns\\{closure}(8, 'Undefined index...', '/var/www/html/v...', 80, Array)",
"#1 /var/www/html/vendor/illuminate/auth/AuthManager.php(111): Tymon\\JWTAuth\\Providers\\AbstractServiceProvider->Tymon\\JWTAuth\\Providers\\{closure}(Object(Laravel\\Lumen\\Application), 'api', Array)",
"#2 /var/www/html/vendor/illuminate/auth/AuthManager.php(90): Illuminate\\Auth\\AuthManager->callCustomCreator('api', Array)",
"#3 /var/www/html/vendor/illuminate/auth/AuthManager.php(70): Illuminate\\Auth\\AuthManager->resolve('api')",
"#4 /var/www/html/vendor/illuminate/auth/AuthServiceProvider.php(45): Illuminate\\Auth\\AuthManager->guard()",
"#5 /var/www/html/vendor/illuminate/container/Container.php(678): Illuminate\\Auth\\AuthServiceProvider->Illuminate\\Auth\\{closure}(Object(Laravel\\Lumen\\Application))",
"#6 /var/www/html/vendor/illuminate/container/Container.php(565): Illuminate\\Container\\Container->build(Object(Closure))",
"#7 /var/www/html/vendor/laravel/lumen-framework/src/Application.php(208): Illuminate\\Container\\Container->make('auth.driver')",
"#8 /var/www/html/vendor/illuminate/container/Container.php(771): Laravel\\Lumen\\Application->make('auth.driver')",
"#9 /var/www/html/vendor/illuminate/container/Container.php(733): Illuminate\\Container\\Container->resolveClass(Object(ReflectionParameter))",
"#10 /var/www/html/vendor/illuminate/container/Container.php(708): Illuminate\\Container\\Container->resolveDependencies(Array)",
"#11 /var/www/html/vendor/illuminate/container/Container.php(565): Illuminate\\Container\\Container->build('Tymon\\\\JWTAuth\\\\P...')",
"#12 /var/www/html/vendor/laravel/lumen-framework/src/Application.php(208): Illuminate\\Container\\Container->make('Tymon\\\\JWTAuth\\\\P...')",
"#13 /var/www/html/vendor/tymon/jwt-auth/src/Providers/AbstractServiceProvider.php(321): Laravel\\Lumen\\Application->make('Tymon\\\\JWTAuth\\\\P...')",
"#14 /var/www/html/vendor/tymon/jwt-auth/src/Providers/AbstractServiceProvider.php(134): Tymon\\JWTAuth\\Providers\\AbstractServiceProvider->getConfigInstance('providers.auth')",
"#15 /var/www/html/vendor/illuminate/container/Container.php(678): Tymon\\JWTAuth\\Providers\\AbstractServiceProvider->Tymon\\JWTAuth\\Providers\\{closure}(Object(Laravel\\Lumen\\Application))",
"#16 /var/www/html/vendor/illuminate/container/Container.php(565): Illuminate\\Container\\Container->build(Object(Closure))",
"#17 /var/www/html/vendor/laravel/lumen-framework/src/Application.php(208): Illuminate\\Container\\Container->make('tymon.jwt.provi...')",
"#18 /var/www/html/vendor/illuminate/container/Container.php(1070): Laravel\\Lumen\\Application->make('tymon.jwt.provi...')",
"#19 /var/www/html/vendor/tymon/jwt-auth/src/Providers/AbstractServiceProvider.php(219): Illuminate\\Container\\Container->offsetGet('tymon.jwt.provi...')",
"#20 /var/www/html/vendor/illuminate/container/Container.php(678): Tymon\\JWTAuth\\Providers\\AbstractServiceProvider->Tymon\\JWTAuth\\Providers\\{closure}(Object(Laravel\\Lumen\\Application))",
"#21 /var/www/html/vendor/illuminate/container/Container.php(565): Illuminate\\Container\\Container->build(Object(Closure))",
"#22 /var/www/html/vendor/laravel/lumen-framework/src/Application.php(208): Illuminate\\Container\\Container->make('tymon.jwt.auth')",
"#23 /var/www/html/vendor/laravel/lumen-framework/src/helpers.php(38): Laravel\\Lumen\\Application->make('tymon.jwt.auth')",
"#24 /var/www/html/app/Http/Controllers/ViewerController.php(90): app('Tymon\\\\JWTAuth\\\\J...')",
"#25 [internal function]: App\\Http\\Controllers\\ViewerController->login(Object(Dingo\\Api\\Http\\Request))",
"#26 /var/www/html/vendor/illuminate/container/BoundMethod.php(28): call_user_func_array(Array, Array)",
"#27 /var/www/html/vendor/illuminate/support/helpers.php(912): Illuminate\\Container\\BoundMethod::Illuminate\\Container\\{closure}()",
"#28 /var/www/html/vendor/illuminate/container/BoundMethod.php(86): value(Object(Closure))",
"#29 /var/www/html/vendor/illuminate/container/BoundMethod.php(30): Illuminate\\Container\\BoundMethod::callBoundMethod(Object(Laravel\\Lumen\\Application), Array, Object(Closure))",
"#30 /var/www/html/vendor/illuminate/container/Container.php(524): Illuminate\\Container\\BoundMethod::call(Object(Laravel\\Lumen\\Application), Array, Array, NULL)",
"#31 /var/www/html/vendor/laravel/lumen-framework/src/Concerns/RoutesRequests.php(741): Illuminate\\Container\\Container->call(Array, Array)",
"#32 /var/www/html/vendor/laravel/lumen-framework/src/Concerns/RoutesRequests.php(707): Laravel\\Lumen\\Application->callControllerCallable(Array, Array)",
"#33 /var/www/html/vendor/laravel/lumen-framework/src/Concerns/RoutesRequests.php(681): Laravel\\Lumen\\Application->callLumenController(Object(App\\Http\\Controllers\\ViewerController), 'login', Array)",
"#34 /var/www/html/vendor/laravel/lumen-framework/src/Concerns/RoutesRequests.php(643): Laravel\\Lumen\\Application->callControllerAction(Array)",
"#35 /var/www/html/vendor/laravel/lumen-framework/src/Concerns/RoutesRequests.php(623): Laravel\\Lumen\\Application->callActionOnArrayBasedRoute(Array)",
"#36 [internal function]: Laravel\\Lumen\\Application->Laravel\\Lumen\\Concerns\\{closure}(Object(Dingo\\Api\\Http\\Request))",
"#37 /var/www/html/vendor/laravel/lumen-framework/src/Routing/Pipeline.php(52): call_user_func(Object(Closure), Object(Dingo\\Api\\Http\\Request))",
"#38 /var/www/html/vendor/barryvdh/laravel-cors/src/HandleCors.php(42): Laravel\\Lumen\\Routing\\Pipeline->Laravel\\Lumen\\Routing\\{closure}(Object(Dingo\\Api\\Http\\Request))",
"#39 /var/www/html/vendor/illuminate/pipeline/Pipeline.php(148): Barryvdh\\Cors\\HandleCors->handle(Object(Dingo\\Api\\Http\\Request), Object(Closure))",
"#40 [internal function]: Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Dingo\\Api\\Http\\Request))",
"#41 /var/www/html/vendor/laravel/lumen-framework/src/Routing/Pipeline.php(32): call_user_func(Object(Closure), Object(Dingo\\Api\\Http\\Request))",
"#42 /var/www/html/vendor/illuminate/pipeline/Pipeline.php(102): Laravel\\Lumen\\Routing\\Pipeline->Laravel\\Lumen\\Routing\\{closure}(Object(Dingo\\Api\\Http\\Request))",
"#43 /var/www/html/vendor/laravel/lumen-framework/src/Concerns/RoutesRequests.php(778): Illuminate\\Pipeline\\Pipeline->then(Object(Closure))",
"#44 /var/www/html/vendor/laravel/lumen-framework/src/Concerns/RoutesRequests.php(624): Laravel\\Lumen\\Application->sendThroughPipeline(Array, Object(Closure))",
"#45 /var/www/html/vendor/laravel/lumen-framework/src/Concerns/RoutesRequests.php(528): Laravel\\Lumen\\Application->handleFoundRoute(Array)",
"#46 /var/www/html/vendor/laravel/lumen-framework/src/Concerns/RoutesRequests.php(781): Laravel\\Lumen\\Application->Laravel\\Lumen\\Concerns\\{closure}()",
"#47 /var/www/html/vendor/laravel/lumen-framework/src/Concerns/RoutesRequests.php(534): Laravel\\Lumen\\Application->sendThroughPipeline(Array, Object(Closure))",
"#48 /var/www/html/vendor/dingo/api/src/Routing/Adapter/Lumen.php(103): Laravel\\Lumen\\Application->dispatch(Object(Dingo\\Api\\Http\\Request))",
"#49 /var/www/html/vendor/dingo/api/src/Routing/Router.php(513): Dingo\\Api\\Routing\\Adapter\\Lumen->dispatch(Object(Dingo\\Api\\Http\\Request), 'v1')",
"#50 /var/www/html/vendor/dingo/api/src/Http/Middleware/Request.php(126): Dingo\\Api\\Routing\\Router->dispatch(Object(Dingo\\Api\\Http\\Request))",
"#51 /var/www/html/vendor/illuminate/pipeline/Pipeline.php(114): Dingo\\Api\\Http\\Middleware\\Request->Dingo\\Api\\Http\\Middleware\\{closure}(Object(Dingo\\Api\\Http\\Request))",
"#52 /var/www/html/vendor/barryvdh/laravel-cors/src/HandlePreflightSimple.php(25): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Dingo\\Api\\Http\\Request))",
"#53 /var/www/html/vendor/illuminate/pipeline/Pipeline.php(148): Barryvdh\\Cors\\HandlePreflightSimple->handle(Object(Dingo\\Api\\Http\\Request), Object(Closure))",
"#54 /var/www/html/vendor/illuminate/pipeline/Pipeline.php(102): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Dingo\\Api\\Http\\Request))",
"#55 /var/www/html/vendor/dingo/api/src/Http/Middleware/Request.php(127): Illuminate\\Pipeline\\Pipeline->then(Object(Closure))",
"#56 /var/www/html/vendor/dingo/api/src/Http/Middleware/Request.php(103): Dingo\\Api\\Http\\Middleware\\Request->sendRequestThroughRouter(Object(Dingo\\Api\\Http\\Request))",
"#57 /var/www/html/vendor/illuminate/pipeline/Pipeline.php(148): Dingo\\Api\\Http\\Middleware\\Request->handle(Object(Dingo\\Api\\Http\\Request), Object(Closure))",
"#58 [internal function]: Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))",
"#59 /var/www/html/vendor/laravel/lumen-framework/src/Routing/Pipeline.php(32): call_user_func(Object(Closure), Object(Illuminate\\Http\\Request))",
"#60 /var/www/html/vendor/illuminate/pipeline/Pipeline.php(102): Laravel\\Lumen\\Routing\\Pipeline->Laravel\\Lumen\\Routing\\{closure}(Object(Illuminate\\Http\\Request))",
"#61 /var/www/html/vendor/laravel/lumen-framework/src/Concerns/RoutesRequests.php(778): Illuminate\\Pipeline\\Pipeline->then(Object(Closure))",
"#62 /var/www/html/vendor/laravel/lumen-framework/src/Concerns/RoutesRequests.php(534): Laravel\\Lumen\\Application->sendThroughPipeline(Array, Object(Closure))",
"#63 /var/www/html/vendor/laravel/lumen-framework/src/Concerns/RoutesRequests.php(475): Laravel\\Lumen\\Application->dispatch(NULL)",
"#64 /var/www/html/public/index.php(28): Laravel\\Lumen\\Application->run()",
"#65 {main}"
]
}
}
}
Works like a charm with lumen 5.4 just for the reference follow this guide:
http://www.akaita.com/post/json-web-token-authentication-for-lumen-5-tymon-jwt-auth/
@akkhan20 dead link