Как использовать паспорт в мультитенантной установке в Laravel - PullRequest
0 голосов
/ 11 декабря 2018

Пререквизиты:

  1. Версия Laravel: 5.7
  2. Пакет Hyn / Multi-tenant 5.3
  3. Паспорт Laravel

Итак, яиметь приложение Laravel, уже использующее паспорт для аутентификации.Теперь в настоящее время, когда пользователь входит в систему, я использую следующий контроллер для авторизации и предоставления токена доступа пользователю

public function login(Request $request)
    {
        $http = new \GuzzleHttp\Client;
        try {
            $response = $http->post(config('services.passport.login_endpoint'), [
                'form_params' => [
                    'grant_type' => 'password',
                    'client_id' => config('services.passport.client_id'),
                    'client_secret' => config('services.passport.client_secret'),
                    'username' => $request->username,
                    'password' => $request->password,
                ]
            ]);
            return $response->getBody();
        } catch (\GuzzleHttp\Exception\BadResponseException $e) {
            if ($e->getCode() === 400) {
                return response()->json('Invalid Request. Please enter a username or a password.', $e->getCode());
            } else if ($e->getCode() === 401) {
                return response()->json('Your credentials are incorrect. Please try again', $e->getCode());
            }
            return response()->json('Something went wrong on the server.', $e->getCode());
        }
    }

Однако пара вещей жестко запрограммированы, что не будет работать для установки мультитенанта.

services.passport.client_id и services.passport.client_secret

Они создаются для одного экземпляра серверной части.Но когда я настрою мультитенант, у каждого из них будут отдельные client_id и client_secret.

. Поэтому рабочий процесс, который я хочу, по сути выглядит так:

  1. Я как менеджерзарегистрировать новый внутренний экземпляр для арендатора
  2. Пакет hyn \ multi-tenant создаст базу данных для нового арендатора
  3. Новая база данных для этого арендатора будет содержать токены доступа и cliet_secret

До сих пор это завершено и уже функционирует, ниже часть, которую я пытаюсь понять

Мой интерфейс имеет совершенно отдельную кодовую базу, которая связывается с сервером через API. так что пользователь на внешнем интерфейсе, который принадлежит экземпляру арендатора, попытается войти в систему, используя контроллер login, который я показал выше, однако смысл моего поста и вопрос, который у меня есть, - как я могу динамическивызвать client_id и client_secret на основе базы данных user \ tenant ??

Я знаю, что это много, вероятно, переварить, но если какое-либо тело имеетидеи у меня все уши.Заранее спасибо !!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...