protected function registerFunctions() { parent::registerFunctions(); $this->register('is_anonymous', function () { return '$trust_resolver->isAnonymous($token)'; }, function (array $variables) { return $variables['trust_resolver']->isAnonymous($variables['token']); }); $this->register('is_authenticated', function () { return '$token && !$trust_resolver->isAnonymous($token)'; }, function (array $variables) { return $variables['token'] && !$variables['trust_resolver']->isAnonymous($variables['token']); }); $this->register('is_fully_authenticated', function () { return '$trust_resolver->isFullFledged($token)'; }, function (array $variables) { return $variables['trust_resolver']->isFullFledged($variables['token']); }); $this->register('is_remember_me', function () { return '$trust_resolver->isRememberMe($token)'; }, function (array $variables) { return $variables['trust_resolver']->isRememberMe($variables['token']); }); $this->register('has_role', function ($role) { return sprintf('in_array(%s, $roles)', $role); }, function (array $variables, $role) { return in_array($role, $variables['roles']); }); $this->register('is_granted', function ($attributes, $object = 'null') { return sprintf('$security_context->isGranted(%s, %s)', $attributes, $object); }, function (array $variables, $attributes, $object = null) { return $variables['security_context']->isGranted($attributes, $object); }); }
protected function registerFunctions() { parent::registerFunctions(); $this->register('is_anonymous', function () { return '$trust_resolver->isAnonymous($token)'; }, function (array $variables) { return $variables['trust_resolver']->isAnonymous($variables['token']); }); $this->register('is_authenticated', function () { return '$token && !$trust_resolver->isAnonymous($token)'; }, function (array $variables) { return $variables['token'] && !$variables['trust_resolver']->isAnonymous($variables['token']); }); $this->register('is_fully_authenticated', function () { return '$trust_resolver->isFullFledged($token)'; }, function (array $variables) { return $variables['trust_resolver']->isFullFledged($variables['token']); }); $this->register('is_remember_me', function () { return '$trust_resolver->isRememberMe($token)'; }, function (array $variables) { return $variables['trust_resolver']->isRememberMe($variables['token']); }); $this->register('has_role', function ($role) { return sprintf('in_array(%s, $roles)', $role); }, function (array $variables, $role) { return in_array($role, $variables['roles']); }); }
protected function registerFunctions() { parent::registerFunctions(); // Test expression which always returns the opposite of the value we pass to it $this->register('hasAccessIfTrue', function ($arg) { return sprintf('return !%s', $arg); }, function (array $variables, $value) { return !$value; }); }
protected function registerFunctions() { parent::registerFunctions(); $this->register('lowercase', function ($str) { return sprintf('(is_string(%1$s) ? strtolower(%1$s) : %1$s)', $str); }, function ($arguments, $str) { if (!is_string($str)) { return $str; } return strtolower($str); }); }
/** * {@inheritdoc} */ protected function registerFunctions() { parent::registerFunctions(); $this->register('service', function ($arg) { return sprintf('$this->get(%s)', $arg); }, function (array $variables, $value) { return $variables['container']->get($value); }); $this->register('parameter', function ($arg) { return sprintf('$this->getParameter(%s)', $arg); }, function (array $variables, $value) { return $variables['container']->getParameter($value); }); }
protected function registerFunctions() { parent::registerFunctions(); $this->register('service', function ($id) { return sprintf('$this->container->get(%s)', $id); }, function (array $variables, $id) { return $variables['container']->get($id); }); $this->register('parameter', function ($name) { return sprintf('$this->container->getParameter(%s)', $name); }, function (array $variables, $name) { return $variables['container']->getParameter($name); }); $this->register('attribute', function ($args) { return sprintf('$this->request->attributes->get(%s)', $args); }, function (array $variables, $path, $default = null, $deep = false) { return $variables['request']->attributes->get($path, $default, $deep); }); $this->register('request', function ($args) { return sprintf('$this->request->request->get(%s)', $args); }, function (array $variables, $path, $default = null, $deep = false) { return $variables['request']->request->get($path, $default, $deep); }); $this->register('query', function ($args) { return sprintf('$this->request->query->get(%s)', $args); }, function (array $variables, $path, $default = null, $deep = false) { return $variables['request']->query->get($path, $default, $deep); }); $this->register('server', function ($args) { return sprintf('$this->request->server->get(%s)', $args); }, function (array $variables, $path, $default = null, $deep = false) { return $variables['request']->server->get($path, $default, $deep); }); $this->register('file', function ($args) { return sprintf('$this->request->files->get(%s)', $args); }, function (array $variables, $path, $default = null, $deep = false) { return $variables['request']->files->get($path, $default, $deep); }); $this->register('cookie', function ($args) { return sprintf('$this->request->cookies->get(%s)', $args); }, function (array $variables, $path, $default = null, $deep = false) { return $variables['request']->cookies->get($path, $default, $deep); }); $this->register('header', function ($args) { return sprintf('$this->request->headers->get(%s)', $args); }, function (array $variables, $path, $default = null, $deep = false) { return $variables['request']->headers->get($path, $default, $deep); }); }
protected function registerFunctions() { parent::registerFunctions(); $this->register('service', function ($arg) { return sprintf('$this->get(%s)', $arg); }, function (array $variables, $value) { return $variables['container']->get($value); }); $this->register('parameter', function ($arg) { return sprintf('$this->getParameter(%s)', $arg); }, function (array $variables, $value) { return $variables['container']->getParameter($value); }); $this->register('is_granted', function ($arg) { return sprintf('call_user_func_array(array($this->get(security.context), isGranted), %s)', $arg); }, function (array $variables, $value) { return call_user_func_array(array($variables['container']->get('security.context'), 'isGranted'), $value); }); }
protected function registerFunctions() { parent::registerFunctions(); $this->register('list', function ($arg) { return sprintf('%s::get()', $arg); }, function (array $variables, $value) { return \DataList::create($value); }); $this->register('instanceof', function ($arg0, $arg1) { return sprintf('%s instanceof %s', $arg0, $arg1); }, function (array $variables, $arg0, $arg1) { return $arg0 instanceof $arg1; }); $this->register('key_exists', function ($arg0, $arg1) { return sprintf('array_key_exists(%s, %s)', $arg0, $arg1); }, function (array $variables, $arg0, $arg1) { return array_key_exists($arg0, $arg1); }); }
protected function registerFunctions() { parent::registerFunctions(); $this->register('service', function ($arg) { return sprintf('$this->get(%s)', $arg); }, function (array $variables, $value) { return $variables['container']->get($value); }); $this->register('parameter', function ($arg) { return sprintf('$this->getParameter(%s)', $arg); }, function (array $variables, $value) { return $variables['container']->getParameter($value); }); $this->register('is_granted', function ($attribute, $object = null) { return sprintf('call_user_func_array(array($this->get(security.authorization_checker), isGranted), array(%s, %s))', $attribute, $object); }, function (array $variables, $attribute, $object = null) { return call_user_func_array(array($variables['container']->get('security.authorization_checker'), 'isGranted'), [$attribute, $object]); }); }
/** * (non-PHPdoc) * * @see \Symfony\Component\ExpressionLanguage\ExpressionLanguage::registerFunctions() */ protected function registerFunctions() { parent::registerFunctions(); $this->register("user_can", function ($permission) { return sprintf('$groupSecurityChecker->userCan($group, %s)', $permission); }, function (array $variables, $permission) { return $variables["groupSecurityChecker"]->userCan($variables["group"], $permission); }); $this->register("user_cannot", function ($permission) { return sprintf('!$groupSecurityChecker->userCan($group, %s)', $permission); }, function (array $variables, $permission) { return !$variables["groupSecurityChecker"]->userCan($variables["group"], $permission); }); $this->register("group_is", function ($status) { return sprintf('$groupSecurityChecker->groupIs($group, %s)', $status); }, function (array $variables, $status) { return $variables["groupSecurityChecker"]->groupIs($variables["group"], $status); }); $this->register("group_is_not", function ($status) { return sprintf('!$groupSecurityChecker->groupIs($group, %s)', $status); }, function (array $variables, $status) { return !$variables["groupSecurityChecker"]->groupIs($variables["group"], $status); }); }
protected function registerFunctions() { parent::registerFunctions(); $this->register('isAnonymous', function () { return '!$user->isLoggedIn()'; }, function (array $variables) { return !$variables['user']->isLoggedIn(); }); $this->register('isAuthenticated', function () { return '$user->isLoggedIn()'; }, function (array $variables) { return $variables['user']->isLoggedIn(); }); $this->register('hasRole', function ($role) { return sprintf('in_array(%s, $roles)', $role); }, function (array $variables, $role) { return in_array($role, $variables['roles']); }); $this->register('hasPermission', function ($object, $attributes) { return sprintf('$securityContext && $securityContext->isGranted(%s, %s)', $attributes, $object); }, function (array $variables, $object, $attributes) { return $variables['securityContext'] && $variables['securityContext']->isGranted($attributes, $object); }); }
/** * Register functions * * @return void */ protected function registerFunctions() { parent::registerFunctions(); $functions = ['call' => function (array $values, $function) { $args = array_slice(func_get_args(), 2); if (array_key_exists($function, $this->functions)) { array_unshift($args, $values); $function = $this->functions[$function]['evaluator']; } return call_user_func_array($function, $args); }, 'isset' => function (array $values, $var) { return $values[self::VARIABLES_KEY]->has($var); }, 'empty' => function (array $values, $var) { return !$values[self::VARIABLES_KEY]->has($var) || !$values[self::VARIABLES_KEY]->get($var); }, 'get' => function (array $values, $var) { return $values[self::VARIABLES_KEY]->get($var); }, 'set' => function (array $values, $var, $value) { $values[self::VARIABLES_KEY]->set($var, $value); return $value; }, 'confirm' => function (array $values, $question) { return $this->ask($values[self::VARIABLES_KEY], new ConfirmationQuestion("<question>{$question}</question> [y] ")); }, 'answer' => function (array $values, $question) { return $this->ask($values[self::VARIABLES_KEY], new Question("<question>{$question}</question> ")); }, 'choose' => function (array $values, $question) { return $this->ask($values[self::VARIABLES_KEY], new Question("<question>{$question}</question> ")); }, 'replace' => function (array $values, $search, $replace, $subject, $regex = false) { $values[self::VARIABLES_KEY]->console->output('<warning>Expression language function "replace" is deprecated ' . 'and will be removed in 1.6.0 - use preg_replace or str_replace</warning>'); if ($regex) { return preg_replace($search, $replace, $subject); } else { return str_replace($search, $replace, $subject); } }]; foreach ($functions as $name => $function) { $this->register($name, function () { }, $function); } }
protected function registerFunctions() { parent::registerFunctions(); // do not forget to also register core functions }