8000 Merge branch '2.8' · symfony/symfony@75cfef5 · GitHub
[go: up one dir, main page]

Skip to content

Commit 75cfef5

Browse files
Merge branch '2.8'
* 2.8: [travis] start hhvm first [DX] [Security] Renamed Token#getKey() to getSecret() [Validator] always evaluate binary format when changed Conflicts: .travis.yml src/Symfony/Component/Security/Http/composer.json
2 parents 9d67841 + 564c8e1 commit 75cfef5

30 files changed

+342
-112
lines changed

.travis.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ addons:
99

1010
matrix:
1111
include:
12+
- php: hhvm
1213
- php: 5.5.9
1314
- php: 5.5
1415
- php: 5.6
@@ -17,7 +18,6 @@ matrix:
1718
- php: 5.6
1819
env: deps=2.8
1920
- php: nightly
20-
- php: hhvm
2121
allow_failures:
2222
- php: nightly
2323
fast_finish: true

UPGRADE-3.0.md

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -599,6 +599,86 @@ UPGRADE FROM 2.x to 3.0
599599

600600
* The `Resources/` directory was moved to `Core/Resources/`
601601

602+
* The `key` settings of `anonymous` and `remember_me` are renamed to `secret`.
603+
604+
Before:
605+
606+
```yaml
607+
security:
608+
# ...
609+
firewalls:
610+
default:
611+
# ...
612+
anonymous: { key: "%secret%" }
613+
remember_me:
614+
key: "%secret%"
615+
```
616+
617+
```xml
618+
<!-- ... -->
619+
<config>
620+
<!-- ... -->
621+
622+
<firewall>
623+
<!-- ... -->
624+
625+
<anonymous key="%secret%"/>
626+
<remember-me key="%secret%"/>
627+
</firewall>
628+
</config>
629+
```
630+
631+
```php
632+
// ...
633+
$container->loadFromExtension('security', array(
634+
// ...
635+
'firewalls' => array(
636+
// ...
637+
'anonymous' => array('key' => '%secret%'),
638+
'remember_me' => array('key' => '%secret%'),
639+
),
640+
));
641+
```
642+
643+
After:
644+
645+
```yaml
646+
security:
647+
# ...
648+
firewalls:
649+
default:
650+
# ...
651+
anonymous: { secret: "%secret%" }
652+
remember_me:
653+
secret: "%secret%"
654+
```
655+
656+
```xml
657+
<!-- ... -->
658+
<config>
659+
<!-- ... -->
660+
661+
<firewall>
662+
<!-- ... -->
663+
664+
<anonymous secret="%secret%"/>
665+
<remember-me secret="%secret%"/>
666+
</firewall>
667+
</config>
668+
```
669+
670+
```php
671+
// ...
672+
$container->loadFromExtension('security', array(
673+
// ...
674+
'firewalls' => array(
675+
// ...
676+
'anonymous' => array('secret' => '%secret%'),
677+
'remember_me' => array('secret' => '%secret%'),
678+
),
679+
));
680+
```
681+
602682
### Translator
603683

604684
* The `Translator::setFallbackLocale()` method has been removed in favor of

src/Symfony/Bundle/SecurityBundle/CHANGELOG.md

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,18 @@
11
CHANGELOG
22
=========
33

4+
2.8.0
5+
-----
6+
7+
* deprecated the `key` setting of `anonymous` and `remember_me` in favor of the
8+
`secret` setting.
9+
410
2.6.0
511
-----
612

713
* Added the possibility to override the default success/failure handler
814
to get the provider key and the options injected
9-
* Deprecated the `security.context` service for the `security.token_storage` and
15+
* Deprecated the `security.context` service for the `security.token_storage` and
1016
`security.authorization_checker` services.
1117

1218
2.4.0

src/Symfony/Bundle/SecurityBundle/DependencyInjection/MainConfiguration.php

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -285,8 +285,22 @@ private function addFirewallsSection(ArrayNodeDefinition $rootNode, array $facto
285285
->end()
286286
->arrayNode('anonymous')
287287
->canBeUnset()
288+
->beforeNormalization()
289+
->ifTrue(function ($v) { return isset($v['key']); })
290+
->then(function ($v) {
291+
if (isset($v['secret'])) {
292+
throw new \LogicException('Cannot set both key and secret options for security.firewall.anonymous, use only secret instead.');
293+
}
294+
295+
@trigger_error('security.firewall.anonymous.key is deprecated since version 2.8 and will be removed in 3.0. Use security.firewall.anonymous.secret instead.', E_USER_DEPRECATED);
296+
297+
$v['secret'] = $v['key'];
298+
299+
unset($v['key']);
300+
})
301+
->end()
288302
->children()
289-
->scalarNode('key')->defaultValue(uniqid())->end()
303+
->scalarNode('secret')->defaultValue(uniqid())->end()
290304
->end()
291305
->end()
292306
->arrayNode('switch_user')

src/Symfony/Bundle/SecurityBundle/DependencyInjection/Security/Factory/RememberMeFactory.php

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ public function create(ContainerBuilder $container, $id, $config, $userProvider,
3535
$authProviderId = 'security.authentication.provider.rememberme.'.$id;
3636
$container
3737
->setDefinition($authProviderId, new DefinitionDecorator('security.authentication.provider.rememberme'))
38-
->addArgument($config['key'])
38+
->addArgument($config['secret'])
3939
->addArgument($id)
4040
;
4141

@@ -56,7 +56,7 @@ public function create(ContainerBuilder $container, $id, $config, $userProvider,
5656
}
5757

5858
$rememberMeServices = $container->setDefinition($rememberMeServicesId, new DefinitionDecorator($templateId));
59-
$rememberMeServices->replaceArgument(1, $config['key']);
59+
$rememberMeServices->replaceArgument(1, $config['secret']);
6060
$rememberMeServices->replaceArgument(2, $id);
6161

6262
if (isset($config['token_provider'])) {
@@ -120,10 +120,25 @@ public function getKey()
120120
public function addConfiguration(NodeDefinition $node)
121121
{
122122
$node->fixXmlConfig('user_provider');
123-
$builder = $node->children();
123+
$builder = $node
124+
->beforeNormalization()
125+
->ifTrue(function ($v) { return isset($v['key']); })
126+
->then(function ($v) {
127+
if (isset($v['secret'])) {
128+
throw new \LogicException('Cannot set both key and secret options for remember_me, use only secret instead.');
129+
}
130+
131+
@trigger_error('remember_me.key is deprecated since version 2.8 and will be removed in 3.0. Use remember_me.secret instead.', E_USER_DEPRECATED);
132+
133+
$v['secret'] = $v['key'];
134+
135+
unset($v['key']);
136+
})
137+
->end()
138+
->children();
124139

125140
$builder
126-
->scalarNode('key')->isRequired()->cannotBeEmpty()->end()
141+
->scalarNode('secret')->isRequired()->cannotBeEmpty()->end()
127142
->scalarNode('token_provider')->end()
128143
->arrayNode('user_providers')
129144
->beforeNormalization()

src/Symfony/Bundle/SecurityBundle/DependencyInjection/SecurityExtension.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -410,15 +410,15 @@ private function createAuthenticationListeners($container, $id, $firewall, &$aut
410410
$listenerId = 'security.authentication.listener.anonymous.'.$id;
411411
$container
412412
->setDefinition($listenerId, new DefinitionDecorator('security.authentication.listener.anonymous'))
413-
->replaceArgument(1, $firewall['anonymous']['key'])
413+
->replaceArgument(1, $firewall['anonymous']['secret'])
414414
;
415415

416416
$listeners[] = new Reference($listenerId);
417417

418418
$providerId = 'security.authentication.provider.anonymous.'.$id;
419419
$container
420420
->setDefinition($providerId, new DefinitionDecorator('security.authentication.provider.anonymous'))
421-
->replaceArgument(0, $firewall['anonymous']['key'])
421+
->replaceArgument(0, $firewall['anonymous']['secret'])
422422
;
423423

424424
$authenticationProviders[] = $providerId;

src/Symfony/Bundle/SecurityBundle/Tests/DependencyInjection/Fixtures/php/container1.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@
7171
'x509' => true,
7272
'remote_user' => true,
7373
'logout' => true,
74-
'remember_me' => array('key' => 'TheKey'),
74+
'remember_me' => array('secret' => 'TheSecret'),
7575
),
7676
'host' => array(
7777
'pattern' => '/test',

src/Symfony/Bundle/SecurityBundle/Tests/DependencyInjection/Fixtures/php/remember_me_options.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
<?php
2+
23
$container->loadFromExtension('security', array(
34
'providers' => array(
45
'default' => array('id' => 'foo'),
@@ -8,7 +9,7 @@
89
'main' => array(
910
'form_login' => true,
1011
'remember_me' => array(
11-
'key' => 'TheyKey',
12+
'secret' => 'TheSecret',
1213
'catch_exceptions' => false,
1314
'token_provider' => 'token_provider_id',
1415
),

src/Symfony/Bundle/SecurityBundle/Tests/DependencyInjection/Fixtures/xml/container1.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@
5656
<x509 />
5757
<remote-user />
5858
<logout />
59-
<remember-me key="TheyKey"/>
59+
<remember-me secret="TheSecret"/>
6060
</firewall>
6161

6262
<firewall name="host" pattern="/test" host="foo\.example\.org" methods="GET,POST">

src/Symfony/Bundle/SecurityBundle/Tests/DependencyInjection/Fixtures/xml/remember_me_options.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
</sec:providers>
1212
<sec:firewall name="main">
1313
<sec:form-login/>
14-
<sec:remember-me key="TheKey" catch-exceptions="false" token-provider="token_provider_id" />
14+
<sec:remember-me secret="TheSecret" catch-exceptions="false" token-provider="token_provider_id" />
1515
</sec:firewall>
1616
</sec:config>
1717

src/Symfony/Bundle/SecurityBundle/Tests/DependencyInjection/Fixtures/yml/container1.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ security:
5555
remote_user: true
5656
logout: true
5757
remember_me:
58-
key: TheKey
58+
secret: TheSecret
5959
host:
6060
pattern: /test
6161
host: foo\.example\.org

src/Symfony/Bundle/SecurityBundle/Tests/DependencyInjection/Fixtures/yml/remember_me_options.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,6 @@ security:
77
main:
88
form_login: true
99
remember_me:
10-
key: TheKey
10+
secret: TheSecret
1111
catch_exceptions: false
1212
token_provider: token_provider_id

src/Symfony/Component/Security/CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,12 @@
11
CHANGELOG
22
=========
33

4+
2.8.0
5+
-----
6+
7+
* deprecated `getKey()` of the `AnonymousToken`, `RememberMeToken` and `AbstractRememberMeServices` classes
8+
in favor of `getSecret()`.
9+
410
2.7.0
511
-----
612

src/Symfony/Component/Security/Core/Authentication/Provider/AnonymousAuthenticationProvider.php

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,16 +22,22 @@
2222
*/
2323
class AnonymousAuthenticationProvider implements AuthenticationProviderInterface
2424
{
25-
private $key;
25+
/**
26+
* Used to determine if the token is created by the application
27+
* instead of a malicious client.
28+
*
29+
* @var string
30+
*/
31+
private $secret;
2632

2733
/**
2834
* Constructor.
2935
*
30-
* @param string $key The key shared with the authentication token
36+
* @param string $secret The secret shared with the AnonymousToken
3137
*/
32-
public function __construct($key)
38+
public function __construct($secret)
3339
{
34-
$this->key = $key;
40+
$this->secret = $secret;
3541
}
3642

3743
/**
@@ -43,7 +49,7 @@ public function authenticate(TokenInterface $token)
4349
return;
4450
}
4551

46-
if ($this->key !== $token->getKey()) {
52+
if ($this->secret !== $token->getSecret()) {
4753
throw new BadCredentialsException('The Token does not contain the expected key.');
4854
}
4955

src/Symfony/Component/Security/Core/Authentication/Provider/RememberMeAuthenticationProvider.php

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,20 +19,20 @@
1919
class RememberMeAuthenticationProvider implements AuthenticationProviderInterface
2020
{
2121
private $userChecker;
22-
private $key;
22+
private $secret;
2323
private $providerKey;
2424

2525
/**
2626
* Constructor.
2727
*
2828
* @param UserCheckerInterface $userChecker An UserCheckerInterface interface
29-
* @param string $key A key
30-
* @param string $providerKey A provider key
29+
* @param string $secret A secret
30+
* @param string $providerKey A provider secret
3131
*/
32-
public function __construct(UserCheckerInterface $userChecker, $key, $providerKey)
32+
public function __construct(UserCheckerInterface $userChecker, $secret, $providerKey)
3333
{
3434
$this->userChecker = $userChecker;
35-
$this->key = $key;
35+
$this->secret = $secret;
3636
$this->providerKey = $providerKey;
3737
}
3838

@@ -45,14 +45,14 @@ public function authenticate(TokenInterface $token)
4545
return;
4646
}
4747

48-
if ($this->key !== $token->getKey()) {
49-
throw new BadCredentialsException('The presented key does not match.');
48+
if ($this->secret !== $token->getSecret()) {
49+
throw new BadCredentialsException('The presented secret does not match.');
5050
}
5151

5252
$user = $token->getUser();
5353
$this->userChecker->checkPreAuth($user);
5454

55-
$authenticatedToken = new RememberMeToken($user, $this->providerKey, $this->key);
55+
$authenticatedToken = new RememberMeToken($user, $this->providerKey, $this->secret);
5656
$authenticatedToken->setAttributes($token->getAttributes());
5757

5858
return $authenticatedToken;

0 commit comments

Comments
 (0)
0