denyAccessUnlessGranted('IS_AUTHENTICATED_FULLY'); $user = $this->userService->getUserByIdentifier($this->getUser()->getUserIdentifier()); $domain = $request->getSchemeAndHttpHost(); $topic = sprintf('%s/notifications/user/%d', $domain, $user->getId()); // Generate JWT token for Mercure subscription $secret = $this->getParameter('mercure_secret'); $config = Configuration::forSymmetricSigner( new Sha256(), InMemory::plainText($secret) ); $token = $config->builder() ->withClaim('mercure', [ 'subscribe' => [$topic] ]) ->getToken($config->signer(), $config->signingKey()); return new JsonResponse([ 'token' => $token->toString(), 'topic' => $topic, 'userId' => $user->getId(), ]); } }