From 7379d34c39c44153bcc71707a49219f9193bed34 Mon Sep 17 00:00:00 2001 From: Yves P Date: Thu, 6 Jul 2017 20:11:27 +0200 Subject: [PATCH 1/3] [fr] Follows #4976 --- en/controllers/middleware.rst | 6 +++--- fr/controllers/components/cookie.rst | 4 ++++ fr/controllers/components/csrf.rst | 4 ++++ fr/controllers/middleware.rst | 21 +++++++++++++++++++++ 4 files changed, 32 insertions(+), 3 deletions(-) diff --git a/en/controllers/middleware.rst b/en/controllers/middleware.rst index 97921cb5f2..877886214c 100644 --- a/en/controllers/middleware.rst +++ b/en/controllers/middleware.rst @@ -368,17 +368,17 @@ Integration with FormHelper --------------------------- The ``CsrfProtectionMiddleware`` integrates seamlessly with ``FormHelper``. Each -time you create a form with FormHelper, it will insert a hidden field containing +time you create a form with ``FormHelper``, it will insert a hidden field containing the CSRF token. .. note:: When using CSRF protection you should always start your forms with the - FormHelper. If you do not, you will need to manually create hidden inputs in + ``FormHelper``. If you do not, you will need to manually create hidden inputs in each of your forms. CSRF Protection and AJAX Requests ----------------------------------- +--------------------------------- In addition to request data parameters, CSRF tokens can be submitted through a special ``X-CSRF-Token`` header. Using a header often makes it easier to diff --git a/fr/controllers/components/cookie.rst b/fr/controllers/components/cookie.rst index 45f6e77502..fea4d57a8e 100644 --- a/fr/controllers/components/cookie.rst +++ b/fr/controllers/components/cookie.rst @@ -9,6 +9,10 @@ Le component Cookie est un conteneur de la méthode native de PHP ``setcookie()``. Il simplifie la manipulation des cookies et chiffre automatiquement les données du cookie. +.. deprecated:: 3.5.0 + Vous devriez utiliser le :ref:`encrypted-cookie-middleware` à la place du + ``CookieComponent``. + Paramétrage des Cookies ======================= diff --git a/fr/controllers/components/csrf.rst b/fr/controllers/components/csrf.rst index 7c03c2349c..3c9750de10 100644 --- a/fr/controllers/components/csrf.rst +++ b/fr/controllers/components/csrf.rst @@ -29,6 +29,10 @@ deux valeurs ne correspondent pas, le component lancera une :php:class:`Cake\\Network\\Exception\\ForbiddenException` en :php:class:`Cake\\Network\\Exception\\InvalidCsrfTokenException`. +.. deprecated:: 3.5.0 + Vous devriez utiliser le :ref:`csrf-middleware` à la place du + ``CsrfComponent``. + Utiliser le CsrfComponent ========================= diff --git a/fr/controllers/middleware.rst b/fr/controllers/middleware.rst index ab06e713c9..0159560bea 100644 --- a/fr/controllers/middleware.rst +++ b/fr/controllers/middleware.rst @@ -370,6 +370,27 @@ Une fois activé, vous pouvez accéder au token CSRF actuel via l'objet "Request .. versionadded:: 3.5.0 ``CsrfProtectionMiddleware`` a été ajouté dans 3.5.0 +Intégration avec le FormHelper +------------------------------ + +Le ``CsrfProtectionMiddleware`` s'intègre parfaitement avec le ``FormHelper``. +Chaque fois que vous créez un formulaire avec le ``FormHelper``, cela créera un +champ caché contenant le token CSRF. + +.. note:: + + Lorsque vous utilisez la protection CSRF, vous devriez toujours commencer + vos formulaires avec le ``FormHelper``. Si vous ne le faites pas, vous allez + devoir créer manuellement les champs cachés dans chaque formulaire. + +Protection CSRF et Requêtes AJAX +-------------------------------- + +En plus des données de la requête, les tokens CSRF peuvent être soumis via le +header spécial ``X-CSRF-Token``. Utiliser un header facilite généralement +l'intégration du token CSRF dans les applications qui utilisent Javascript de +manière intensive ou avec les applications API JSON / XML. + .. _adding-http-stack: Ajout de la nouvelle pile HTTP à une application existante From 9780877ac16d7a37407f98ea04da4124878cb9ec Mon Sep 17 00:00:00 2001 From: Yves P Date: Thu, 6 Jul 2017 20:25:28 +0200 Subject: [PATCH 2/3] [fr] Follows #4984 --- fr/controllers/middleware.rst | 4 +++ fr/development/routing.rst | 51 +++++++++++++++++++++++++++++------ 2 files changed, 47 insertions(+), 8 deletions(-) diff --git a/fr/controllers/middleware.rst b/fr/controllers/middleware.rst index 0159560bea..3de4a1b85a 100644 --- a/fr/controllers/middleware.rst +++ b/fr/controllers/middleware.rst @@ -88,6 +88,10 @@ différentes opérations :: $layer ); +En plus d'appliquer des middleware à la totalité de votre application, vous pouvez +appliquer des middleware à des jeux de routes spécifiques en utilisant les +:ref:`middlewares connectés à un scope `. + Ajout de Middleware à partir de Plugins --------------------------------------- diff --git a/fr/development/routing.rst b/fr/development/routing.rst index 8d78d43d13..6152cf7104 100644 --- a/fr/development/routing.rst +++ b/fr/development/routing.rst @@ -43,7 +43,7 @@ d'accueil de votre site est visitée. Parfois vous avez besoin de routes dynamiques qui vont accepter plusieurs paramètres, ce sera par exemple le cas d'une route pour voir le contenu d'un article:: - Router::connect('/articles/*', ['controller' => 'Articles', 'action' => 'view']); + $routes->connect('/articles/*', ['controller' => 'Articles', 'action' => 'view']); La route ci-dessus accepte toute URL qui ressemble à ``/articles/15`` et appelle la méthode ``view(15)`` dans ``ArticlesController``. En revanche, ceci ne va pas @@ -51,7 +51,7 @@ empêcher les visiteurs d'accéder à une URLs ressemblant à ``/articles/foobar``. Si vous le souhaitez, vous pouvez restreindre certains paramètres grâce à une expression régulière:: - Router::connect( + $routes->connect( '/articles/:id', ['controller' => 'Articles', 'action' => 'view'], ['id' => '\d+', 'pass' => ['id']] @@ -79,14 +79,15 @@ Les routes peuvent aussi être labellisées avec un nom unique, cela vous permet de rapidement leur faire référence lors de la construction des liens plutôt que de spécifier chacun des paramètres de routing:: - use Cake\Routing\Router; - - Router::connect( + // Dans le fichier routes.php + $routes->connect( '/login', ['controller' => 'Users', 'action' => 'login'], ['_name' => 'login'] ); + use Cake\Routing\Router; + echo Router::url(['_name' => 'login']); // Va afficher /login @@ -115,13 +116,12 @@ par défaut si vous n'en avez pas besoin. Connecter les Routes ==================== -.. php:staticmethod:: connect($route, $defaults = [], $options = []) +.. php:method:: connect($route, $defaults = [], $options = []) Pour garder votre code :term:`DRY`, vous pouvez utiliser les 'routing scopes'. Les scopes de Routing permettent non seulement de garder votre code DRY mais aident aussi le Router à optimiser son opération. Comme vous l'avez vu -précédemment, vous pouvez aussi utiliser ``Router::connect()`` pour connecter -les routes. Cette méthode va par défaut vers le scope ``/``. Pour créer un +précédemment. Cette méthode va par défaut vers le scope ``/``. Pour créer un scope et connecter certaines routes, nous allons utiliser la méthode ``scope()``:: @@ -772,6 +772,41 @@ Les extensions de fichier sont utilisées par le :doc:`/controllers/components/request-handling` qui fait la commutation des vues automatiquement en se basant sur les types de contenu. +.. _connecting-scoped-middleware: + +Connecter des Middlewares à un scope +------------------------------------ + +Les middleware peuvent être appliqués à l'ensemble de votre application ou bien +à des scopes spécifiques. Avant qu'un middleware ne soit appliqué à un scope, +il a besoin d'être enregistré:: + + // dans config/routes.php + use Cake\Http\Middleware\CsrfProtectionMiddleware; + use Cake\Http\Middleware\EncryptedCookieMiddleware; + + Router::scope('/', function ($routes) { + $routes->registerMiddleware('csrf', new CsrfProtectionMiddleware()); + $routes->registerMiddleware('cookies', new EncryptedCookiesMiddleware()); + }); + +Une fois enregistré dans le builder de routes, le middleware peut être appliqué +à des scopes spécifiques:: + + $routes->scope('/cms', function ($routes) { + // Active les middlewares enregistrés pour ce scope. + $routes->applyMiddleware('csrf', 'cookies'); + }); + +Dans les cas où vous avez des scopes imbriqués, tous les middlewares appliqués +à chacun des scopes seront appliqués à partir du middleware de plus haut niveau +en terminant par les scopes imbriqués. En appliquant un middleware à des scopes +spécifiques, vous éviterez d'ajouter de la complexité dans la logique de vos +middlewares et les laisser s'occuper de leur tâche principale. + +.. versionadded:: 3.5.0 + Le support des middlewares par scope a été ajouté dans 3.5.0 + .. _resource-routes: Créer des Routes RESTful From 68cfa04874f76d8fab7568e28f74f056dd52fb3f Mon Sep 17 00:00:00 2001 From: Yves P Date: Thu, 6 Jul 2017 21:36:00 +0200 Subject: [PATCH 3/3] [fr] Follows #5013 --- en/core-libraries/httpclient.rst | 1 - fr/core-libraries/httpclient.rst | 13 +++++++++++++ .../internationalization-and-localization.rst | 5 +++++ 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/en/core-libraries/httpclient.rst b/en/core-libraries/httpclient.rst index fd97c19d4e..5a12c7e86a 100644 --- a/en/core-libraries/httpclient.rst +++ b/en/core-libraries/httpclient.rst @@ -339,7 +339,6 @@ request's ``$options`` parameters:: 'cookies' => ['sessionid' => '123abc'] ]); - You can add cookie objects to the client after creating it using the ``addCookie()`` method:: diff --git a/fr/core-libraries/httpclient.rst b/fr/core-libraries/httpclient.rst index f17e5e0e7e..64e857e404 100644 --- a/fr/core-libraries/httpclient.rst +++ b/fr/core-libraries/httpclient.rst @@ -353,6 +353,19 @@ les paramètres ``$options`` de la requête:: 'cookies' => ['sessionid' => '123abc'] ]); +Vous pouvez ajouter des cookies au client après l'avoir créé en utilisant la méthode +``addCookie()``:: + + use Cake\Http\Cookie\Cookie; + + $http = new Client([ + 'host' => 'cakephp.org' + ]); + $http->addCookie(new Cookie('session', 'abc123')); + +.. versionadded:: 3.5.0 + ``addCookie()`` a été ajoutée dans 3.5.0 + .. _httpclient-response-objects: Objets Response diff --git a/fr/core-libraries/internationalization-and-localization.rst b/fr/core-libraries/internationalization-and-localization.rst index b2d736a869..22dca96480 100644 --- a/fr/core-libraries/internationalization-and-localization.rst +++ b/fr/core-libraries/internationalization-and-localization.rst @@ -128,6 +128,7 @@ cette méthode:: use Cake\I18n\I18n; + // Avant 3.5, utilisez I18n::locale() I18n::setLocale('de_DE'); Cela changera également le formatage des nombres et des dates lorsque vous @@ -425,6 +426,7 @@ fonction loader doit retourner un objet ``Aura\Intl\Package``. Une fois que le code est en place vous pouvez utiliser les fonctions de traduction comme d'habitude:: + // Avant 3.5, utilisez I18n::locale() I18n::setLocale('fr_FR'); __d('animals', 'Dog'); // Retourne "Chien" @@ -441,6 +443,7 @@ depuis un autre endroit:: // Charge les messages depuis src/Locale/folder/sub_folder/filename.po + // Avant 3.5, utilisez translator() I18n::setTranslator( 'animals', new Loader('filename', 'folder/sub_folder', 'po'), @@ -480,6 +483,7 @@ Enfin, configurez le loader de traduction pour le domaine et la locale:: use Cake\I18n\MessagesFileLoader as Loader; + // Avant 3.5, utilisez translator() I18n::setTranslator( 'animals', new Loader('animals', 'fr_FR', 'yaml'), @@ -596,6 +600,7 @@ la locale et utiliser les bonnes classes:: use Cake\I18n\Time; use Cake\I18n\Number; + // Avant 3.5, utilisez I18n::locale() I18n::setLocale('fr-FR'); $date = new Time('2015-04-05 23:00:00');