Skip to content

Commit 8bcb9de

Browse files
ovrflofabpot
authored andcommitted
[Security] Typos in Security's ExpressionLanguage
1 parent 9260eaf commit 8bcb9de

File tree

2 files changed

+85
-6
lines changed

2 files changed

+85
-6
lines changed

Authorization/ExpressionLanguage.php

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -31,21 +31,21 @@ protected function registerFunctions()
3131
});
3232

3333
$this->register('is_authenticated', function () {
34-
return '!$trust_resolver->isAnonymous($token)';
34+
return '$token && !$trust_resolver->isAnonymous($token)';
3535
}, function (array $variables) {
36-
return !$variables['trust_resolver']->isAnonymous($variables['token']);
36+
return $variables['token'] && !$variables['trust_resolver']->isAnonymous($variables['token']);
3737
});
3838

3939
$this->register('is_fully_authenticated', function () {
40-
return '!$trust_resolver->isFullFledge($token)';
40+
return '$trust_resolver->isFullFledged($token)';
4141
}, function (array $variables) {
42-
return !$variables['trust_resolver']->isFullFledge($variables['token']);
42+
return $variables['trust_resolver']->isFullFledged($variables['token']);
4343
});
4444

4545
$this->register('is_remember_me', function () {
46-
return '!$trust_resolver->isRememberMe($token)';
46+
return '$trust_resolver->isRememberMe($token)';
4747
}, function (array $variables) {
48-
return !$variables['trust_resolver']->isRememberMe($variables['token']);
48+
return $variables['trust_resolver']->isRememberMe($variables['token']);
4949
});
5050

5151
$this->register('has_role', function ($role) {
Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
<?php
2+
3+
/*
4+
* This file is part of the Symfony package.
5+
*
6+
* (c) Fabien Potencier <[email protected]>
7+
*
8+
* For the full copyright and license information, please view the LICENSE
9+
* file that was distributed with this source code.
10+
*/
11+
12+
namespace Symfony\Component\Security\Core\Tests\Authorization;
13+
14+
use Symfony\Component\Security\Core\Authorization\ExpressionLanguage;
15+
use Symfony\Component\Security\Core\Authentication\AuthenticationTrustResolver;
16+
use Symfony\Component\Security\Core\Authentication\Token\AnonymousToken;
17+
use Symfony\Component\Security\Core\Authentication\Token\RememberMeToken;
18+
use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken;
19+
use Symfony\Component\Security\Core\User\User;
20+
21+
class ExpressionLanguageTest extends \PHPUnit_Framework_TestCase
22+
{
23+
/**
24+
* @dataProvider provider
25+
*/
26+
public function testIsAuthenticated($token, $expression, $result, array $roles = array())
27+
{
28+
$anonymousTokenClass = 'Symfony\\Component\\Security\\Core\\Authentication\\Token\\AnonymousToken';
29+
$rememberMeTokenClass = 'Symfony\\Component\\Security\\Core\\Authentication\\Token\\RememberMeToken';
30+
$expressionLanguage = new ExpressionLanguage();
31+
$trustResolver = new AuthenticationTrustResolver($anonymousTokenClass, $rememberMeTokenClass);
32+
33+
$context = array();
34+
$context['trust_resolver'] = $trustResolver;
35+
$context['token'] = $token;
36+
$context['roles'] = $roles;
37+
38+
$this->assertEquals($result, $expressionLanguage->evaluate($expression, $context));
39+
}
40+
41+
public function provider()
42+
{
43+
$roles = array('ROLE_USER', 'ROLE_ADMIN');
44+
$user = new User('username', 'password', $roles);
45+
46+
$noToken = null;
47+
$anonymousToken = new AnonymousToken('firewall', 'anon.');
48+
$rememberMeToken = new RememberMeToken($user, 'providerkey', 'firewall');
49+
$usernamePasswordToken = new UsernamePasswordToken('username', 'password', 'providerkey', $roles);
50+
51+
return array(
52+
array($noToken, 'is_anonymous()', false),
53+
array($noToken, 'is_authenticated()', false),
54+
array($noToken, 'is_fully_authenticated()', false),
55+
array($noToken, 'is_remember_me()', false),
56+
array($noToken, "has_role('ROLE_USER')", false),
57+
58+
array($anonymousToken, 'is_anonymous()', true),
59+
array($anonymousToken, 'is_authenticated()', false),
60+
array($anonymousToken, 'is_fully_authenticated()', false),
61+
array($anonymousToken, 'is_remember_me()', false),
62+
array($anonymousToken, "has_role('ROLE_USER')", false),
63+
64+
array($rememberMeToken, 'is_anonymous()', false),
65+
array($rememberMeToken, 'is_authenticated()', true),
66+
array($rememberMeToken, 'is_fully_authenticated()', false),
67+
array($rememberMeToken, 'is_remember_me()', true),
68+
array($rememberMeToken, "has_role('ROLE_FOO')", false, $roles),
69+
array($rememberMeToken, "has_role('ROLE_USER')", true, $roles),
70+
71+
array($usernamePasswordToken, 'is_anonymous()', false),
72+
array($usernamePasswordToken, 'is_authenticated()', true),
73+
array($usernamePasswordToken, 'is_fully_authenticated()', true),
74+
array($usernamePasswordToken, 'is_remember_me()', false),
75+
array($usernamePasswordToken, "has_role('ROLE_FOO')", false, $roles),
76+
array($usernamePasswordToken, "has_role('ROLE_USER')", true, $roles),
77+
);
78+
}
79+
}

0 commit comments

Comments
 (0)