Skip to content

Commit 486baf8

Browse files
committed
Merge branch '2.7'
2 parents 8099ac1 + 70e2288 commit 486baf8

22 files changed

+355
-119
lines changed

best_practices/i18n.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ English in the application would be:
8383
<!-- app/Resources/translations/messages.en.xliff -->
8484
<?xml version="1.0"?>
8585
<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
86-
<file source-language="en" target-language="en" datatype="plaintext">
86+
<file source-language="en" target-language="en" datatype="plaintext" original="file.ext">
8787
<body>
8888
<trans-unit id="1">
8989
<source>title.post_list</source>

book/security.rst

Lines changed: 32 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -438,7 +438,7 @@ Next, create the controller that will display the login form::
438438

439439
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
440440
use Symfony\Component\HttpFoundation\Request;
441-
use Symfony\Component\Security\Core\SecurityContextInterface;
441+
use Symfony\Component\Security\Core\Security;
442442

443443
class SecurityController extends Controller
444444
{
@@ -447,19 +447,19 @@ Next, create the controller that will display the login form::
447447
$session = $request->getSession();
448448

449449
// get the login error if there is one
450-
if ($request->attributes->has(SecurityContextInterface::AUTHENTICATION_ERROR)) {
450+
if ($request->attributes->has(Security::AUTHENTICATION_ERROR)) {
451451
$error = $request->attributes->get(
452-
SecurityContextInterface::AUTHENTICATION_ERROR
452+
Security::AUTHENTICATION_ERROR
453453
);
454-
} elseif (null !== $session && $session->has(SecurityContextInterface::AUTHENTICATION_ERROR)) {
455-
$error = $session->get(SecurityContextInterface::AUTHENTICATION_ERROR);
456-
$session->remove(SecurityContextInterface::AUTHENTICATION_ERROR);
454+
} elseif (null !== $session && $session->has(Security::AUTHENTICATION_ERROR)) {
455+
$error = $session->get(Security::AUTHENTICATION_ERROR);
456+
$session->remove(Security::AUTHENTICATION_ERROR);
457457
} else {
458458
$error = '';
459459
}
460460

461461
// last username entered by the user
462-
$lastUsername = (null === $session) ? '' : $session->get(SecurityContextInterface::LAST_USERNAME);
462+
$lastUsername = (null === $session) ? '' : $session->get(Security::LAST_USERNAME);
463463

464464
return $this->render(
465465
'AcmeSecurityBundle:Security:login.html.twig',
@@ -713,7 +713,7 @@ see :doc:`/cookbook/security/form_login`.
713713
``/login_check`` doesn't match any firewall, you'll receive a ``Unable
714714
to find the controller for path "/login_check"`` exception.
715715

716-
**4. Multiple firewalls don't share security context**
716+
**4. Multiple firewalls don't share the same security context**
717717

718718
If you're using multiple firewalls and you authenticate against one firewall,
719719
you will *not* be authenticated against any other firewalls automatically.
@@ -1174,7 +1174,7 @@ authorization from inside a controller::
11741174

11751175
public function helloAction($name)
11761176
{
1177-
if (false === $this->get('security.context')->isGranted('ROLE_ADMIN')) {
1177+
if (false === $this->get('security.authorization_checker')->isGranted('ROLE_ADMIN')) {
11781178
throw $this->createAccessDeniedException('Unable to access this page!');
11791179
}
11801180

@@ -1186,6 +1186,10 @@ authorization from inside a controller::
11861186
.. versionadded:: 2.5
11871187
The ``createAccessDeniedException`` method was introduced in Symfony 2.5.
11881188

1189+
.. versionadded:: 2.6
1190+
The ``security.authorization_checker`` service was introduced in Symfony 2.6. Prior
1191+
to Symfony 2.6, you had to use the ``isGranted()`` method of the ``security.context`` service.
1192+
11891193
The :method:`Symfony\\Bundle\\FrameworkBundle\\Controller\\Controller::createAccessDeniedException`
11901194
method creates a special :class:`Symfony\\Component\\Security\\Core\\Exception\\AccessDeniedException`
11911195
object, which ultimately triggers a 403 HTTP response inside Symfony.
@@ -1618,14 +1622,18 @@ Retrieving the User Object
16181622
~~~~~~~~~~~~~~~~~~~~~~~~~~
16191623

16201624
After authentication, the ``User`` object of the current user can be accessed
1621-
via the ``security.context`` service. From inside a controller, this will
1625+
via the ``security.token_storage`` service. From inside a controller, this will
16221626
look like::
16231627

16241628
public function indexAction()
16251629
{
1626-
$user = $this->get('security.context')->getToken()->getUser();
1630+
$user = $this->get('security.token_storage')->getToken()->getUser();
16271631
}
16281632

1633+
.. versionadded:: 2.6
1634+
The ``security.token_storage`` service was introduced in Symfony 2.6. Prior
1635+
to Symfony 2.6, you had to use the ``getToken()`` method of the ``security.context`` service.
1636+
16291637
In a controller this can be shortcut to:
16301638

16311639
.. code-block:: php
@@ -1895,13 +1903,17 @@ authorization from inside a controller::
18951903

18961904
public function helloAction($name)
18971905
{
1898-
if (false === $this->get('security.context')->isGranted('ROLE_ADMIN')) {
1906+
if (false === $this->get('security.authorization_checker')->isGranted('ROLE_ADMIN')) {
18991907
throw new AccessDeniedException();
19001908
}
19011909

19021910
// ...
19031911
}
19041912

1913+
.. versionadded:: 2.6
1914+
The ``security.authorization_checker`` service was introduced in Symfony 2.6. Prior
1915+
to Symfony 2.6, you had to use the ``isGranted()`` method of the ``security.context`` service.
1916+
19051917
.. caution::
19061918

19071919
A firewall must be active or an exception will be thrown when the ``isGranted()``
@@ -1925,7 +1937,7 @@ accepts an :class:`Symfony\\Component\\ExpressionLanguage\\Expression` object::
19251937

19261938
public function indexAction()
19271939
{
1928-
if (!$this->get('security.context')->isGranted(new Expression(
1940+
if (!$this->get('security.authorization_checker')->isGranted(new Expression(
19291941
'"ROLE_ADMIN" in roles or (user and user.isSuperAdmin())'
19301942
))) {
19311943
throw new AccessDeniedException();
@@ -1934,6 +1946,10 @@ accepts an :class:`Symfony\\Component\\ExpressionLanguage\\Expression` object::
19341946
// ...
19351947
}
19361948

1949+
.. versionadded:: 2.6
1950+
The ``security.authorization_checker`` service was introduced in Symfony 2.6. Prior
1951+
to Symfony 2.6, you had to use the ``isGranted()`` method of the ``security.context`` service.
1952+
19371953
In this example, if the current user has ``ROLE_ADMIN`` or if the current
19381954
user object's ``isSuperAdmin()`` method returns ``true``, then access will
19391955
be granted (note: your User object may not have an ``isSuperAdmin`` method,
@@ -1979,10 +1995,10 @@ Additionally, you have access to a number of functions inside the expression:
19791995
use Symfony\Component\ExpressionLanguage\Expression;
19801996
// ...
19811997

1982-
$sc = $this->get('security.context');
1983-
$access1 = $sc->isGranted('IS_AUTHENTICATED_REMEMBERED');
1998+
$authorizationChecker = $this->get('security.authorization_checker');
1999+
$access1 = $authorizationChecker->isGranted('IS_AUTHENTICATED_REMEMBERED');
19842000

1985-
$access2 = $sc->isGranted(new Expression(
2001+
$access2 = $authorizationChecker->isGranted(new Expression(
19862002
'is_remember_me() or is_fully_authenticated()'
19872003
));
19882004

book/templating.rst

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1168,6 +1168,12 @@ automatically:
11681168
<p>Application Environment: <?php echo $app->getEnvironment() ?></p>
11691169
<?php endif ?>
11701170

1171+
.. versionadded:: 2.6
1172+
The global ``app.security`` variable (or the ``$app->getSecurity()``
1173+
method in PHP templates) is deprecated as of Symfony 2.6. Use `app.user`
1174+
(`$app->getUser()`) and `is_granted()` (`$view['security']->isGranted()`)
1175+
instead.
1176+
11711177
.. tip::
11721178

11731179
You can add your own global template variables. See the cookbook example

book/translation.rst

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -400,6 +400,15 @@ checks translation resources for several different locales:
400400
3. If the translation still isn't found, Symfony uses the ``fallback`` configuration
401401
parameter, which defaults to ``en`` (see `Configuration`_).
402402

403+
.. versionadded:: 2.6
404+
The ability to log missing translations was introduced in Symfony 2.6.
405+
406+
.. note::
407+
408+
When Symfony doesn't find a translation in the given locale, it will
409+
add the missing translation to the log file. For details,
410+
see :ref:`reference-framework-translator-logging`.
411+
403412
.. _book-translation-user-locale:
404413

405414
Handling the User's Locale

0 commit comments

Comments
 (0)