Skip to content
Snippets Groups Projects
Commit 405e0a1f authored by Groß-Vogt, Tobias's avatar Groß-Vogt, Tobias
Browse files

AbstractEntityNormalizer: don't fail with empty config (the case for ApiTestCase)

parent 3c9615e7
Branches
Tags v0.1.75
No related merge requests found
Pipeline #231695 passed
......@@ -5,11 +5,9 @@ declare(strict_types=1);
namespace Dbp\Relay\CoreBundle\Authorization\Serializer;
use Dbp\Relay\CoreBundle\Authorization\AbstractAuthorizationService;
use Dbp\Relay\CoreBundle\Exception\ApiError;
use Dbp\Relay\CoreBundle\Helpers\ApiPlatformHelperFunctions;
use Symfony\Component\Config\Definition\Builder\NodeDefinition;
use Symfony\Component\Config\Definition\Builder\TreeBuilder;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Security\Core\Security;
use Symfony\Component\Serializer\Normalizer\ContextAwareNormalizerInterface;
use Symfony\Component\Serializer\Normalizer\NormalizerAwareInterface;
......@@ -67,6 +65,7 @@ abstract class AbstractEntityNormalizer extends AbstractAuthorizationService imp
protected function __construct(array $entityClassNames)
{
$this->entityClassNames = $entityClassNames;
$this->entityClassNameToAttributeNamesMapping = [];
}
public function setConfig(array $config)
......@@ -77,10 +76,7 @@ abstract class AbstractEntityNormalizer extends AbstractAuthorizationService imp
foreach ($this->entityClassNames as $entityClassName) {
$entityShortName = ApiPlatformHelperFunctions::getShortNameForResource($entityClassName);
$entityNode = $configNode[$entityShortName] ?? null;
if ($entityNode === null) {
throw ApiError::withDetails(Response::HTTP_INTERNAL_SERVER_ERROR, sprintf('attribute access not configured for entity \'%s\'', $entityShortName));
}
if ($entityNode !== null) {
$attributeNames = [];
foreach ($entityNode as $attributeName => $attributeAuthorizationExpression) {
$rightExpressions[self::toAttributeId($entityShortName, $attributeName)] = $attributeAuthorizationExpression;
......@@ -91,6 +87,7 @@ abstract class AbstractEntityNormalizer extends AbstractAuthorizationService imp
self::ATTRIBUTE_NAMES_KEY => $attributeNames,
];
}
}
parent::setConfig(parent::createConfig($rightExpressions));
}
......@@ -109,7 +106,8 @@ abstract class AbstractEntityNormalizer extends AbstractAuthorizationService imp
public function normalize($object, $format = null, array $context = [])
{
$entityClassName = get_class($object);
$mapEntry = $this->entityClassNameToAttributeNamesMapping[$entityClassName];
$mapEntry = $this->entityClassNameToAttributeNamesMapping[$entityClassName] ?? null;
if ($mapEntry !== null) {
$entityShortName = $mapEntry[self::ENTITY_SHORT_NAME_KEY];
foreach ($mapEntry[self::ATTRIBUTE_NAMES_KEY] as $attributeName) {
......@@ -118,6 +116,7 @@ abstract class AbstractEntityNormalizer extends AbstractAuthorizationService imp
$context['groups'][] = $attributeId;
}
}
}
$context[self::getUniqueAlreadyCalledKeyForEntity($entityClassName)] = true;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment