Browse Source

Ajout du TP7

Gabriel Frey 6 năm trước cách đây
mục cha
commit
e71c4f9013
1 tập tin đã thay đổi với 86 bổ sung0 xóa
  1. 86 0
      TP7.md

+ 86 - 0
TP7.md

@@ -0,0 +1,86 @@
+TP7 - Controller et Middleware
+==============================
+
+Objectif
+--------
+
+Dans le TP précédent, nous avons mis en place la partie Vue du MVC avec Blade.
+
+Dans ce TP7, nous allons mettre en place la partie Contrôleur du MVC, en créant un contrôleur d'utilisateur auquel on fera appel via le contrôleur de routage.
+
+
+Exercice 1 : Un Middleware d'authentification
+---------------------------------------------
+
+> Si besoin, la documentation est ici : [https://laravel.com/docs/6.x/middleware](https://laravel.com/docs/6.x/middleware)
+
+1. Créez le middleware `EnsureMyUserIsAuthenticated` grâce à **artisan** avec la commande suivante (il faut être à la racine de votre projet Laravel) :
+    ```sh
+    $ php artisan make:middleware EnsureMyUserIsAuthenticated
+    ```
+
+1. Déplacer les instructions de vérification de la variable de session `user` du fichier `routes/web.php` vers la fonction `handle(...)` de `EnsureMyUserIsAuthenticated.php`.
+
+1. Dans `app/Http/Kernel.php`, ajouter le middleware comme **middleware de routes**, avec pour nom `myuser.auth`.
+
+1. Dans `routes/web.php`, ajouter le middleware au groupe de routes préfixé `admin`.
+
+
+Exercice 2 : Un Contrôleur pour les gouverner tous
+--------------------------------------------------
+
+1. Créer un contrôleur `UserController` avec la commande suivante (il faut être à la racine de votre projet Laravel) :
+    ```sh
+    $ php artisan make:controller UserController
+    ```
+
+
+Exercice 3 : Le contrôle dans ses plus simples éléments
+-------------------------------------------------------
+
+1. Dans `UserController.php`, créer la fonction suivante :
+    ```php
+    /**
+     * Show the signin page
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @return \Illuminate\Http\Response
+     */
+    public function signin( Request $request )
+    ```
+et copiez-y le code de la fonction associée à la route `signin` de `routes/web.php`.
+
+1. Modifier les routes `/` et `signin` de `routes/web.php` our qu'elles appellent la méthode `signin` du contrôleur `UserController`.
+
+1. Appliquer les deux étapes précédentes aux routes `signup`, `formpassword`, `signout` et `welcome`.
+
+
+Exercice 4 : Le contrôle de l'authentification
+----------------------------------------------
+
+1. Dans `UserController.php`, créer une fonction `authenticate` su le même modèle que celles de l'exercice précédent.
+
+1. Copier le code du fichier `resources/view/authenticate.php` dans la méthode `authenticate` de `UserController.php` et effectuer tous les changements possibles pour utiliser :
+    - l'objet `$request` pour manipuler les données transmises par l'utilisateur (voir [HTTP Requests](https://laravel.com/docs/6.x/requests))
+    - la directive `redirect` de Laravel au lieu de `header` (voir [Routing](https://laravel.com/docs/6.x/routing))
+
+1. Supprimer le fichier `resources/view/authenticate.php`
+
+1. Appliquer les deux étapes précédentes aux routes `adduser`, `changepassword` et `deleteuser`.
+
+> Note : si certaines erreurs ne sont plus "catchées" et affichées dans un message mais déclanchent une erreur Laravel, ajouter un `\` devant les types d'erreur. Ex : `catch (\PDOException $e)`.
+
+
+Exercice 5 : Les sessions selon Laravel
+---------------------------------------
+
+Cet exercice va permettre de déléguer la gestion des sessions à Laravel de manière transparente et de rendre le code plus lisible.
+
+Le choix vous est laissé d'utiliser les sessions à travers l'objet `$request->session()` ou à travers la fonction globale `session` (voir la documentation disponible sur la page [HTTP Session](https://laravel.com/docs/6.x/session)).
+
+1. Remplacer tous les appels au tableau `$_SESSION` du fichier `UserController.php` par l'utilisation des sessions de Laravel. Penser notamment :
+    - à utiliser la directive `with` en complément des directives `view` et `redirect` pour transmettre les messages d'information et le nom de l'utilisateur
+    - à détruire les sessions avec `flush`
+    - à utiliser `put` pour sauvegarder le nom de l'utilisateur
+
+1. Faite de même pour le middleware `EnsureMyUserIsAuthenticated.php`.