Я использую пакет Hyn / Tenancy и настраиваю его на то, что если laravel обнаружит, что используемый URL-адрес является поддоменом, он будет использовать файл маршрутов tenants.php вместо файла web.php для маршрутов. Проблема в том, что я также использую Laravel Passport для арендаторов, но маршруты не работают на версии арендатора. Я подозреваю его, потому что он использует совершенно другой маршрутизатор.
Ниже приведен метод маршрутизации, вызываемый в моем AuthServiceProvider (это метод Passport по умолчанию)
public static function routes($callback = null, array $options = [])
{
$callback = $callback ?: function ($router) {
$router->all();
};
$defaultOptions = [
'prefix' => 'oauth',
'namespace' => '\Laravel\Passport\Http\Controllers',
];
$options = array_merge($defaultOptions, $options);
Route::group($options, function ($router) use ($callback) {
$callback(new RouteRegistrar($router));
});
}
, и это мой AuthServiceProvider
public function boot()
{
$this->registerPolicies();
Passport::routes(null, [
'prefix' => 'api/v1/oauth',
]);
}
Как видно из метода Routes (), он вызывает переменную $ router. Но я не понимаю, откуда берется var, и я подозреваю, что это причина того, что он не работает на маршрутах арендаторов. Как мне отладить или выяснить, в чем может быть проблема?
На данный момент я добавил следующее в свой файл маршрутов tenants.php, и это работает по крайней мере для токена. Но я не только требую остальные маршруты, но я подозреваю, что я также не могу вызвать ремесленный паспорт: установить, потому что эти маршруты не существуют.
Route::group([
'prefix' => 'api/v1/oauth',
'namespace' => '\Laravel\Passport\Http\Controllers',
'middleware' => 'tenancy.enforce'
], function () {
Route::post('/token', [
'uses' => 'AccessTokenController@issueToken',
'as' => 'passport.token',
]);
});