<?php
declare(strict_types=1);
namespace Kreait\Firebase\Auth;
/**
* Represents a user's info from a third-party identity provider
* such as Google or Facebook.
*
* @phpstan-type UserInfoShape array{
* uid: non-empty-string,
* providerId: non-empty-string,
* displayName?: non-empty-string,
* email?: non-empty-string,
* photoUrl?: non-empty-string,
* phoneNumber?: non-empty-string
*
* }
* @phpstan-type ProviderUserInfoResponseShape array{
* rawId: non-empty-string,
* providerId: non-empty-string,
* displayName?: non-empty-string,
* email?: non-empty-string,
* federatedId?: non-empty-string,
* photoUrl?: non-empty-string,
* phoneNumber?: non-empty-string
* }
*/
final class UserInfo
{
/**
* @param non-empty-string $uid
* @param non-empty-string $providerId
* @param non-empty-string|null $displayName
* @param non-empty-string|null $email
* @param non-empty-string|null $phoneNumber
* @param non-empty-string|null $photoUrl
*/
public function __construct(
public readonly string $uid,
public readonly string $providerId,
public readonly ?string $displayName,
public readonly ?string $email,
public readonly ?string $phoneNumber,
public readonly ?string $photoUrl,
) {
}
/**
* @internal
*
* @param ProviderUserInfoResponseShape $data
*/
public static function fromResponseData(array $data): self
{
return new self(
$data['rawId'],
$data['providerId'],
$data['displayName'] ?? null,
$data['email'] ?? null,
$data['phoneNumber'] ?? null,
$data['photoUrl'] ?? null,
);
}
}
|