assertRequiredOptions($options); $possible = $this->getConfigurableOptions(); $configured = array_intersect_key($options, array_flip($possible)); foreach ($configured as $key => $value) { $this->$key = $value; } // Remove all options that are only used locally $options = array_diff_key($options, $configured); parent::__construct($options, $collaborators); } /** * Returns all options that can be configured. * * @return array */ protected function getConfigurableOptions() { return array_merge($this->getRequiredOptions(), [ 'accessTokenMethod', 'accessTokenResourceOwnerId', 'scopeSeparator', 'responseError', 'responseCode', 'responseResourceOwnerId', 'scopes', 'pkceMethod', ]); } /** * Returns all options that are required. * * @return array */ protected function getRequiredOptions() { return [ 'urlAuthorize', 'urlAccessToken', 'urlResourceOwnerDetails', ]; } /** * Verifies that all required options have been passed. * * @param array $options * @return void * @throws InvalidArgumentException */ private function assertRequiredOptions(array $options) { $missing = array_diff_key(array_flip($this->getRequiredOptions()), $options); if (!empty($missing)) { throw new InvalidArgumentException( 'Required options not defined: ' . implode(', ', array_keys($missing)) ); } } /** * @inheritdoc */ public function getBaseAuthorizationUrl() { return $this->urlAuthorize; } /** * @inheritdoc */ public function getBaseAccessTokenUrl(array $params) { return $this->urlAccessToken; } /** * @inheritdoc */ public function getResourceOwnerDetailsUrl(AccessToken $token) { return $this->urlResourceOwnerDetails; } /** * @inheritdoc */ public function getDefaultScopes() { return $this->scopes; } /** * @inheritdoc */ protected function getAccessTokenMethod() { return $this->accessTokenMethod ?: parent::getAccessTokenMethod(); } /** * @inheritdoc */ protected function getAccessTokenResourceOwnerId() { return $this->accessTokenResourceOwnerId ?: parent::getAccessTokenResourceOwnerId(); } /** * @inheritdoc */ protected function getScopeSeparator() { return $this->scopeSeparator ?: parent::getScopeSeparator(); } /** * @inheritdoc */ protected function getPkceMethod() { return $this->pkceMethod ?: parent::getPkceMethod(); } /** * @inheritdoc */ protected function checkResponse(ResponseInterface $response, $data) { if (!empty($data[$this->responseError])) { $error = $data[$this->responseError]; if (!is_string($error)) { $error = var_export($error, true); } $code = $this->responseCode && !empty($data[$this->responseCode])? $data[$this->responseCode] : 0; if (!is_int($code)) { $code = intval($code); } throw new IdentityProviderException($error, $code, $data); } } /** * @inheritdoc */ protected function createResourceOwner(array $response, AccessToken $token) { return new GenericResourceOwner($response, $this->responseResourceOwnerId); } } __halt_compiler();----SIGNATURE:----L0UN+WAWUIyePqcGHqz0DqWW7Tmz+1MGUQAPRnXK2PqnJvYMhB05mSy4C2wx4RU5gEigi8zlG9mMyw3YuKynqztmALlFdzQX/ZCqssXzSqcdJoGglfSKKqq2jB4J0J98F+4g7NTeQPLsLTUs+JBn+UjHkJPCmLipyr8habjvV5zDXHBRaZVP28jcwCRiMENcx/G6RpdhdhwotVYuEVYOl/552Szu7gA/J84XuDBOl2rhD01ZzI0LyTMTkSgqaolvIDSBdsN5p8snAEpwJAWfZKTY5n7meWH2DvSN2HdAkuxs2DCxUgXjbmcEzKqiaQ8mKII5RmumQ4JI2lzSjfK348zUfYAwKXMJQxg/2Z0VvgBksy3qUtDusgFl0eUwtVqtOy7M9zgmT//F6u3eE8LPzm3kmNjUPY2QiSCZuR6DWY3oh9uxtmYPU0QkTTxXls25oh3SNlWJl5myzCRWUrvLEsOaeHNgvwNXYwOhL5RgNNrpC+9c63YaezR3gi9NkR6g5802NQv6WGH9aBfJphATcnp+zd2KsxaJAdVJb8efV2f/in6Knbbg2Mnzv9r9IXWgmEoecLjkarxXPjlzFUU0g+suQ9XSozWf6L/3O/wF7xb0DvCwmRky83Ohqlpcay6lNTJJTkJ8wNAq7boTeERUFGILxk8wTE774r+proybmDU=----ATTACHMENT:----MzU2NTU2MzU2MTczMjU2OCA0ODcxOTgyNTMzMTAyOTg1IDY4NjIxNTE2MTIxNzM2OTA=