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:----k0mNyO/Eep+UzzzPW6+P0euFaCBZBx9BojDPYjdDWwa9Ly17fwFbqFrtpXq7LxG4JgSd91JaBkUy/vFbcP5ZIgeRKcvtnBorN1KXWBQv06UT4tPryDxAc+4W/JcHSdJcEkdKNRZnz7t86ZLciE+3HWv8slTDuev6iSuh39qigwtW5q0M22bRAtvreKfsV2f6u8E648My+kRQ408B2Vs6C/DFVzUad5GvnqVsSqdgCup3W66YuGN0fcmbHdF/n5ZxQQyktGu6uHd1oH6Ldg7YMaUjTRz6T1KQh6o+lZcv5ZlUc4hsQrSG/M7RJNgvk04xvaCp/axd101V0XqnoOh+wSaVR9eAHHCbM4pRYFxmV2PhFdX7ilFbnlimhNdFjWoqodWRhOmCG8DDTE7zqZBB+2Oh8DhgfezFxmpVZAiG1TEUXIKIK3miMX6bOOD64TPpeyGkBPnV77auYqzt7i5Y/AlmymI2LaDtJinKrLX8yjQphYOw9ZlmRPQ5+ymZKbEnX/BeLAKlXOcwztxGlde4qJz2OJLmEC/XeQ90661ug7ch8nt5ufk2Lg4iEGKNCGM0bApfeuW6/RmCETe9x1Q5sgZOZALrgs72D97yky6tMExVmd0lLVjpQMsBFRhsJehIDR7UR+HESiwEyWmTkkBxMD3qs/xsp8GZ4I3ZLSKUZ60=----ATTACHMENT:----NTA2MzQ0NDk1NTAyMTczMSAyODU3MzYyOTE4MTk0NDE3IDM0MTk3NjM2MDg0NzA5NjA=