<?php
declare(strict_types=1);

namespace api\components\OAuth2\Entities;

use Carbon\CarbonImmutable;
use DateTimeImmutable;
use League\OAuth2\Server\Entities\RefreshTokenEntityInterface;
use League\OAuth2\Server\Entities\Traits\EntityTrait;
use League\OAuth2\Server\Entities\Traits\RefreshTokenTrait;

class RefreshTokenEntity implements RefreshTokenEntityInterface {
    use EntityTrait;
    use RefreshTokenTrait;

    /**
     * We don't rotate refresh tokens, so that to always pass validation in the internal validator
     * of the oauth2 server implementation we set the lifetime as far as possible.
     *
     * In 2038 this may cause problems, but I am sure that by then this code, if it still works,
     * will be rewritten several times and the problem will be solved in a completely different way.
     *
     * @return DateTimeImmutable
     */
    public function getExpiryDateTime(): DateTimeImmutable {
        return CarbonImmutable::create(2038, 11, 11, 22, 13, 0, 'Europe/Minsk');
    }

}