openvk/Web/Models/Repositories/APITokens.php
2024-03-30 12:59:10 +02:00

35 lines
1 KiB
PHP

<?php declare(strict_types=1);
namespace openvk\Web\Models\Repositories;
use openvk\Web\Models\Entities\APIToken;
class APITokens extends Repository
{
protected $tableName = "api_tokens";
protected $modelName = "APIToken";
function getByCode(string $code, bool $withRevoked = false): ?APIToken
{
$parts = explode("-", $code);
$id = $parts[0];
$secret = implode("", array_slice($parts, 1, 9));
$token = $this->get((int) $id);
if(!$token)
return NULL;
else if($token->getSecret() !== $secret)
return NULL;
else if($token->isRevoked() && !$withRevoked)
return NULL;
return $token;
}
function getStaleByUser(int $userId, string $platform, bool $withRevoked = false): ?APIToken
{
return $this->toEntity($this->table->where([
'user' => $userId,
'platform' => $platform,
'deleted' => $withRevoked,
])->fetch());
}
}