31 lines
768 B
PHP
31 lines
768 B
PHP
<?php
|
|
|
|
namespace App\Entity\Repository;
|
|
|
|
use App\Doctrine\Repository;
|
|
use App\Entity;
|
|
use App\Security\SplitToken;
|
|
|
|
abstract class AbstractSplitTokenRepository extends Repository
|
|
{
|
|
/**
|
|
* Given an API key string in the format `identifier:verifier`, find and authenticate an API key.
|
|
*
|
|
* @param string $key
|
|
*/
|
|
public function authenticate(string $key): ?Entity\User
|
|
{
|
|
$userSuppliedToken = SplitToken::fromKeyString($key);
|
|
|
|
$tokenEntity = $this->repository->find($userSuppliedToken->identifier);
|
|
|
|
if ($tokenEntity instanceof $this->entityClass) {
|
|
return ($tokenEntity->verify($userSuppliedToken))
|
|
? $tokenEntity->getUser()
|
|
: null;
|
|
}
|
|
|
|
return null;
|
|
}
|
|
}
|