Submit
Path:
~
/
/
opt
/
alt
/
php55
/
usr
/
share
/
pear
/
Symfony
/
Component
/
Security
/
Core
/
Authorization
/
Voter
/
File Content:
ExpressionVoter.php
<?php /* * This file is part of the Symfony package. * * (c) Fabien Potencier <fabien@symfony.com> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Security\Core\Authorization\Voter; use Symfony\Component\Security\Core\Authentication\Token\TokenInterface; use Symfony\Component\Security\Core\Authentication\AuthenticationTrustResolverInterface; use Symfony\Component\Security\Core\Authorization\ExpressionLanguage; use Symfony\Component\Security\Core\Role\RoleHierarchyInterface; use Symfony\Component\ExpressionLanguage\Expression; use Symfony\Component\HttpFoundation\Request; /** * ExpressionVoter votes based on the evaluation of an expression. * * @author Fabien Potencier <fabien@symfony.com> */ class ExpressionVoter implements VoterInterface { private $expressionLanguage; private $trustResolver; private $roleHierarchy; /** * Constructor. * * @param ExpressionLanguage $expressionLanguage */ public function __construct(ExpressionLanguage $expressionLanguage, AuthenticationTrustResolverInterface $trustResolver, RoleHierarchyInterface $roleHierarchy = null) { $this->expressionLanguage = $expressionLanguage; $this->trustResolver = $trustResolver; $this->roleHierarchy = $roleHierarchy; } /** * {@inheritdoc} */ public function supportsAttribute($attribute) { return $attribute instanceof Expression; } /** * {@inheritdoc} */ public function supportsClass($class) { return true; } /** * {@inheritdoc} */ public function vote(TokenInterface $token, $object, array $attributes) { $result = VoterInterface::ACCESS_ABSTAIN; $variables = null; foreach ($attributes as $attribute) { if (!$this->supportsAttribute($attribute)) { continue; } if (null === $variables) { $variables = $this->getVariables($token, $object); } $result = VoterInterface::ACCESS_DENIED; if ($this->expressionLanguage->evaluate($attribute, $variables)) { return VoterInterface::ACCESS_GRANTED; } } return $result; } private function getVariables(TokenInterface $token, $object) { if (null !== $this->roleHierarchy) { $roles = $this->roleHierarchy->getReachableRoles($token->getRoles()); } else { $roles = $token->getRoles(); } $variables = array( 'token' => $token, 'user' => $token->getUser(), 'object' => $object, 'roles' => array_map(function ($role) { return $role->getRole(); }, $roles), 'trust_resolver' => $this->trustResolver, ); // this is mainly to propose a better experience when the expression is used // in an access control rule, as the developer does not know that it's going // to be handled by this voter if ($object instanceof Request) { $variables['request'] = $object; } return $variables; } }
Edit
Rename
Chmod
Delete
FILE
FOLDER
Name
Size
Permission
Action
AuthenticatedVoter.php
3103 bytes
0644
ExpressionVoter.php
3261 bytes
0644
RoleHierarchyVoter.php
1054 bytes
0644
RoleVoter.php
1769 bytes
0644
VoterInterface.php
1714 bytes
0644
N4ST4R_ID | Naxtarrr