|
|
@@ -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.**
|