I’m trying to create a custom normalizer, but I cannot access to my current user using API Platform.
When I try to load my Client class, this is empty. I tried to method using the API Platform’s documentation, but the retreived token is empty too.
Do you have any tip to get my current user ? Thanks
JavaScript
x
<?php
namespace AppSerializer;
use AppEntityStock;
use SymfonyComponentRoutingGeneratorUrlGeneratorInterface;
use SymfonyComponentSecurityCoreAuthenticationTokenStorageTokenStorageInterface;
use SymfonyComponentSerializerNormalizerContextAwareNormalizerInterface;
use SymfonyComponentSerializerNormalizerObjectNormalizer;
class StockAttributeNormalizer implements ContextAwareNormalizerInterface
{
private $router;
private $normalizer;
public function __construct(UrlGeneratorInterface $router, ObjectNormalizer $normalizer)
{
$this->router = $router;
$this->normalizer = $normalizer;
}
public function normalize($topic, $format = null, array $context = [])
{
$data = $this->normalizer->normalize($topic, $format, $context);
var_dump($data);
return $data;
}
public function supportsNormalization($data, $format = null, array $context = [])
{
return $data instanceof Stock;
}
}
Advertisement
Answer
Have you tried to inject TokenInterface on your class ?
JavaScript
public function __construct(UrlGeneratorInterface $router, ObjectNormalizer $normalizer, TokenInterface $token)
{
$this->router = $router;
$this->normalizer = $normalizer;
$this->token = $token;
}
Then you can use $token->getUser()
to retrieve your current user.
if you don’t have a user then you don’t use your API with authentication. See https://api-platform.com/docs/core/jwt/