summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFabien Potencier <fabien.potencier@gmail.com>2013-11-21 19:46:42 +0100
committerFabien Potencier <fabien.potencier@gmail.com>2013-11-21 19:46:42 +0100
commita257365dfce509a894ac14c5f814e3000c250598 (patch)
tree26786a669478205fef0574cf8e27d0e83c9585b3
parent0301d982093cb5590fafa2d6f253146278ae2687 (diff)
downloadsymfony-security-origin/expression-voter-optim.zip
symfony-security-origin/expression-voter-optim.tar.gz
symfony-security-origin/expression-voter-optim.tar.bz2
[Security] optimized ExpressionVoterorigin/expression-voter-optim
-rw-r--r--Core/Authorization/Voter/ExpressionVoter.php31
1 files changed, 18 insertions, 13 deletions
diff --git a/Core/Authorization/Voter/ExpressionVoter.php b/Core/Authorization/Voter/ExpressionVoter.php
index 50c8d5c..690bd87 100644
--- a/Core/Authorization/Voter/ExpressionVoter.php
+++ b/Core/Authorization/Voter/ExpressionVoter.php
@@ -62,6 +62,23 @@ class ExpressionVoter implements VoterInterface
*/
public function vote(TokenInterface $token, $object, array $attributes)
{
+ $result = VoterInterface::ACCESS_ABSTAIN;
+ foreach ($attributes as $attribute) {
+ if (!$this->supportsAttribute($attribute)) {
+ continue;
+ }
+
+ $result = VoterInterface::ACCESS_DENIED;
+ if ($this->expressionLanguage->evaluate($attribute, $this->getVariables())) {
+ return VoterInterface::ACCESS_GRANTED;
+ }
+ }
+
+ return $result;
+ }
+
+ private function getVariables(TokenInterface $token, $object)
+ {
if (null !== $this->roleHierarchy) {
$roles = $this->roleHierarchy->getReachableRoles($token->getRoles());
} else {
@@ -83,18 +100,6 @@ class ExpressionVoter implements VoterInterface
$variables['request'] = $object;
}
- $result = VoterInterface::ACCESS_ABSTAIN;
- foreach ($attributes as $attribute) {
- if (!$this->supportsAttribute($attribute)) {
- continue;
- }
-
- $result = VoterInterface::ACCESS_DENIED;
- if ($this->expressionLanguage->evaluate($attribute, $variables)) {
- return VoterInterface::ACCESS_GRANTED;
- }
- }
-
- return $result;
+ return $variables;
}
}