Ce tutoriel vous guide dans la création d'une application SaaS avec Symfony, y compris la gestion de l'authentification des utilisateurs, la vérification des emails, la génération de chemin d'accès pour chaque groue d'utilisateur et la mise en place des paiements avec Stripe.
-
Créez un nouveau projet Symfony :
symfony new tutoSaas --webapp cd tutoSaas -
Démarrez le Docker Symfony pour obtenir une base de données et un mailer :
docker-compose up -d
Important !!!
Ajouter cette ligne dans le fichier .env.local:
DATABASE_URL="postgresql://root:********@host.docker.internal:32778/saas2?serverVersion=16&charset=utf8"On ne peut accéder à la base de donnée postgreSQL depuis symfony CLI et le site web qu'avec cette ligne de code.
-
Créez un utilisateur :
symfony console make:user
-
Installez le package pour la vérification des emails :
composer require symfonycasts/verify-email-bundle
-
Controle du fonctionnement de mailpit : Ce simulateur de mail est fourni par défaut avec Symfony. il démarre avec docker-compose et est accessible à l'adresse http://localhost:8025 il faut ajouter dans .env.local le paramètre MAILER_DSN=smtp://mailer:1025
-
Envoi et réception de mails : lors de l'envoi du mail à l'enregistrement, le mail est stocké pour l'envoi mais pas envoyé immédiatement. avec la barre symfony on peut voir les mails qui ont été envoyés mais pas encore reçus. il faut donc l'envoyer manuellement.
symfony console messenger:consume async
-
Créez le formulaire d'enregistrement :
symfony console make:registration-form
Ce formulaire permet de vérifier l'email en envoyant un email de confirmation.
-
Pour la démonstration, utilisez l'email
test@test.com. Vous pouvez changer cette adresse plus tard. Le nom "Bot" est utilisé pour l'envoi des emails.
-
Créez le formulaire de connexion :
symfony console make:auth
Choisissez l'option 1. Login form Authenticator.
- Nom de classe :
AppAuthenticator - Nom du contrôleur :
SecurityController
Note :
make:authest déprécié, il est préférable d'utilisermake:security. - Nom de classe :
-
Créez une migration pour la base de données :
symfony console make:migration
-
Exécutez la migration :
symfony console doctrine:migrations:migrate
-
Ouvrez la page d'enregistrement :
http://127.0.0.1:8000/register
-
Entrez les informations suivantes :
- Email :
test@test.com - Mot de passe :
test
- Email :
-
Après avoir validé, une erreur s'affiche car la page d'accueil n'existe pas encore. Toutefois, dans la debug bar de Symfony, vous verrez qu'un email est en cours d'envoi (en attente dans la queue).
-
Dans la debug bar, recherchez sfServer pour ouvrir la boîte mail (
mailpitdans le container Docker) et exécutez la commande suivante pour consommer le message :symfony console messenger:consume -vv
-
Vous recevrez l'email de confirmation, cliquez sur le lien et vous pourrez maintenant vous connecter à l'application via :
http://127.0.0.1:8000/login
-
Créez le contrôleur pour la page d'accueil :
symfony console make:controller Home
-
Créez le fichier
_navbar.html.twig: Je ne rentre pas dans les détails mais elle est reproductible. il suffit de copier le contenu du fichier_navbar.html.twigainsi que les lignes d'accès aux routes bootstrap dans le fichierbase.html.twig. -
quelque modifications ont été apportées dans le css pour le rendu bootstrap.
- description des roles
dans le fichier
security.yaml, on édite les roles et les permissions. pour l'instant on a deux roles :
- ROLE_USER : utilisateur
- ROLE_ADMIN : administrateur
- ROLE_SUPER_ADMIN : administrateur super
-
création du contrôleur AdminAccount pour la gestion des comptes
symfony console make:controller AdminAccount