100 lines
1.9 KiB
PHP
100 lines
1.9 KiB
PHP
<?php
|
|
|
|
/*
|
|
* This file is part of jwt-auth.
|
|
*
|
|
* (c) Sean Tymon <tymon148@gmail.com>
|
|
*
|
|
* For the full copyright and license information, please view the LICENSE
|
|
* file that was distributed with this source code.
|
|
*/
|
|
|
|
namespace Tymon\JWTAuth\Claims;
|
|
|
|
use DateInterval;
|
|
use DateTimeInterface;
|
|
use Tymon\JWTAuth\Support\Utils;
|
|
use Tymon\JWTAuth\Exceptions\InvalidClaimException;
|
|
|
|
trait DatetimeTrait
|
|
{
|
|
/**
|
|
* Time leeway in seconds.
|
|
*
|
|
* @var int
|
|
*/
|
|
protected $leeway = 0;
|
|
|
|
/**
|
|
* Set the claim value, and call a validate method.
|
|
*
|
|
* @param mixed $value
|
|
*
|
|
* @throws \Tymon\JWTAuth\Exceptions\InvalidClaimException
|
|
*
|
|
* @return $this
|
|
*/
|
|
public function setValue($value)
|
|
{
|
|
if ($value instanceof DateInterval) {
|
|
$value = Utils::now()->add($value);
|
|
}
|
|
|
|
if ($value instanceof DateTimeInterface) {
|
|
$value = $value->getTimestamp();
|
|
}
|
|
|
|
return parent::setValue($value);
|
|
}
|
|
|
|
/**
|
|
* {@inheritdoc}
|
|
*/
|
|
public function validateCreate($value)
|
|
{
|
|
if (! is_numeric($value)) {
|
|
throw new InvalidClaimException($this);
|
|
}
|
|
|
|
return $value;
|
|
}
|
|
|
|
/**
|
|
* Determine whether the value is in the future.
|
|
*
|
|
* @param mixed $value
|
|
*
|
|
* @return bool
|
|
*/
|
|
protected function isFuture($value)
|
|
{
|
|
return Utils::isFuture($value, $this->leeway);
|
|
}
|
|
|
|
/**
|
|
* Determine whether the value is in the past.
|
|
*
|
|
* @param mixed $value
|
|
*
|
|
* @return bool
|
|
*/
|
|
protected function isPast($value)
|
|
{
|
|
return Utils::isPast($value, $this->leeway);
|
|
}
|
|
|
|
/**
|
|
* Set the leeway in seconds.
|
|
*
|
|
* @param int $leeway
|
|
*
|
|
* @return $this
|
|
*/
|
|
public function setLeeway($leeway)
|
|
{
|
|
$this->leeway = $leeway;
|
|
|
|
return $this;
|
|
}
|
|
}
|