mirror of
https://github.com/r4sas/recastin-panel
synced 2025-08-26 13:31:47 +00:00
Check stream permission by streamName, userName and streamKey
This commit is contained in:
parent
e271d1bfb4
commit
f83c344d14
@ -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;
|
||||
}
|
||||
}
|
@ -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 <shyim@posteo.de>
|
||||
*/
|
||||
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];
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user