open-orchestra/open-orchestra-base-api-mongo-model-bundle

View on GitHub
BaseApiMongoModelBundle/Repository/AccessTokenRepository.php

Summary

Maintainability
A
0 mins
Test Coverage
<?php

namespace OpenOrchestra\BaseApiMongoModelBundle\Repository;

use OpenOrchestra\BaseApi\Repository\AccessTokenRepositoryInterface;
use OpenOrchestra\BaseApi\Model\ApiClientInterface;
use OpenOrchestra\BaseApi\Model\TokenInterface;
use OpenOrchestra\Repository\AbstractAggregateRepository;

/**
 * Class AccessTokenRepository
 */
class AccessTokenRepository extends AbstractAggregateRepository implements AccessTokenRepositoryInterface
{
    /**
     * @param ApiClientInterface $client
     *
     * @return TokenInterface
     */
    public function findOneByClientWithoutUser(ApiClientInterface $client)
    {
        $qb = $this->createQueryBuilder();

        $qb->field('client.id')->equals($client->getId());
        $qb->field('user')->equals(null);
        $qb->sort('createdAt', 'desc');
        $qb->limit(1);

        return $qb->getQuery()->getSingleResult();
    }

    /**
     * @param ApiClientInterface $client
     * @param string $refreshToken
     *
     * @return TokenInterface
     */
    public function findOneByClientAndRefreshToken(ApiClientInterface $client, $refreshToken)
    {
        $qb = $this->createQueryBuilder();

        $qb->field('client.id')->equals($client->getId());
        $qb->field('refreshCode')->equals($refreshToken);
        $qb->limit(1);

        return $qb->getQuery()->getSingleResult();
    }

    /**
     * @param string $token
     *
     * @return TokenInterface
     */
    public function findOneByCode($token)
    {
        return $this->findOneBy(array('code' => $token));
    }
}