src/App/Controller/LobbyController.php line 38

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Users;
  4. use App\Service\AltenteIntegration;
  5. use App\Service\User\UserGuestLandingService;
  6. use App\Service\User\UserLoginService;
  7. use App\Service\User\UsersManagementService;
  8. use Lexik\Bundle\JWTAuthenticationBundle\Services\JWTTokenManagerInterface;
  9. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  10. use Symfony\Component\HttpFoundation\JsonResponse;
  11. use Symfony\Component\HttpFoundation\Request;
  12. use Symfony\Component\HttpFoundation\Response;
  13. use Symfony\Component\Routing\Annotation\Route;
  14. use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
  15. use Symfony\Component\Security\Http\Event\LogoutEvent;
  16. use Symfony\Contracts\EventDispatcher\EventDispatcherInterface;
  17. class LobbyController extends AbstractController
  18. {
  19.     /** @var UsersManagementService */
  20.     protected $usersManagementService;
  21.     /** @var UserLoginService */
  22.     protected $userLoginService;
  23.     public function __construct(
  24.         UsersManagementService $usersManagementService,
  25.         UserLoginService $userLoginService
  26.     ) {
  27.         $this->usersManagementService $usersManagementService;
  28.         $this->userLoginService $userLoginService;
  29.     }
  30.     /**
  31.      * @Route("/", name="lobby.home")
  32.      */
  33.     public function index(Request $requestJWTTokenManagerInterface $jwt): Response
  34.     {
  35.         return $this->playAuth($request$jwt);
  36.     }
  37.     /**
  38.      * @Route("/game/{sysname}", name="lobby.game")
  39.      */
  40.     public function game(string $sysnameAltenteIntegration $altenteIntegration): Response
  41.     {
  42.         return $this->redirect($altenteIntegration->demoAuth($sysname));
  43.     }
  44.     /**
  45.      * @Route("/support", name="lobby.test")
  46.      */
  47.     public function testDevice(Request $requestUserGuestLandingService $userGuestLandingService): Response
  48.     {
  49.         return $this->render('landing/index.html.twig', [
  50.             'games' => AltenteIntegration::ALTENTE_SLOTS_MAP
  51.         ]);
  52.     }
  53.     /**
  54.      * @Route("/terms", name="terms")
  55.      */
  56.     public function terms(Request $request): Response
  57.     {
  58.         //eturn $this->render('pages/terms.html.twig');
  59.         return $this->render('landing/terms_of_use.html.twig');
  60.     }
  61.     /**
  62.      * @Route("/privacy", name="privacy")
  63.      */
  64.     public function privacy(Request $request): Response
  65.     {
  66.         return $this->render('landing/privacy_policy.html.twig');
  67.     }
  68.     /**
  69.      * @Route("/contact", name="contact")
  70.      */
  71.     public function contact(Request $request)
  72.     {
  73.         return $this->render('landing/support.html.twig');
  74.     }
  75.     /**
  76.      * @Route("/play", name="lobby.play", methods={"POST"})
  77.      */
  78.     public function play(Request $requestJWTTokenManagerInterface $jwt): JsonResponse
  79.     {
  80.         /** @var Users $user */
  81.         $user $this->getUser();
  82.         if ($user === null) {
  83.             throw $this->createAccessDeniedException();
  84.         }
  85.         $token $jwt->create($user);
  86.         $this->userLoginService->callLoginRoutines($user$request);
  87.         $queryParams $request->request->get('qp');
  88.         $domain $request->server->get('MAIN_DOMAIN');
  89.         return new JsonResponse([
  90.             'url' => "https://html5.$domain/?jwt=$token&$queryParams",
  91.             'uid' => $user->getId()
  92.         ]);
  93.     }
  94.     /**
  95.      * @Route("/logout", name="lobby.logout", methods={"GET"})
  96.      */
  97.     public function logout(Request $requestTokenStorageInterface $tokenStorageEventDispatcherInterface $eventDispatcher): Response
  98.     {
  99.         $logoutEvent = new LogoutEvent($request$tokenStorage->getToken());
  100.         $eventDispatcher->dispatch($logoutEvent);
  101.         $tokenStorage->setToken(null);
  102.         if ($logoutEvent->getResponse()) {
  103.             return $logoutEvent->getResponse();
  104.         }
  105.         return $this->redirectToRoute('lobby.play.auth');
  106.     }
  107.     /**
  108.      * @Route("/play", name="lobby.play.auth", methods={"GET"})
  109.      */
  110.     public function playAuth(Request $requestJWTTokenManagerInterface $jwt): Response
  111.     {
  112.         $queryParams $request->query->all();
  113.         $queryParams['cashier_provider'] = 'xsolla';
  114.         $qs http_build_query($queryParams);
  115.         $domain $request->server->get('MAIN_DOMAIN');
  116.         /** @var Users $user */
  117.         $user $this->getUser();
  118.         $url null;
  119.         $uid null;
  120.         if ($user !== null) {
  121.             $token $jwt->create($user);
  122.             $this->userLoginService->callLoginRoutines($user$request);
  123.             $url "https://html5.$domain/?jwt=$token&$qs";
  124.             $uid $user->getId();
  125.         }
  126.         return $this->render(
  127.             'play.html.twig',
  128.             [
  129.                 'facebookPage' => $_ENV['FACEBOOK_APP_CANVAS'],
  130.                 'facebookPageId' => $_ENV['OAUTH_FACEBOOK_ID'],
  131.                 'domain' => $request->server->get('MAIN_DOMAIN'),
  132.                 'queryParams' => http_build_query($queryParams),
  133.                 'appType' => 'web',
  134.                 'uid' => $uid,
  135.                 'appUrl' => $url,
  136.                 'oauthGoogleId' => $_ENV['OAUTH_GOOGLE_CLIENT_ID']
  137.             ]
  138.         );
  139.     }
  140.     /**
  141.      * @Route("/facebook", name="lobby.facebook")
  142.      */
  143.     public function facebook(Request $requestJWTTokenManagerInterface $jwt): Response
  144.     {
  145.         /** @var Users $user */
  146.         $user $this->getUser();
  147.         if (!$user) {
  148.             return $this->render(
  149.                 'facebook_login.html.twig',
  150.                 [
  151.                     'facebookPage' => $_ENV['FACEBOOK_APP_CANVAS'],
  152.                     'facebookPageId' => $_ENV['OAUTH_FACEBOOK_ID'],
  153.                 ]
  154.             );
  155.         }
  156.         $token $jwt->create($user);
  157.         $this->userLoginService->callLoginRoutines($user$request);
  158.         return $this->render(
  159.             'base.html.twig',
  160.             [
  161.                 'domain' => $request->server->get('MAIN_DOMAIN'),
  162.                 'queryParams' => http_build_query($request->query->all()),
  163.                 'facebookPageId' => $_ENV['OAUTH_FACEBOOK_ID'],
  164.                 'userId' => $user->getId(),
  165.                 'facebookId' => $user->getFbUserid(),
  166.                 'token' => $token,
  167.                 'appType' => 'fb'
  168.             ]
  169.         );
  170.     }
  171. }