From 1b7bc49da99567a0ee3b94ddc3c4fbc226519b12 Mon Sep 17 00:00:00 2001 From: Tobias Gross-Vogt <tobias.gross-vogt@tugraz.at> Date: Tue, 21 Feb 2023 12:12:55 +0100 Subject: [PATCH] new custom expression language function 'isNullOrEmpty' --- .../AbstractAuthorizationService.php | 1 + .../StringExpressionFunctionProvider.php | 25 +++++++++++++++++++ src/ExpressionLanguage/ExpressionLanguage.php | 2 ++ 3 files changed, 28 insertions(+) create mode 100644 src/ExpressionLanguage/ExpressionFunctionProviders/StringExpressionFunctionProvider.php diff --git a/src/Authorization/AbstractAuthorizationService.php b/src/Authorization/AbstractAuthorizationService.php index a100ab6..d89171c 100644 --- a/src/Authorization/AbstractAuthorizationService.php +++ b/src/Authorization/AbstractAuthorizationService.php @@ -213,6 +213,7 @@ abstract class AbstractAuthorizationService implements ContextAwareNormalizerInt { $roleExpressions = []; foreach ($entitiesConfigNode as $entityShortName => $entityNode) { + dump($entityNode); $entityClassName = $entityNode[AuthorizationConfigDefinition::ENTITY_CLASS_NAME_CONFIG_NODE]; $attributeNames = []; diff --git a/src/ExpressionLanguage/ExpressionFunctionProviders/StringExpressionFunctionProvider.php b/src/ExpressionLanguage/ExpressionFunctionProviders/StringExpressionFunctionProvider.php new file mode 100644 index 0000000..5865785 --- /dev/null +++ b/src/ExpressionLanguage/ExpressionFunctionProviders/StringExpressionFunctionProvider.php @@ -0,0 +1,25 @@ +<?php + +declare(strict_types=1); + +namespace Dbp\Relay\CoreBundle\ExpressionLanguage\ExpressionFunctionProviders; + +use Dbp\Relay\CoreBundle\Helpers\Tools; +use Symfony\Component\ExpressionLanguage\ExpressionFunction; +use Symfony\Component\ExpressionLanguage\ExpressionFunctionProviderInterface; + +class StringExpressionFunctionProvider implements ExpressionFunctionProviderInterface +{ + public function getFunctions(): array + { + return [ + new ExpressionFunction('isNullOrEmpty', + function (string $varName): string { + return sprintf('isNullOrEmpty(%s)', $varName); + }, + function ($arguments, $varName): bool { + return Tools::isNullOrEmpty($varName); + }), + ]; + } +} diff --git a/src/ExpressionLanguage/ExpressionLanguage.php b/src/ExpressionLanguage/ExpressionLanguage.php index 9c77668..fe72647 100644 --- a/src/ExpressionLanguage/ExpressionLanguage.php +++ b/src/ExpressionLanguage/ExpressionLanguage.php @@ -10,6 +10,7 @@ use Dbp\Relay\CoreBundle\ExpressionLanguage\ExpressionFunctionProviders\MapExpre use Dbp\Relay\CoreBundle\ExpressionLanguage\ExpressionFunctionProviders\PhpArrayExpressionFunctionProvider; use Dbp\Relay\CoreBundle\ExpressionLanguage\ExpressionFunctionProviders\PhpNumericExpressionFunctionProvider; use Dbp\Relay\CoreBundle\ExpressionLanguage\ExpressionFunctionProviders\PhpStringExpressionFunctionProvider; +use Dbp\Relay\CoreBundle\ExpressionLanguage\ExpressionFunctionProviders\StringExpressionFunctionProvider; use Psr\Cache\CacheItemPoolInterface; use Symfony\Component\ExpressionLanguage\ExpressionLanguage as SymfonyExpressionLanguage; @@ -24,6 +25,7 @@ class ExpressionLanguage extends SymfonyExpressionLanguage new PhpNumericExpressionFunctionProvider(), new PhpStringExpressionFunctionProvider(), new ArrayExpressionFunctionProvider(), + new StringExpressionFunctionProvider(), ], $providers); parent::__construct($cache, $providers); -- GitLab