findOldCookies($customer, $cookieName); foreach ($previousCookies as $cookie) { $this->getEntityManager()->remove($cookie); } $this->getEntityManager()->flush(); $cookie = new PasskeysCustomerCookie(); $cookie->setCookieName($cookieName); $cookie->setCookieValue(StringUtil::random($CookieValueCharacterLength)); $cookie->setCookieExpireDate($expireSeconds != 0 ? Carbon::now()->addSeconds($expireSeconds) : null); $cookie->setCustomer($customer); $cookie->updatedTimestamps(); return $cookie; } /** * 過去のクッキーデータの取得 * * @param Customer $customer * @param string $cookieName * * @return float|int|mixed|string */ public function findOldCookies(Customer $customer, string $cookieName) { $expireDate = Carbon::now()->setTimezone('UTC')->format('Y-m-d H:i:s'); return $this->createQueryBuilder('tfcc') ->where('tfcc.Customer = :customer_id') ->andWhere('tfcc.cookie_name = :cookie_name') ->andWhere('tfcc.cookie_expire_date < :expire_date') ->setParameters([ 'customer_id' => $customer->getId(), 'cookie_name' => $cookieName, 'expire_date' => $expireDate, ]) ->getQuery() ->getResult(); } /** * @return PasskeysCustomerCookie|null $result */ public function findOne() { return $this->findOneBy([], ['id' => 'DESC']); } /*** * 有効クッキーを取得する * * @param Customer $customer * @param string $cookieName * @return PasskeysCustomerCookie[]|null */ public function searchForCookie(Customer $customer, string $cookieName) { $expireDate = Carbon::now()->setTimezone('UTC')->format('Y-m-d H:i:s'); return $this->createQueryBuilder('tfcc') ->where('tfcc.Customer = :customer_id') ->andWhere('tfcc.cookie_name = :cookie_name') ->andWhere('tfcc.cookie_expire_date > :expire_date') ->setParameters([ 'customer_id' => $customer->getId(), 'cookie_name' => $cookieName, 'expire_date' => $expireDate, ]) ->getQuery() ->getResult(); } /*** * 会員のクッキーを削除 * * @param Customer $customer */ public function deleteByCustomer(Customer $customer) { $em = $this->getEntityManager(); $em->beginTransaction(); $this->createQueryBuilder('tfcc') ->delete() ->where('tfcc.Customer = :customer') ->setParameter('customer', $customer) ->getQuery() ->execute(); $em->flush(); $em->commit(); } }