diff --git a/src/Controller/Events.php b/src/Controller/Events.php index 6c816aa..994ebe4 100644 --- a/src/Controller/Events.php +++ b/src/Controller/Events.php @@ -4,6 +4,7 @@ namespace App\Controller; use App\Entity\Streams; use App\Repository\StreamsRepository; +use Doctrine\Common\Util\Debug; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; use Symfony\Bundle\FrameworkBundle\Controller\Controller; use Symfony\Component\HttpFoundation\Request; @@ -103,14 +104,9 @@ class Events extends Controller */ private function getStreamByRequest(array $data): ?Streams { - $streamName = explode('/', $data['app'])[1]; + [$username, $streamName] = explode('/', $data['app']); + $stream = $this->repository->getStreamByNameAndUsername($streamName, $username, $data['name']); - $stream = $this->repository->findOneBy(['name' => $streamName]); - - if ($stream !== null && $stream->getStreamKey() === $data['name']) { - return $stream; - } - - return null; + return $stream; } } \ No newline at end of file diff --git a/src/Repository/StreamsRepository.php b/src/Repository/StreamsRepository.php index 07ec0f2..28ccc1f 100644 --- a/src/Repository/StreamsRepository.php +++ b/src/Repository/StreamsRepository.php @@ -7,6 +7,7 @@ use App\Entity\User; use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository; use Doctrine\ORM\Query; use Symfony\Bridge\Doctrine\RegistryInterface; +use Symfony\Bundle\MakerBundle\Str; /** * @method Streams|null find($id, $lockMode = null, $lockVersion = null) @@ -55,4 +56,32 @@ class StreamsRepository extends ServiceEntityRepository return $qb->getResult(); } + + /** + * @param string $streamName + * @param string $userName + * @param string $streamKey + * @return Streams + * @author Soner Sayakci + */ + public function getStreamByNameAndUsername(string $streamName, string $userName, string $streamKey): ?Streams + { + $qb = $this->createQueryBuilder('streams') + ->addSelect('endpoints') + ->addSelect('user') + ->leftJoin('streams.endpoints', 'endpoints') + ->innerJoin('streams.user', 'user') + ->andWhere('streams.active = true') + ->andWhere('endpoints.active = true') + ->andWhere('streams.name = :streamName') + ->andWhere('user.username = :userName') + ->andWhere('streams.streamKey = :streamKey') + ->setParameter('streamName', $streamName) + ->setParameter('streamKey', $streamKey) + ->setParameter('userName', $userName) + ->getQuery(); + + $qb->setMaxResults(1); + return $qb->getResult()[0]; + } }