54 lines
1.4 KiB
PHP
54 lines
1.4 KiB
PHP
|
|
<?php
|
||
|
|
|
||
|
|
declare(strict_types=1);
|
||
|
|
|
||
|
|
namespace Kreait\Firebase\Auth;
|
||
|
|
|
||
|
|
use DateTimeImmutable;
|
||
|
|
use Kreait\Firebase\Util\DT;
|
||
|
|
|
||
|
|
use function array_key_exists;
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @phpstan-type UserMetadataResponseShape array{
|
||
|
|
* createdAt: non-empty-string,
|
||
|
|
* lastLoginAt?: non-empty-string,
|
||
|
|
* passwordUpdatedAt?: non-empty-string,
|
||
|
|
* lastRefreshAt?: non-empty-string
|
||
|
|
* }
|
||
|
|
*/
|
||
|
|
final class UserMetaData
|
||
|
|
{
|
||
|
|
public function __construct(
|
||
|
|
public readonly DateTimeImmutable $createdAt,
|
||
|
|
public readonly ?DateTimeImmutable $lastLoginAt,
|
||
|
|
public readonly ?DateTimeImmutable $passwordUpdatedAt,
|
||
|
|
public readonly ?DateTimeImmutable $lastRefreshAt,
|
||
|
|
) {
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @internal
|
||
|
|
*
|
||
|
|
* @param UserMetadataResponseShape $data
|
||
|
|
*/
|
||
|
|
public static function fromResponseData(array $data): self
|
||
|
|
{
|
||
|
|
$createdAt = DT::toUTCDateTimeImmutable($data['createdAt']);
|
||
|
|
|
||
|
|
$lastLoginAt = array_key_exists('lastLoginAt', $data)
|
||
|
|
? DT::toUTCDateTimeImmutable($data['lastLoginAt'])
|
||
|
|
: null;
|
||
|
|
|
||
|
|
$passwordUpdatedAt = array_key_exists('passwordUpdatedAt', $data)
|
||
|
|
? DT::toUTCDateTimeImmutable($data['passwordUpdatedAt'])
|
||
|
|
: null;
|
||
|
|
|
||
|
|
$lastRefreshAt = array_key_exists('lastRefreshAt', $data)
|
||
|
|
? DT::toUTCDateTimeImmutable($data['lastRefreshAt'])
|
||
|
|
: null;
|
||
|
|
|
||
|
|
return new self($createdAt, $lastLoginAt, $passwordUpdatedAt, $lastRefreshAt);
|
||
|
|
}
|
||
|
|
}
|