%PDF- %PDF-
Direktori : /home/bitrix/www/local/php_interface/lib/vendor/kreait/firebase-php/src/Firebase/Auth/ |
Current File : /home/bitrix/www/local/php_interface/lib/vendor/kreait/firebase-php/src/Firebase/Auth/ApiClient.php |
<?php namespace Kreait\Firebase\Auth; use GuzzleHttp\ClientInterface; use GuzzleHttp\Exception\RequestException; use Kreait\Firebase\Exception\Auth\CredentialsMismatch; use Kreait\Firebase\Exception\Auth\EmailNotFound; use Kreait\Firebase\Exception\Auth\InvalidCustomToken; use Kreait\Firebase\Exception\AuthException; use Kreait\Firebase\Request; use Lcobucci\JWT\Token; use Psr\Http\Message\ResponseInterface; class ApiClient { /** * @var ClientInterface */ private $client; public function __construct(ClientInterface $client) { $this->client = $client; } /** * Takes a custom token and exchanges it with an ID token. * * @param Token $token * * @see https://firebase.google.com/docs/reference/rest/auth/#section-verify-custom-token * * @throws InvalidCustomToken * @throws CredentialsMismatch * * @return ResponseInterface */ public function exchangeCustomTokenForIdAndRefreshToken(Token $token): ResponseInterface { return $this->request('verifyCustomToken', [ 'token' => (string) $token, 'returnSecureToken' => true, ]); } public function createUser(Request\CreateUser $request): ResponseInterface { return $this->request('signupNewUser', $request); } public function updateUser(Request\UpdateUser $request): ResponseInterface { return $this->request('setAccountInfo', $request); } /** * @deprecated 4.2.0 * @see ApiClient::createUser() * * @codeCoverageIgnore */ public function signupNewUser(string $email = null, string $password = null): ResponseInterface { return $this->createUser( Request\CreateUser::new() ->withUnverifiedEmail($email) ->withClearTextPassword($password) ); } /** * Returns a user for the given email address. * * @param string $email * * @throws EmailNotFound * * @return ResponseInterface */ public function getUserByEmail(string $email): ResponseInterface { return $this->request('getAccountInfo', [ 'email' => [$email], ]); } /** * Returns a user for the given phone number. * * @param string $phoneNumber * * @return ResponseInterface */ public function getUserByPhoneNumber(string $phoneNumber): ResponseInterface { return $this->request('getAccountInfo', [ 'phoneNumber' => [$phoneNumber], ]); } public function downloadAccount(int $batchSize = null, string $nextPageToken = null): ResponseInterface { $batchSize = $batchSize ?? 1000; return $this->request('downloadAccount', array_filter([ 'maxResults' => $batchSize, 'nextPageToken' => $nextPageToken, ])); } /** * @deprecated 4.2.0 * @see ApiClient::updateUser() * * @codeCoverageIgnore */ public function enableUser($uid): ResponseInterface { return $this->updateUser( Request\UpdateUser::new() ->withUid($uid) ->markAsEnabled() ); } /** * @deprecated 4.2.0 * @see ApiClient::updateUser() * * @codeCoverageIgnore */ public function disableUser($uid): ResponseInterface { return $this->updateUser( Request\UpdateUser::new() ->withUid($uid) ->markAsDisabled() ); } public function deleteUser(string $uid): ResponseInterface { return $this->request('deleteAccount', [ 'localId' => $uid, ]); } /** * @deprecated 4.2.0 * @see ApiClient::updateUser() * * @codeCoverageIgnore */ public function changeUserPassword(string $uid, string $newPassword): ResponseInterface { return $this->updateUser( Request\UpdateUser::new() ->withUid($uid) ->withClearTextPassword($newPassword) ); } /** * @deprecated 4.2.0 * @see ApiClient::updateUser() * * @codeCoverageIgnore */ public function changeUserEmail(string $uid, string $newEmail): ResponseInterface { return $this->updateUser( Request\UpdateUser::new() ->withUid($uid) ->withEmail($newEmail) ); } public function getAccountInfo(string $uid): ResponseInterface { return $this->request('getAccountInfo', [ 'localId' => [$uid], ]); } public function verifyPassword(string $email, string $password): ResponseInterface { return $this->request('verifyPassword', [ 'email' => $email, 'password' => $password, ]); } public function sendEmailVerification(string $idToken, string $continueUrl = null, string $locale = null): ResponseInterface { $headers = $locale ? ['X-Firebase-Locale' => $locale] : null; $data = array_filter([ 'requestType' => 'VERIFY_EMAIL', 'idToken' => $idToken, 'continueUrl' => $continueUrl, ]); return $this->request('getOobConfirmationCode', $data, $headers); } public function sendPasswordResetEmail(string $email, string $continueUrl = null, string $locale = null): ResponseInterface { $headers = $locale ? ['X-Firebase-Locale' => $locale] : null; $data = array_filter([ 'email' => $email, 'requestType' => 'PASSWORD_RESET', 'continueUrl' => $continueUrl, ]); return $this->request('getOobConfirmationCode', $data, $headers); } public function revokeRefreshTokens(string $uid): ResponseInterface { return $this->request('setAccountInfo', [ 'localId' => $uid, 'validSince' => time(), ]); } public function unlinkProvider(string $uid, array $providers): ResponseInterface { return $this->request('setAccountInfo', [ 'localId' => $uid, 'deleteProvider' => $providers, ]); } private function request(string $uri, $data, array $headers = null): ResponseInterface { if ($data instanceof \JsonSerializable && empty($data->jsonSerialize())) { $data = (object) []; // Will be '{}' instead of '[]' when JSON encoded } $options = array_filter([ 'json' => $data, 'headers' => $headers, ]); try { return $this->client->request('POST', $uri, $options); } catch (RequestException $e) { throw AuthException::fromRequestException($e); } catch (\Throwable $e) { throw new AuthException($e->getMessage(), $e->getCode(), $e); } } }