api: Internal routing bug: doesn't work with middleware

Any internal request in conjunction with a route that contains middleware, like this:

$api->version('v1', ['middleware' => 'test'], function ($api) {

});

Results in a:

[ReflectionException]      
  Class test does not exist 

Despite it being define properly inside Kernel.php:

 protected $routeMiddleware = [
        'test' => \App\Http\Middleware\Test::class,
        'auth' => \App\Http\Middleware\Authenticate::class,
        'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
        'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
        'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
    ];

I’ve created a test case to illustrate the bug here https://github.com/assembledadam/laravel

Just run php artisan testcase in the root folder, and to view the middleware working visit localhost/index.php/test/blahblah

Stack trace (from my application, not the test case!):

n Error Occured:
Class oauth does not exist
File: /usr/www/app/vendor/laravel/framework/src/Illuminate/Container/Container.php
Line: 738
#0 /usr/www/app/vendor/laravel/framework/src/Illuminate/Container/Container.php(738): ReflectionClass->__construct('oauth')
#1 /usr/www/app/vendor/laravel/framework/src/Illuminate/Container/Container.php(633): Illuminate\Container\Container->build('oauth', Array)
#2 /usr/www/app/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(697): Illuminate\Container\Container->make('oauth', Array)
#3 /usr/www/app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(123): Illuminate\Foundation\Application->make('oauth')
#4 [internal function]: Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Dingo\Api\Http\InternalRequest))
#5 /usr/www/app/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(32): call_user_func(Object(Closure), Object(Dingo\Api\Http\InternalRequest))
#6 /usr/www/app/vendor/dingo/api/src/Http/Middleware/PrepareController.php(45): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Dingo\Api\Http\InternalRequest))
#7 [internal function]: Dingo\Api\Http\Middleware\PrepareController->handle(Object(Dingo\Api\Http\InternalRequest), Object(Closure))
#8 /usr/www/app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(124): call_user_func_array(Array, Array)
#9 [internal function]: Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Dingo\Api\Http\InternalRequest))
#10 /usr/www/app/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(32): call_user_func(Object(Closure), Object(Dingo\Api\Http\InternalRequest))
#11 [internal function]: Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Dingo\Api\Http\InternalRequest))
#12 /usr/www/app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(103): call_user_func(Object(Closure), Object(Dingo\Api\Http\InternalRequest))
#13 /usr/www/app/vendor/laravel/framework/src/Illuminate/Routing/Router.php(726): Illuminate\Pipeline\Pipeline->then(Object(Closure))
#14 /usr/www/app/vendor/laravel/framework/src/Illuminate/Routing/Router.php(699): Illuminate\Routing\Router->runRouteWithinStack(Object(Illuminate\Routing\Route), Object(Dingo\Api\Http\InternalRequest))
#15 /usr/www/app/vendor/laravel/framework/src/Illuminate/Routing/Router.php(675): Illuminate\Routing\Router->dispatchToRoute(Object(Dingo\Api\Http\InternalRequest))
#16 /usr/www/app/vendor/dingo/api/src/Routing/Adapter/Laravel.php(80): Illuminate\Routing\Router->dispatch(Object(Dingo\Api\Http\InternalRequest))
#17 /usr/www/app/vendor/dingo/api/src/Routing/Router.php(574): Dingo\Api\Routing\Adapter\Laravel->dispatch(Object(Dingo\Api\Http\InternalRequest), 'v1')
#18 /usr/www/app/vendor/dingo/api/src/Dispatcher.php(540): Dingo\Api\Routing\Router->dispatch(Object(Dingo\Api\Http\InternalRequest))
#19 /usr/www/app/vendor/dingo/api/src/Dispatcher.php(445): Dingo\Api\Dispatcher->dispatch(Object(Dingo\Api\Http\InternalRequest))
#20 /usr/www/app/vendor/dingo/api/src/Dispatcher.php(372): Dingo\Api\Dispatcher->queueRequest('post', 'users', Array, '{"old_id":"301"...')
#21 /usr/www/app/vendor/candybanana/creo-migration/src/ETL/Scripts/User.php(240): Dingo\Api\Dispatcher->post('users', Array, '{"old_id":"301"...')
#22 /usr/www/app/vendor/candybanana/creo-migration/src/ETL/Scripts/AbstractMigration.php(178): Candybanana\CreoMigration\ETL\Scripts\User->insert(Array)
#23 /usr/www/app/vendor/candybanana/creo-migration/src/ETL/Scripts/User.php(68): Candybanana\CreoMigration\ETL\Scripts\AbstractMigration->run(NULL, '114947')
#24 /usr/www/app/vendor/candybanana/creo-migration/src/ETL/ETL.php(348): Candybanana\CreoMigration\ETL\Scripts\User->__construct(Object(Candybanana\CreoMigration\ETL\ETL), '0adf04fce0090b6...')
#25 /usr/www/app/vendor/candybanana/creo-migration/src/ETL/ETL.php(262): Candybanana\CreoMigration\ETL\ETL->runEntityScripts(Array)
#26 /usr/www/app/vendor/candybanana/creo-migration/src/ETL/ETL.php(91): Candybanana\CreoMigration\ETL\ETL->run()
#27 /usr/www/app/vendor/candybanana/creo-migration/src/Console/Command/Migrate.php(87): Candybanana\CreoMigration\ETL\ETL->__construct(Array, Object(Candybanana\CreoMigration\Console\Command\Migrate), Object(PDO))
#28 [internal function]: Candybanana\CreoMigration\Console\Command\Migrate->fire()
#29 /usr/www/app/vendor/laravel/framework/src/Illuminate/Container/Container.php(507): call_user_func_array(Array, Array)
#30 /usr/www/app/vendor/laravel/framework/src/Illuminate/Console/Command.php(169): Illuminate\Container\Container->call(Array)
#31 /usr/www/app/vendor/symfony/console/Command/Command.php(259): Illuminate\Console\Command->execute(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#32 /usr/www/app/vendor/laravel/framework/src/Illuminate/Console/Command.php(155): Symfony\Component\Console\Command\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#33 /usr/www/app/vendor/symfony/console/Application.php(844): Illuminate\Console\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#34 /usr/www/app/vendor/symfony/console/Application.php(192): Symfony\Component\Console\Application->doRunCommand(Object(Candybanana\CreoMigration\Console\Command\Migrate), Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#35 /usr/www/app/vendor/symfony/console/Application.php(123): Symfony\Component\Console\Application->doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#36 /usr/www/app/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(107): Symfony\Component\Console\Application->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#37 /usr/www/app/artisan(36): Illuminate\Foundation\Console\Kernel->handle(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#38 {main}

About this issue

  • Original URL
  • State: closed
  • Created 8 years ago
  • Comments: 31 (25 by maintainers)

Commits related to this issue

Most upvoted comments

Aye, register Dingo first. I’ll take another look at this tomorrow.