Skip to content

identifier denormalizer does not work anymore with custom needs. #3979

Description

@loic425

API Platform version(s) affected: 2.6.x

Description

This following code inspired by https://gist.github.com/soyuka/c25aa66728439eec56419a5a20295592
does not work anymore with 2.6.0 and 2.6.1.

<?php

declare(strict_types=1);

namespace App\Identifier;

use Monofony\Contracts\Core\Model\User\AppUserInterface;
use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException;
use Symfony\Component\Security\Core\Security;
use Symfony\Component\Serializer\Normalizer\DenormalizerInterface;

final class AppUserIdentifierNormalizer implements DenormalizerInterface
{
    private $security;

    public function __construct(Security $security)
    {
        $this->security = $security;
    }

    /**
     * {@inheritdoc}
     *
     * @psalm-suppress InvalidReturnType
     * @psalm-suppress InvalidReturnStatement
     */
    public function denormalize($data, $type, $format = null, array $context = [])
    {
        $user = $this->security->getUser();

        if (null === $user || !$user instanceof AppUserInterface) {
            throw new AccessDeniedHttpException();
        }

        return (string) $user->getCustomer()->getId();
    }

    /**
     * {@inheritdoc}
     */
    public function supportsDenormalization($data, $type, $format = null)
    {
        return 'me' === $data;
    }
}

How to reproduce

Possible Solution

Additional Context

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Fields

No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions