Skip to content

Commit 4440c09

Browse files
authored
Merge pull request overblog#697 from teqneers/issues/gh588
Changes setup of expression language functions to fix issue overblog#588
2 parents aeada63 + 026eab1 commit 4440c09

28 files changed

+242
-183
lines changed

src/ExpressionLanguage/ExpressionFunction/DependencyInjection/Parameter.php

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,19 +5,18 @@
55
namespace Overblog\GraphQLBundle\ExpressionLanguage\ExpressionFunction\DependencyInjection;
66

77
use Overblog\GraphQLBundle\ExpressionLanguage\ExpressionFunction;
8-
use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
98

109
final class Parameter extends ExpressionFunction
1110
{
12-
public function __construct(ParameterBagInterface $parameterBag, $name = 'parameter')
11+
public function __construct($name = 'parameter')
1312
{
1413
parent::__construct(
1514
$name,
16-
function (string $value) {
15+
static function (string $value) {
1716
return "\$globalVariable->get('container')->getParameter($value)";
1817
},
19-
function ($arguments, $paramName) use ($parameterBag) {
20-
return $parameterBag->get($paramName);
18+
static function ($arguments, $paramName) {
19+
return $arguments['globalVariable']->get('container')->getParameter($paramName);
2120
}
2221
);
2322
}

src/ExpressionLanguage/ExpressionFunction/DependencyInjection/Service.php

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,19 +5,18 @@
55
namespace Overblog\GraphQLBundle\ExpressionLanguage\ExpressionFunction\DependencyInjection;
66

77
use Overblog\GraphQLBundle\ExpressionLanguage\ExpressionFunction;
8-
use Symfony\Component\DependencyInjection\ContainerInterface;
98

109
final class Service extends ExpressionFunction
1110
{
12-
public function __construct(ContainerInterface $container, $name = 'service')
11+
public function __construct($name = 'service')
1312
{
1413
parent::__construct(
1514
$name,
16-
function (string $serviceId): string {
15+
static function (string $serviceId): string {
1716
return "\$globalVariable->get('container')->get($serviceId)";
1817
},
19-
function ($arguments, $serviceId) use ($container): ?object {
20-
return $container->get($serviceId);
18+
static function ($arguments, $serviceId): ?object {
19+
return $arguments['globalVariable']->get('container')->get($serviceId);
2120
}
2221
);
2322
}

src/ExpressionLanguage/ExpressionFunction/GraphQL/Arguments.php

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,19 +5,18 @@
55
namespace Overblog\GraphQLBundle\ExpressionLanguage\ExpressionFunction\GraphQL;
66

77
use Overblog\GraphQLBundle\ExpressionLanguage\ExpressionFunction;
8-
use Overblog\GraphQLBundle\Transformer\ArgumentsTransformer;
98

109
final class Arguments extends ExpressionFunction
1110
{
12-
public function __construct(ArgumentsTransformer $transformer)
11+
public function __construct()
1312
{
1413
parent::__construct(
1514
'arguments',
16-
function ($mapping, $data) {
15+
static function ($mapping, $data) {
1716
return "\$globalVariable->get('container')->get('overblog_graphql.arguments_transformer')->getArguments($mapping, $data, \$info)";
1817
},
19-
function ($arguments, $mapping, $data) use ($transformer) {
20-
return $transformer->getArguments($mapping, $data, $arguments['info']);
18+
static function ($arguments, $mapping, $data) {
19+
return $arguments['globalVariable']->get('container')->get('overblog_graphql.arguments_transformer')->getArguments($mapping, $data, $arguments['info']);
2120
}
2221
);
2322
}

src/ExpressionLanguage/ExpressionFunction/Security/GetUser.php

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,19 +5,18 @@
55
namespace Overblog\GraphQLBundle\ExpressionLanguage\ExpressionFunction\Security;
66

77
use Overblog\GraphQLBundle\ExpressionLanguage\ExpressionFunction;
8-
use Overblog\GraphQLBundle\Security\Security;
98

109
final class GetUser extends ExpressionFunction
1110
{
12-
public function __construct(Security $security)
11+
public function __construct()
1312
{
1413
parent::__construct(
1514
'getUser',
1615
static function (): string {
1716
return '$globalVariable->get(\'security\')->getUser()';
1817
},
19-
static function () use ($security) {
20-
return $security->getUser();
18+
static function ($arguments) {
19+
return $arguments['globalVariable']->get('security')->getUser();
2120
}
2221
);
2322
}

src/ExpressionLanguage/ExpressionFunction/Security/HasAnyPermission.php

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,19 +5,18 @@
55
namespace Overblog\GraphQLBundle\ExpressionLanguage\ExpressionFunction\Security;
66

77
use Overblog\GraphQLBundle\ExpressionLanguage\ExpressionFunction;
8-
use Overblog\GraphQLBundle\Security\Security;
98

109
final class HasAnyPermission extends ExpressionFunction
1110
{
12-
public function __construct(Security $security)
11+
public function __construct()
1312
{
1413
parent::__construct(
1514
'hasAnyPermission',
1615
static function ($object, $permissions): string {
1716
return \sprintf('$globalVariable->get(\'security\')->hasAnyPermission(%s, %s)', $object, $permissions);
1817
},
19-
function ($_, $object, $permissions) use ($security): bool {
20-
return $security->hasAnyPermission($object, $permissions);
18+
static function ($arguments, $object, $permissions): bool {
19+
return $arguments['globalVariable']->get('security')->hasAnyPermission($object, $permissions);
2120
}
2221
);
2322
}

src/ExpressionLanguage/ExpressionFunction/Security/HasAnyRole.php

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,19 +5,18 @@
55
namespace Overblog\GraphQLBundle\ExpressionLanguage\ExpressionFunction\Security;
66

77
use Overblog\GraphQLBundle\ExpressionLanguage\ExpressionFunction;
8-
use Overblog\GraphQLBundle\Security\Security;
98

109
final class HasAnyRole extends ExpressionFunction
1110
{
12-
public function __construct(Security $security)
11+
public function __construct()
1312
{
1413
parent::__construct(
1514
'hasAnyRole',
1615
static function ($roles): string {
1716
return \sprintf('$globalVariable->get(\'security\')->hasAnyRole(%s)', $roles);
1817
},
19-
static function ($_, $roles) use ($security): bool {
20-
return $security->hasAnyRole($roles);
18+
static function ($arguments, $roles): bool {
19+
return $arguments['globalVariable']->get('security')->hasAnyRole($roles);
2120
}
2221
);
2322
}

src/ExpressionLanguage/ExpressionFunction/Security/HasPermission.php

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,19 +5,18 @@
55
namespace Overblog\GraphQLBundle\ExpressionLanguage\ExpressionFunction\Security;
66

77
use Overblog\GraphQLBundle\ExpressionLanguage\ExpressionFunction;
8-
use Overblog\GraphQLBundle\Security\Security;
98

109
final class HasPermission extends ExpressionFunction
1110
{
12-
public function __construct(Security $security)
11+
public function __construct()
1312
{
1413
parent::__construct(
1514
'hasPermission',
1615
static function ($object, $permission): string {
1716
return \sprintf('$globalVariable->get(\'security\')->hasPermission(%s, %s)', $object, $permission);
1817
},
19-
static function ($_, $object, $permission) use ($security): bool {
20-
return $security->hasPermission($object, $permission);
18+
static function ($arguments, $object, $permission): bool {
19+
return $arguments['globalVariable']->get('security')->hasPermission($object, $permission);
2120
}
2221
);
2322
}

src/ExpressionLanguage/ExpressionFunction/Security/HasRole.php

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,19 +5,18 @@
55
namespace Overblog\GraphQLBundle\ExpressionLanguage\ExpressionFunction\Security;
66

77
use Overblog\GraphQLBundle\ExpressionLanguage\ExpressionFunction;
8-
use Overblog\GraphQLBundle\Security\Security;
98

109
final class HasRole extends ExpressionFunction
1110
{
12-
public function __construct(Security $security)
11+
public function __construct()
1312
{
1413
parent::__construct(
1514
'hasRole',
1615
static function ($role): string {
1716
return \sprintf('$globalVariable->get(\'security\')->hasRole(%s)', $role);
1817
},
19-
static function ($_, $role) use ($security): bool {
20-
return $security->hasRole($role);
18+
static function ($arguments, $role): bool {
19+
return $arguments['globalVariable']->get('security')->hasRole($role);
2120
}
2221
);
2322
}

src/ExpressionLanguage/ExpressionFunction/Security/IsAnonymous.php

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,19 +5,18 @@
55
namespace Overblog\GraphQLBundle\ExpressionLanguage\ExpressionFunction\Security;
66

77
use Overblog\GraphQLBundle\ExpressionLanguage\ExpressionFunction;
8-
use Overblog\GraphQLBundle\Security\Security;
98

109
final class IsAnonymous extends ExpressionFunction
1110
{
12-
public function __construct(Security $security)
11+
public function __construct()
1312
{
1413
parent::__construct(
1514
'isAnonymous',
1615
static function (): string {
1716
return '$globalVariable->get(\'security\')->isAnonymous()';
1817
},
19-
static function () use ($security): bool {
20-
return $security->isAnonymous();
18+
static function ($arguments): bool {
19+
return $arguments['globalVariable']->get('security')->isAnonymous();
2120
}
2221
);
2322
}

src/ExpressionLanguage/ExpressionFunction/Security/IsAuthenticated.php

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,19 +5,18 @@
55
namespace Overblog\GraphQLBundle\ExpressionLanguage\ExpressionFunction\Security;
66

77
use Overblog\GraphQLBundle\ExpressionLanguage\ExpressionFunction;
8-
use Overblog\GraphQLBundle\Security\Security;
98

109
final class IsAuthenticated extends ExpressionFunction
1110
{
12-
public function __construct(Security $security)
11+
public function __construct()
1312
{
1413
parent::__construct(
1514
'isAuthenticated',
1615
static function (): string {
1716
return '$globalVariable->get(\'security\')->isAuthenticated()';
1817
},
19-
static function () use ($security): bool {
20-
return $security->isAuthenticated();
18+
static function ($arguments): bool {
19+
return $arguments['globalVariable']->get('security')->isAuthenticated();
2120
}
2221
);
2322
}

src/ExpressionLanguage/ExpressionFunction/Security/IsFullyAuthenticated.php

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,19 +5,18 @@
55
namespace Overblog\GraphQLBundle\ExpressionLanguage\ExpressionFunction\Security;
66

77
use Overblog\GraphQLBundle\ExpressionLanguage\ExpressionFunction;
8-
use Overblog\GraphQLBundle\Security\Security;
98

109
final class IsFullyAuthenticated extends ExpressionFunction
1110
{
12-
public function __construct(Security $security)
11+
public function __construct()
1312
{
1413
parent::__construct(
1514
'isFullyAuthenticated',
1615
static function (): string {
1716
return '$globalVariable->get(\'security\')->isFullyAuthenticated()';
1817
},
19-
static function () use ($security): bool {
20-
return $security->isFullyAuthenticated();
18+
static function ($arguments): bool {
19+
return $arguments['globalVariable']->get('security')->isFullyAuthenticated();
2120
}
2221
);
2322
}

src/ExpressionLanguage/ExpressionFunction/Security/IsGranted.php

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,19 +5,18 @@
55
namespace Overblog\GraphQLBundle\ExpressionLanguage\ExpressionFunction\Security;
66

77
use Overblog\GraphQLBundle\ExpressionLanguage\ExpressionFunction;
8-
use Overblog\GraphQLBundle\Security\Security;
98

109
final class IsGranted extends ExpressionFunction
1110
{
12-
public function __construct(Security $security)
11+
public function __construct()
1312
{
1413
parent::__construct(
1514
'isGranted',
1615
static function ($attributes, $object = 'null'): string {
1716
return \sprintf('$globalVariable->get(\'security\')->isGranted(%s, %s)', $attributes, $object);
1817
},
19-
static function ($_, $attributes, $object = null) use ($security): bool {
20-
return $security->isGranted($attributes, $object);
18+
static function ($arguments, $attributes, $object = null): bool {
19+
return $arguments['globalVariable']->get('security')->isGranted($attributes, $object);
2120
}
2221
);
2322
}

src/ExpressionLanguage/ExpressionFunction/Security/IsRememberMe.php

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,19 +5,18 @@
55
namespace Overblog\GraphQLBundle\ExpressionLanguage\ExpressionFunction\Security;
66

77
use Overblog\GraphQLBundle\ExpressionLanguage\ExpressionFunction;
8-
use Overblog\GraphQLBundle\Security\Security;
98

109
final class IsRememberMe extends ExpressionFunction
1110
{
12-
public function __construct(Security $security)
11+
public function __construct()
1312
{
1413
parent::__construct(
1514
'isRememberMe',
1615
static function (): string {
1716
return '$globalVariable->get(\'security\')->isRememberMe()';
1817
},
19-
static function () use ($security): bool {
20-
return $security->isRememberMe();
18+
static function ($arguments): bool {
19+
return $arguments['globalVariable']->get('security')->isRememberMe();
2120
}
2221
);
2322
}

src/Validator/Constraints/ExpressionValidator.php

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
namespace Overblog\GraphQLBundle\Validator\Constraints;
66

7+
use Overblog\GraphQLBundle\Definition\GlobalVariables;
78
use Overblog\GraphQLBundle\Validator\ValidationNode;
89
use Symfony\Component\ExpressionLanguage\ExpressionLanguage;
910
use Symfony\Component\HttpKernel\Kernel;
@@ -15,9 +16,12 @@ class ExpressionValidator extends \Symfony\Component\Validator\Constraints\Expre
1516
{
1617
private $expressionLanguage;
1718

18-
public function __construct(ExpressionLanguage $expressionLanguage)
19+
private $globalVariables;
20+
21+
public function __construct(ExpressionLanguage $expressionLanguage, GlobalVariables $globalVariables)
1922
{
2023
$this->expressionLanguage = $expressionLanguage;
24+
$this->globalVariables = $globalVariables;
2125
if (Kernel::VERSION_ID >= 40400) {
2226
parent::__construct($expressionLanguage);
2327
} else {
@@ -36,6 +40,7 @@ public function validate($value, Constraint $constraint): void
3640

3741
$variables = $constraint->values;
3842
$variables['value'] = $value;
43+
$variables['globalVariable'] = $this->globalVariables;
3944

4045
$object = $this->context->getObject();
4146

@@ -50,9 +55,9 @@ public function validate($value, Constraint $constraint): void
5055

5156
if (!$this->expressionLanguage->evaluate($constraint->expression, $variables)) {
5257
$this->context->buildViolation($constraint->message)
53-
->setParameter('{{ value }}', $this->formatValue($value, self::OBJECT_TO_STRING))
54-
->setCode(Expression::EXPRESSION_FAILED_ERROR)
55-
->addViolation();
58+
->setParameter('{{ value }}', $this->formatValue($value, self::OBJECT_TO_STRING))
59+
->setCode(Expression::EXPRESSION_FAILED_ERROR)
60+
->addViolation();
5661
}
5762
}
5863
}

tests/ExpressionLanguage/ExpressionFunction/DependencyInjection/ParameterTest.php

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,18 +7,14 @@
77
use Overblog\GraphQLBundle\Definition\GlobalVariables;
88
use Overblog\GraphQLBundle\ExpressionLanguage\ExpressionFunction\DependencyInjection\Parameter;
99
use Overblog\GraphQLBundle\Tests\ExpressionLanguage\TestCase;
10-
use Symfony\Component\DependencyInjection\ParameterBag\ParameterBag;
1110

1211
class ParameterTest extends TestCase
1312
{
1413
protected function getFunctions()
1514
{
16-
$parameterBag = new ParameterBag();
17-
$parameterBag->set('test', 5);
18-
1915
return [
20-
new Parameter($parameterBag),
21-
new Parameter($parameterBag, 'param'),
16+
new Parameter(),
17+
new Parameter('param'),
2218
];
2319
}
2420

@@ -39,7 +35,11 @@ public function testParameterCompilation($name): void
3935
*/
4036
public function testParameterEvaluation($name): void
4137
{
42-
$this->assertSame(5, $this->expressionLanguage->evaluate($name.'("test")'));
38+
$globalVariable = new GlobalVariables(['container' => $this->getDIContainerMock([], ['test' => 5])]);
39+
$this->assertSame(
40+
5,
41+
$this->expressionLanguage->evaluate($name.'("test")', ['globalVariable' => $globalVariable])
42+
);
4343
}
4444

4545
public function getNames()

0 commit comments

Comments
 (0)