TD6-4: La sécurité

Dans cette partie du TD, nous allons créer une zone sécurisée pour administrer le site.

Lecture recommandée: la documentation officielle de Symfony.com sur la sécurité

Configuration

Création du système de sécurité

Nous allons executer deux commandes, la première va créer l'entité `User`, qui correspond à un utilisateur dans la base:

symfony console make:user

La seconde va créer un système d'authentification pour cet utilisateur:

symfony console make:auth

Observez les fichiers config/packages/security.yaml et src/Security/AppAuthenticator.php (dont vous avez choisi le noms) qui ont été générés.

Enfin, utilisez:

symfony console make:registration

Pour générer la page et la vue du formulaire d'inscription. Regardez le code généré.

Créez ensuite une route dans config/routes.yaml pour app_logout:

app_logout:
    path: /logout

Utilisation dans la vue

Désormais, nous allons modifier notre vue pour afficher:

  • Le lien de déconnexion lorsque l'utilisateur est identifié
  • Le formulaire de login sinon

Pour cela, vous pouvez utiliser le chemin vers la page logout et la variable app.user dans Twig qui vous donnera un accès à l'utilisateur identifié dans l'application

Contrôleur sécurisé

Maintenant, écrivez un nouveau contrôleur, le AdminController qui servira à gérer les pages réservées à l'administration du site.

Vous pouvez pour cela vous inspirer du DefaultController existant.

Utilisez ensuite l'annotation @Route("/admin/") sur la classe AdminController, cette dernière est un préfixe, elle signifie que toutes les routes que vous définierai dans ce contrôleur seront préfixées par /admin/.

Testez que tout fonctionne bien en écrivant votre première action dans le contrôleur admin, et en essayant d'y accéder en étant identifié ou pas.