Skip to content

Commit

Permalink
[fr] Fix typos and add missing parts in tutorials-and-examples folder
Browse files Browse the repository at this point in the history
  • Loading branch information
cake17 committed Jun 20, 2013
1 parent 440ca54 commit fa39e33
Show file tree
Hide file tree
Showing 5 changed files with 646 additions and 594 deletions.
170 changes: 85 additions & 85 deletions fr/tutorials-and-examples/blog-auth-example/auth.rst
Original file line number Diff line number Diff line change
@@ -1,17 +1,17 @@
Authentification Simple et Autorisation de l'Application
########################################################

Suivez notre exemple :doc:`/tutorials-and-examples/blog/blog`, imaginons que
nous souhaitions sécuriser l'accès de certaines urls, basées sur la connexion
de l'user. Nous avons aussi une autre condition requise, qui est
d'autoriser notre blog à avoir des auteurs multiples, afin que chacun d'eux
puisse créer ses propres posts, les modifier et les supprimer selon le besoin
Suivez notre exemple :doc:`/tutorials-and-examples/blog/blog`, imaginons que
nous souhaitions sécuriser l'accès de certaines urls, basées sur la connexion
de l'user. Nous avons aussi une autre condition requise, qui est
d'autoriser notre blog à avoir des auteurs multiples, afin que chacun d'eux
puisse créer ses propres posts, les modifier et les supprimer selon le besoin
interdisant d'autres auteurs à apporter des modifications sur ses messages.

Créer le code lié de tous les users
===================================

Premièrement, créeons une nouvelle table dans notre base de données du blog
Premièrement, créeons une nouvelle table dans notre base de données du blog
pour contenir les données de notre user::

CREATE TABLE users (
Expand All @@ -23,13 +23,13 @@ pour contenir les données de notre user::
modified DATETIME DEFAULT NULL
);

Nous avons respecté les conventions de CakePHP pour le nommage des tables,
mais nous profitons d'une autre convention: en utilisant les colonnes du
nom d'user et du mot de passe dans une table users, CakePHP sera
capable de configurer automatiquement la plupart des choses pour nous quand on
Nous avons respecté les conventions de CakePHP pour le nommage des tables,
mais nous profitons d'une autre convention: en utilisant les colonnes du
nom d'user et du mot de passe dans une table users, CakePHP sera
capable de configurer automatiquement la plupart des choses pour nous quand on
réalisera la connexion de l'user.

La prochaine étape est de créer notre modèle User, qui a la
La prochaine étape est de créer notre model User, qui a la
responsablilité de trouver, sauvegarder et valider toute donnée d'user::

// app/Model/User.php
Expand Down Expand Up @@ -58,8 +58,8 @@ responsablilité de trouver, sauvegarder et valider toute donnée d'user::
);
}

Créeons aussi notre UsersController, le contenu suivant correspond à la
classe `cuisinée` basique UsersController en utilisant les utilitaires
Créeons aussi notre UsersController, le contenu suivant correspond à la
classe `cuisinée` basique UsersController en utilisant les utilitaires
de génération de code fournis avec CakePHP::

// app/Controller/UsersController.php
Expand Down Expand Up @@ -129,8 +129,8 @@ de génération de code fournis avec CakePHP::
$this->redirect(array('action' => 'index'));
}

De la même façon, nous avons crée les vues pour nos posts de blog ou en
utilisant l'outil de génération de code, nous exécutons les vues. Dans
De la même façon, nous avons crée les vues pour nos posts de blog ou en
utilisant l'outil de génération de code, nous exécutons les vues. Dans
le cadre de ce tutoriel, nous allons juste montrer le add.ctp:

.. code-block:: php
Expand All @@ -153,13 +153,13 @@ le cadre de ce tutoriel, nous allons juste montrer le add.ctp:
Authentification (Connexion et Deconnexion)
===========================================

Nous sommes maintenant prêt à ajouter notre couche d'authentification. Dans
CakePHP, c'est géré par :php:class:`AuthComponent`, une classe responsable
d'exiger la connexion pour certaines actions, de gérer la connexion et la
déconnexion, et aussi d'autoriser aux users connectés les actions
Nous sommes maintenant prêt à ajouter notre couche d'authentification. Dans
CakePHP, c'est géré par :php:class:`AuthComponent`, une classe responsable
d'exiger la connexion pour certaines actions, de gérer la connexion et la
déconnexion, et aussi d'autoriser aux users connectés les actions
que l'on souhaite leur voir autorisées.

Pour ajouter ce composant à votre application, ouvrez votre fichier
Pour ajouter ce component à votre application, ouvrez votre fichier
``app/Controller/AppController.php`` et ajoutez les lignes suivantes::

// app/Controller/AppController.php
Expand All @@ -180,21 +180,21 @@ Pour ajouter ce composant à votre application, ouvrez votre fichier
//...
}

Il n'y a pas grand chose à configurer, puisque nous avons utilisé les
conventions pour la table des users. Nous avons juste configurer les
urls qui seront chargées après que la connexion et la déconnexion des actions
Il n'y a pas grand chose à configurer, puisque nous avons utilisé les
conventions pour la table des users. Nous avons juste configurer les
urls qui seront chargées après que la connexion et la déconnexion des actions
sont effectuées, dans notre cas, respectivement à ``/posts/`` et ``/``.

Ce que nous avons fait dans la fonction ``beforeFilter`` a été de dire au
AuthComponent de ne pas exiger un login pour toutes les actions ``index``
et ``view``, dans chaque contrôleur. Nous voulons que nos visiteurs soient
Ce que nous avons fait dans la fonction ``beforeFilter`` a été de dire au
AuthComponent de ne pas exiger un login pour toutes les actions ``index``
et ``view``, dans chaque controller. Nous voulons que nos visiteurs soient
capables de lire et lister les entrées sans s'inscrire dans le site.

Maintenant, nous avons besoin d'être capable d'inscrire des nouveaux
users, de sauvegarder leur nom d'user et mot de passe, et plus
important de hasher leur mot de passe afin qu'il ne soit pas stocké en
texte plain dans notre base de données. Disons à AuthComponent de laisser
des users non-authentifiés d'accéder à la fonction add des users
Maintenant, nous avons besoin d'être capable d'inscrire des nouveaux
users, de sauvegarder leur nom d'user et mot de passe, et plus
important de hasher leur mot de passe afin qu'il ne soit pas stocké en
texte plain dans notre base de données. Disons à AuthComponent de laisser
des users non-authentifiés d'accéder à la fonction add des users
et de réaliser l'action connexion et deconnexion::

// app/Controller/UsersController.php
Expand All @@ -218,7 +218,7 @@ et de réaliser l'action connexion et deconnexion::
$this->redirect($this->Auth->logout());
}

Le hash du mot de passe n'est pas encore fait, ouvrez votre fichier de modèle
Le hash du mot de passe n'est pas encore fait, ouvrez votre fichier de model
``app/Model/User.php`` et ajoutez ce qui suit::

// app/Model/User.php
Expand All @@ -227,7 +227,7 @@ Le hash du mot de passe n'est pas encore fait, ouvrez votre fichier de modèle

// ...

public function beforeSave() {
public function beforeSave($options = array()) {
if (isset($this->data[$this->alias]['password'])) {
$this->data[$this->alias]['password'] = AuthComponent::password($this->data[$this->alias]['password']);
}
Expand All @@ -236,9 +236,9 @@ Le hash du mot de passe n'est pas encore fait, ouvrez votre fichier de modèle

// ...

Ainsi, maintenant à chaque fois qu'un user est sauvegardé, le mot de
passe est hashé en utilisant le hashing fourni par défaut par la classe
AuthComponent. Il nous manque juste un fichier template de vue pour la
Ainsi, maintenant à chaque fois qu'un user est sauvegardé, le mot de
passe est hashé en utilisant le hashing fourni par défaut par la classe
AuthComponent. Il nous manque juste un fichier template de vue pour la
fonction de connexion, et le voilà:

.. code-block:: php
Expand All @@ -255,42 +255,42 @@ fonction de connexion, et le voilà:
<?php echo $this->Form->end(__('Connexion'));?>
</div>
Vous pouvez maintenant inscrire un nouvel user en rentrant l'url
``/users/add`` et vous connecter avec ce profil nouvellement créé en allant
sur l'url ``/users/login``. Essayez aussi d'aller sur n'importe quel url
qui n'a pas été explicitement autorisée telle que ``/posts/add``, vous verrez
Vous pouvez maintenant inscrire un nouvel user en rentrant l'url
``/users/add`` et vous connecter avec ce profil nouvellement créé en allant
sur l'url ``/users/login``. Essayez aussi d'aller sur n'importe quel url
qui n'a pas été explicitement autorisée telle que ``/posts/add``, vous verrez
que l'application vous redirige automatiquement vers la page de connexion.

Et c'est tout! Cela semble trop simple pour être vrai. Retournons en arrière un
peu pour expliquer ce qui s'est passé. La fonction ``beforeFilter`` dit au
composant AuthComponent de ne pas exiger de connexion pour l'action ``add``
en plus des actions ``index`` and ``view`` qui étaient déjà autorisées dans
Et c'est tout! Cela semble trop simple pour être vrai. Retournons en arrière un
peu pour expliquer ce qui s'est passé. La fonction ``beforeFilter`` dit au
component AuthComponent de ne pas exiger de connexion pour l'action ``add``
en plus des actions ``index`` and ``view`` qui étaient déjà autorisées dans
la fonction ``beforeFilter`` de l'AppController.

L'action ``login`` appelle la fonction ``$this->Auth->login()`` dans
AuthComponent, et cela fonctionne sans autre config car nous suivons les
conventions comme mentionnées plus tôt. C'est-à-dire, avoir un modèle
User avec les colonnes username et password, et
utiliser un formulaire posté à un contrôleur avec les données d'user.
Cette fonction retourne si la connexion a réussi ou non, et en cas de succès,
alors nous redirigeons l'user vers l'url configuré de redirection que
L'action ``login`` appelle la fonction ``$this->Auth->login()`` dans
AuthComponent, et cela fonctionne sans autre config car nous suivons les
conventions comme mentionnées plus tôt. C'est-à-dire, avoir un model
User avec les colonnes username et password, et
utiliser un formulaire posté à un controller avec les données d'user.
Cette fonction retourne si la connexion a réussi ou non, et en cas de succès,
alors nous redirigeons l'user vers l'url configuré de redirection que
nous utilisions quand nous avons ajouté AuthComponent à notre application.

La déconnexion fonctionne juste en allant à l'url ``/users/logout`` et
redirigera l'user vers l'Url de Déconnexion configurée décrite
précedemment. Cette url est le résultat de la fonction
La déconnexion fonctionne juste en allant à l'url ``/users/logout`` et
redirigera l'user vers l'Url de Déconnexion configurée décrite
précedemment. Cette url est le résultat de la fonction
``AuthComponent::logout()`` en cas de succès.

Autorisation (Qui est autorisé à accéder à quoi)
================================================

Comme mentionné avant, nous convertissons ce blog en un outil multi-user
à autorisation, et pour ce faire, nous avons besoin de modifier un peu la table
posts pour ajouter la référence au modèle User::
Comme mentionné avant, nous convertissons ce blog en un outil multi-user
à autorisation, et pour ce faire, nous avons besoin de modifier un peu la table
posts pour ajouter la référence au model User::

ALTER TABLE posts ADD COLUMN user_id INT(11);

Aussi, un petit changement dans PostsController est nécessaire pour stocker
Aussi, un petit changement dans PostsController est nécessaire pour stocker
l'user connecté courant en référence pour le post créé::

// app/Controller/PostsController.php
Expand All @@ -304,15 +304,15 @@ l'user connecté courant en référence pour le post créé::
}
}

La fonction ``user()`` fournie par le composant retourne toute colonne à partir
de l'user connecté courant. Nous avons utilisé cette méthode pour
La fonction ``user()`` fournie par le component retourne toute colonne à partir
de l'user connecté courant. Nous avons utilisé cette méthode pour
ajouter les données dans les infos requêtées qui sont sauvegardées.

Sécurisons maintenant notre app pour empêcher certains auteurs de modifier ou
supprimer les posts des autres. Des règles basiques pour notre app son que les
users admin peuvent accéder à tout url, alors que les users
Sécurisons maintenant notre app pour empêcher certains auteurs de modifier ou
supprimer les posts des autres. Des règles basiques pour notre app sont que les
users admin peuvent accéder à tout url, alors que les users
normaux (le role auteur) peuvent seulement accéder aux actions permises.
Ouvrez encore la classe AppController et ajoutez un peu plus d'options à la
Ouvrez encore la classe AppController et ajoutez un peu plus d'options à la
config de Auth::

// app/Controller/AppController.php
Expand All @@ -336,17 +336,17 @@ config de Auth::
return false;
}

Nous venons de créer un mécanisme très simple d'autorisation. Dans ce cas, les
users avec le role ``admin`` sera capable d'accéder à tout url dans le
site quand ils sont connectés, mais les autres (par ex le role ``auteur``) ne
Nous venons de créer un mécanisme très simple d'autorisation. Dans ce cas, les
users avec le role ``admin`` sera capable d'accéder à tout url dans le
site quand ils sont connectés, mais les autres (par ex le role ``auteur``) ne
peut rien faire d'autre par rapport aux users non connectés.

Ce n'est pas exactement ce que nous souhaitions, donc nous avons besoin de
déterminer et fournir plus de règles à notre méthode ``isAuthorized()``. Mais
plutôt que de le faire dans AppController, déleguons à chaque contrôleur la
fourniture de ces règles supplémentaires. Les règles que nous allons ajouter
à PostsController permettront aux auteurs de créer des posts mais empêcheront
l'édition des posts si l'auteur ne correspond pas. Ouvrez le fichier
Ce n'est pas exactement ce que nous souhaitions, donc nous avons besoin de
déterminer et fournir plus de règles à notre méthode ``isAuthorized()``. Mais
plutôt que de le faire dans AppController, déleguons à chaque controller la
fourniture de ces règles supplémentaires. Les règles que nous allons ajouter
à PostsController permettront aux auteurs de créer des posts mais empêcheront
l'édition des posts si l'auteur ne correspond pas. Ouvrez le fichier
``PostsController.php`` et ajoutez le contenu suivant::

// app/Controller/PostsController.php
Expand All @@ -368,14 +368,14 @@ l'édition des posts si l'auteur ne correspond pas. Ouvrez le fichier
return parent::isAuthorized($user);
}

Nous surchargeons maintenant l'appel ``isAuthorized()`` de AppController's et
Nous surchargeons maintenant l'appel ``isAuthorized()`` de AppController's et
vérifions à l'intérieur si la classe parente autorise déjà l'user.
Si elle ne le fait pas, alors nous ajoutons juste l'autorisation d'accéder
Si elle ne le fait pas, alors nous ajoutons juste l'autorisation d'accéder
à l'action add, et éventuellement accés pour modifier et de supprimer.
Une dernière chose à que nous avons oubliée d'exécuter est de dire si
l'user à l'autorisation ou non de modifier le post, nous appelons
une fonction ``isOwnedBy()`` dans le modèle Post. C'est généralement une
bonne pratique de déplacer autant que possible la logique dans les modèles.
Une dernière chose à que nous avons oubliée d'exécuter est de dire si
l'user à l'autorisation ou non de modifier le post, nous appelons
une fonction ``isOwnedBy()`` dans le model Post. C'est généralement une
bonne pratique de déplacer autant que possible la logique dans les models.
Laissons la fonction s'exécuter::

// app/Model/Post.php
Expand All @@ -386,14 +386,14 @@ Laissons la fonction s'exécuter::


Ceci conclut notre tutoriel simple sur l'authentification et les autorisations.
Pour sécuriser l'UsersController, vous pouvez suivre la même technique que nous
faisions pour PostsController, vous pouvez aussi être plus créatif et coder
Pour sécuriser l'UsersController, vous pouvez suivre la même technique que nous
faisions pour PostsController, vous pouvez aussi être plus créatif et coder
quelque chose de plus général dans AppController basé sur vos propres règles.

Si vous avez besoin de plus de contrôle, nous vous suggérons de lire le guide
complet Auth dans la section
:doc:`/core-libraries/components/authentication` où vous en trouverez plus sur
la configuration du composant, la création de classes d'autorisation
Si vous avez besoin de plus de contrôle, nous vous suggérons de lire le guide
complet Auth dans la section
:doc:`/core-libraries/components/authentication` où vous en trouverez plus sur
la configuration du component, la création de classes d'autorisation
personnalisée, et bien plus encore.

Lectures suivantes suggérées
Expand Down
Loading

0 comments on commit fa39e33

Please sign in to comment.