TP5.md 4.0 KB

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

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.

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
  2. 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
  3. Dans chaque fichier remplacer toutes les références à des fichiers PHP par des références à des routes.

  4. 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.

  2. 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.

  3. 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 :

      use Illuminate\Support\Facades\DB;
      use PDO;
      
  4. 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.

  2. Supprimer tous les session_start() de tous vos fichiers.

  3. 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().

  4. 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.

  5. 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.

  6. 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.