Symfony - токен

0

Я написал запрос и функцию, но не могу пройти эту логику. Мне нужно написать инструкцию, где я не могу сгенерировать то же значение токена снова, когда он отправляется в базу данных.

public function getToken($user, $token)
{
    $tok = $this->getRepository()
        ->createQueryBuilder('pt')
        ->select('pt')
        ->where('pt.user = :user')
        ->andWhere('pt.token = :token')
        ->setParameter('user', $user)
        ->setParameter('token', $token)
        ->getQuery()
        ->getResult();

    if(empty($token)) {
        $tok = new Token();
        $tok->setUser($user);
        $tok->setToken($token);
        $this->em->persist($tok);
        $this->em->flush();
    }

    return $tok;
}

и в моем контроллере..

public function getTokenAction()
{
    $this->requirePostParams(['user', 'token']);

    $this->get('token')->getToken($this->getUser(), $this->data['token']);

    return $this->success();
}

Итак, если это значение токена находится в db, не отправляйте его снова, а если нет, то да.

Теги:
function
token

1 ответ

0
Лучший ответ

Ваша проблема в том, что вы создаете новый токен, когда токен параметра $ пуст, а не когда объект $ tok пуст.

Просто замените if(empty($token)) на if(empty($tok))

Вы также должны заменить ->getResult() на ->getOneOrNullresult() поскольку вам нужен только один токен объекта, а не массив.

  • 0
    Это так! Большое спасибо.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню