This repository has been archived on 2025-02-26. You can view files and clone it, but cannot push or open issues or pull requests.
szurubooru/src/Services/TokenService.php
Marcin Kurczewski 632bac8661 Added "use ..." statements
This version ditches backwards compatibility with PHP earlier than 5.6.
2014-10-18 18:48:36 +02:00

69 lines
1.7 KiB
PHP

<?php
namespace Szurubooru\Services;
use Szurubooru\Dao\TokenDao;
use Szurubooru\Dao\TransactionManager;
use Szurubooru\Entities\Token;
class TokenService
{
private $transactionManager;
private $tokenDao;
public function __construct(
TransactionManager $transactionManager,
TokenDao $tokenDao)
{
$this->transactionManager = $transactionManager;
$this->tokenDao = $tokenDao;
}
public function getByName($tokenName)
{
$transactionFunc = function() use ($tokenName)
{
$token = $this->tokenDao->findByName($tokenName);
if (!$token)
throw new \InvalidArgumentException('Token with identifier "' . $tokenName . '" not found.');
return $token;
};
return $this->transactionManager->rollback($transactionFunc);
}
public function invalidateByName($tokenName)
{
$transactionFunc = function() use ($tokenName)
{
$this->tokenDao->deleteByName($tokenName);
};
$this->transactionManager->commit($transactionFunc);
}
public function invalidateByAdditionalData($additionalData)
{
$transactionFunc = function() use ($additionalData)
{
$this->tokenDao->deleteByAdditionalData($additionalData);
};
$this->transactionManager->commit($transactionFunc);
}
public function createAndSaveToken($additionalData, $tokenPurpose)
{
$transactionFunc = function() use ($additionalData, $tokenPurpose)
{
$token = $this->tokenDao->findByAdditionalDataAndPurpose($additionalData, $tokenPurpose);
if (!$token)
{
$token = new Token();
$token->setName(sha1(date('r') . uniqid() . microtime(true)));
$token->setAdditionalData($additionalData);
$token->setPurpose($tokenPurpose);
$this->tokenDao->save($token);
}
return $token;
};
return $this->transactionManager->commit($transactionFunc);
}
}