comment(Inspiring::quote()); })->purpose('Display an inspiring quote'); // Sin este cliente, Passport no puede emitir Personal Access Tokens (createToken lanza // "Personal access client not found"). Idempotente: lo ejecuta el entrypoint en cada // arranque, porque en producción no se corre el seeder. Artisan::command('passport:ensure-personal-client', function (ClientRepository $clients) { $provider = config('auth.guards.api.provider'); try { $clients->personalAccessClient($provider); $this->info('Personal access client: ya existe.'); } catch (RuntimeException) { $clients->createPersonalAccessGrantClient('Personal Access Client', $provider); $this->info('Personal access client: creado.'); } })->purpose('Crea el cliente de Personal Access Tokens si no existe');