%PDF- %PDF-
| Direktori : /home/graphicd/public_html/vebto/vendor/kreait/firebase-php/src/Firebase/Auth/ |
| Current File : /home/graphicd/public_html/vebto/vendor/kreait/firebase-php/src/Firebase/Auth/ApiClient.php |
<?php
declare(strict_types=1);
namespace Kreait\Firebase\Auth;
use GuzzleHttp\ClientInterface;
use Kreait\Firebase\Exception\Auth\EmailNotFound;
use Kreait\Firebase\Exception\Auth\ExpiredOobCode;
use Kreait\Firebase\Exception\Auth\InvalidOobCode;
use Kreait\Firebase\Exception\Auth\OperationNotAllowed;
use Kreait\Firebase\Exception\Auth\UserDisabled;
use Kreait\Firebase\Exception\AuthApiExceptionConverter;
use Kreait\Firebase\Exception\AuthException;
use Kreait\Firebase\Exception\FirebaseException;
use Kreait\Firebase\Http\WrappedGuzzleClient;
use Kreait\Firebase\Request;
use Kreait\Firebase\Value\Provider;
use Psr\Http\Message\ResponseInterface;
use Throwable;
/**
* @internal
*/
class ApiClient implements ClientInterface
{
use WrappedGuzzleClient;
/** @var TenantId|null */
private $tenantId;
/** @var AuthApiExceptionConverter */
private $errorHandler;
/**
* @internal
*/
public function __construct(ClientInterface $client, ?TenantId $tenantId = null)
{
$this->client = $client;
$this->tenantId = $tenantId;
$this->errorHandler = new AuthApiExceptionConverter();
}
/**
* @throws AuthException
* @throws FirebaseException
*/
public function createUser(Request\CreateUser $request): ResponseInterface
{
return $this->requestApi('signupNewUser', $request->jsonSerialize());
}
/**
* @throws AuthException
* @throws FirebaseException
*/
public function updateUser(Request\UpdateUser $request): ResponseInterface
{
return $this->requestApi('setAccountInfo', $request->jsonSerialize());
}
/**
* @param array<string, mixed> $claims
*
* @throws AuthException
* @throws FirebaseException
*/
public function setCustomUserClaims(string $uid, array $claims): ResponseInterface
{
return $this->requestApi('https://identitytoolkit.googleapis.com/v1/accounts:update', [
'localId' => $uid,
'customAttributes' => \json_encode((object) $claims),
]);
}
/**
* Returns a user for the given email address.
*
* @throws EmailNotFound
* @throws AuthException
* @throws FirebaseException
*/
public function getUserByEmail(string $email): ResponseInterface
{
return $this->requestApi('getAccountInfo', [
'email' => [$email],
]);
}
/**
* @throws AuthException
* @throws FirebaseException
*/
public function getUserByPhoneNumber(string $phoneNumber): ResponseInterface
{
return $this->requestApi('getAccountInfo', [
'phoneNumber' => [$phoneNumber],
]);
}
/**
* @throws AuthException
* @throws FirebaseException
*/
public function downloadAccount(?int $batchSize = null, ?string $nextPageToken = null): ResponseInterface
{
$batchSize = $batchSize ?? 1000;
return $this->requestApi('downloadAccount', \array_filter([
'maxResults' => $batchSize,
'nextPageToken' => $nextPageToken,
]));
}
/**
* @throws AuthException
* @throws FirebaseException
*/
public function deleteUser(string $uid): ResponseInterface
{
return $this->requestApi('deleteAccount', [
'localId' => $uid,
]);
}
/**
* @param string|array<string> $uids
*
* @throws AuthException
* @throws FirebaseException
*/
public function getAccountInfo($uids): ResponseInterface
{
if (!\is_array($uids)) {
$uids = [$uids];
}
return $this->requestApi('getAccountInfo', [
'localId' => $uids,
]);
}
/**
* @throws ExpiredOobCode
* @throws InvalidOobCode
* @throws OperationNotAllowed
* @throws AuthException
* @throws FirebaseException
*/
public function verifyPasswordResetCode(string $oobCode): ResponseInterface
{
return $this->requestApi('resetPassword', [
'oobCode' => $oobCode,
]);
}
/**
* @throws ExpiredOobCode
* @throws InvalidOobCode
* @throws OperationNotAllowed
* @throws UserDisabled
* @throws AuthException
* @throws FirebaseException
*/
public function confirmPasswordReset(string $oobCode, string $newPassword): ResponseInterface
{
return $this->requestApi('resetPassword', [
'oobCode' => $oobCode,
'newPassword' => $newPassword,
]);
}
/**
* @throws AuthException
* @throws FirebaseException
*/
public function revokeRefreshTokens(string $uid): ResponseInterface
{
return $this->requestApi('setAccountInfo', [
'localId' => $uid,
'validSince' => \time(),
]);
}
/**
* @param array<int, string|Provider> $providers
*
* @throws AuthException
* @throws FirebaseException
*/
public function unlinkProvider(string $uid, array $providers): ResponseInterface
{
return $this->requestApi('setAccountInfo', [
'localId' => $uid,
'deleteProvider' => $providers,
]);
}
/**
* @param array<mixed> $data
*
* @throws AuthException
* @throws FirebaseException
*/
private function requestApi(string $uri, array $data): ResponseInterface
{
$options = [];
if ($this->tenantId) {
$data['tenantId'] = $this->tenantId->toString();
}
if (!empty($data)) {
$options['json'] = $data;
}
try {
return $this->request('POST', $uri, $options);
} catch (Throwable $e) {
throw $this->errorHandler->convertException($e);
}
}
}