buildAuthUrlFromBase('https://accounts.dabory.com/o/oauth2/authorize', $state); } /** * {@inheritdoc} */ protected function getTokenUrl() { return 'https://accounts.dabory.com/o/oauth2/token'; } /** * {@inheritdoc} */ public function getAccessTokenResponse($code) { $response = $this->getHttpClient()->post($this->getTokenUrl(), [ 'headers' => ['Authorization' => 'Basic ' . base64_encode($this->clientId . ':' . $this->clientSecret)], 'form_params' => $this->getTokenFields($code), ]); $data = json_decode($response->getBody(), true); return Arr::add($data, 'expires_in', Arr::pull($data, 'expires')); } /** * {@inheritdoc} */ protected function getTokenFields($code) { return Arr::add( parent::getTokenFields($code), 'grant_type', 'authorization_code' ); } /** * {@inheritdoc} */ protected function getUserByToken($token) { $response = $this->getHttpClient()->get('https://accounts.dabory.com/o/oauth2/userinfo', [ 'headers' => [ 'Authorization' => 'Bearer '.$token ], ]); return json_decode($response->getBody(), true); } /** * {@inheritdoc} */ protected function mapUserToObject(array $user) { return (new User)->setRaw($user)->map([ 'client_id' => $user['client_id'], 'expires_in' => $user['expires_in'], 'id' => $user['sso_sub'], 'email' => $user['user_id'] ?? null, ]); } }