Laravel Passport создает клиентов программно

#laravel #oauth #client #laravel-passport

#laravel #oauth #клиент #laravel-passport

Вопрос:

Есть ли способ создавать клиентов из пользовательского интерфейса в Laravel? Если мне нужно разрешить пользователям создавать свои собственные клиенты и управлять ими, как я могу запустить «passport: client» в контексте функции, чтобы создать клиента «на лету»?

Я попытался создать модель OauthClient и реализовать форму, которая генерирует клиента, но созданные таким образом клиенты не распознаются в запросах (они представляют собой случайные строки из 40 символов).

Ответ №1:

Я настоятельно рекомендую посмотреть на исходный код, в котором обрабатывается команда (и, возможно, эту суть)

Нет необходимости создавать собственный класс модели! Вы можете создавать новых клиентов программно, используя LaravelPassportClientRepository класс. Просто выберите один из этих вариантов:

Используйте внедрение зависимостей

Вы можете внедрить класс ClientRepository в свои функции контроллера / маршрута. Например, в routes/web.php :

 
Route::get('test', function (LaravelPassportClientRepository $clientRepository) {
    $clientRepository->create(null, 'MyTest', 'https://example.com/auth/callback');
});

  

Используйте помощник app()

На самом деле также внедрение зависимостей, но вызываемое из любого места вашего кода, вы можете использовать app() помощник:

 $clientRepository = app('LaravelPassportClientRepository');
$client = $clientRepository->create(null, 'MyTest', 'https://example.com/auth/callback');