mercredi 22 août 2018

Calling passport:client from route, "there are no commands defined in the "passport" namespace"

I have an issue where the passport namespace is not available when I call passport:client. I set up a brand new Laravel project with version 5.6.34 where I installed Laravel passport according to the documentation. I also checked a similar question and followed all steps there with no sucess.

Calling php artisan passport:client --password --name="Test" from the command line works without any issues and I can see the client in the database.

However if I create a route in routes/web.php like so:

<?php
use Illuminate\Support\Facades\Route;
use \Illuminate\Support\Facades\Artisan;

Route::get('/', function () {
    Artisan::call('passport:client', [
        '--password' => true,
        '--name' => "Test client",
        '--quiet' => true,
    ]);
});

and use the Artisan facade to call the command I get the error below when I navigate to http://homestead.test/.

Symfony \ Component \ Console \ Exception \ CommandNotFoundException The command "passport:client" does not exist.

I have added Laravel\Passport\PassportServiceProvider::class in the providers array in config/app.php.

How can I call the passport:client command from a web route?

We have a Laravel application that has several hundred database connections which are handled dynamically. In the admin interface you can create a new project and thus a new database where we need to generate a client.

My other option is the instantiate a ClientRepository and call the createPasswordGrantClient() method but I would like to avoid this if possible. I am curious to know why the namespace is available when called on the CLI but not via a request. I can call other commands such as migrate:fresh via a request but passport:client will fail even if it is part of the migration or inside another command.



via Chebli Mohamed

Aucun commentaire:

Enregistrer un commentaire