Răsfoiți Sursa

Ajout du TP 5

akrah 6 ani în urmă
părinte
comite
86ba6bb3ae
1 a modificat fișierele cu 89 adăugiri și 0 ștergeri
  1. 89 0
      TP5.md

+ 89 - 0
TP5.md

@@ -0,0 +1,89 @@
+TP5 - Prise en main de Laravel
+==============================
+
+Objectif
+--------
+
+Intégrer votre application d'authentification au framework Laravel.
+Vous pouvez vous baser au choix :
+
+- sur de vos propres sources résultant du TP4
+- sur la proposition du répertoire [correction/TP4](correction/TP4)
+
+Noter que le but de ce TP est d'obtenir une application fonctionnelle **mais qui ne respectera pas encore le découpage MVC**.
+
+Les TPs suivants permettront de séparer progressivement les parties Modèle, Vue et Contrôleur en utilisant à bon escient les fonctionnalités offertes par Laravel.
+
+
+Exercice 1 : Installation
+-------------------------
+
+Suivez les indications donnés dans [LARAVEL-installation.md](LARAVEL-installation.md).
+
+**Attention : `composer` n'est installé que sur webetu, pas sur troglo.**
+
+
+Exercice 2 : Préparation des vues
+---------------------------------
+
+1. Copiez les fichiers suivants du TP4 dans `resources/views/` :
+    - `adduser.php`
+    - `authenticate.php`
+    - `changepassword.php`
+    - `deleteuser.php`
+    - `formpassword.php`
+    - `signin.php`
+    - `signout.php`
+    - `signup.php`
+    - `welcome.php`
+
+1. Dans `routes/web.php` :
+    - Écrivez les routes GET et POST pour les fichiers ci-dessus (ne pas utiliser `Route::view`)
+    - Faites en sorte qu'une requête vers la racine du site propose la vue `signin.php`
+    - Testez toutes les routes GET. Regardez ce qu'il se passe lorsqu'on demande une route qui n'a pas été prévue dans `routes/web.php`
+
+1. Dans chaque fichier remplacer toutes les références à des fichiers PHP par des références à des routes.
+
+1. Dans le fichier `app/Http/Kernel.php`, commenter les lignes qui font référence au middleware `VerifyCsrfToken`.
+
+
+Exercice 3 : Controleur et PDO
+------------------------------
+
+1. Dans le fichier `.env`,  modifiez les champs `DB_HOST`, `DB_DATABASE`, `DB_USERNAME` et `DB_PASSWORD` avec les informations de l'ancien fichier `bdd.php`.
+
+1. Copier le fichier `models/User.php` du TP4 dans le répertoire `app/` de votre application et le renommer `MyUser.php`. **Attention, ne pas écraser le fichier `User.php` existant déjà dans ce répertoire.**
+
+1. Dans `MyUser.php` :
+    - déclarer le namespace `App`
+    - remplacer les `User::USER_TABLE` par `MyUser::USER_TABLE`
+    - remplacer tous les `MyPDO::pdo()` par `DB::connection()->getPdo()`
+    - ajouter en entête les deux `use` suivants :
+        ```php
+        use use Illuminate\Support\Facades\DB;
+        use PDO;
+        ```
+
+1. Dans chacun des fichiers `adduser.php`, `authenticate.php`, `changepassword.php`, `deleteuser.php` et `signout.php` :
+    - remplacer les `require_once('models/User');` par des `use App\MyUser;`
+    - remplacer les `new User` par des `new MyUser`
+
+**À ce stade, l'application devrait être entièrement fonctionnelle. Solutionner les problèmes avant de passer à la suite.**
+
+
+Exercice 4 : Le grand nettoyage
+-------------------------------
+
+1. Supprimer toutes les vérifications de `REQUEST_METHOD` : c'est maintenant le routage qui le gère.
+
+1. Supprimer tous les `session_start()` de tous vos fichiers.
+
+1. Dans `routes/web.php`, mettre toutes les routes dans un groupe. Dans la fonction qui contient maintenant toutes les routes, ajouter en première instruction un `session_start()`.
+
+1. Dans `routes/web.php`, remplacer l'appel à la vue `signout` par le code du fichier `signout.php` et modifier l'appel à `header()` par un appel à la méthode `redirect()` de Laravel. Supprimer `signout.php`.
+
+1. Dans le même esprit que la question précédente, déplacer le code de vérification de connexion situé au début des fichiers `changepassword.php`, `deleteuser.php`, `formpassword.php` et `welcome.php` dans les fonctions de routage correspondantes. Remplacer les appels à `header()` par des appels à la méthode `redirect()` de Laravel.
+
+1. Dans `routes/web.php`, placer les routes de la question précédente (+ la route `signout`) dans un groupe préfixé par `admin`. Ajouter `admin/` à ces routes dans tous les `header()` de tous vos fichiers de vues.
+
+**Vérifier que tout fonctionne.**