Vérification des numéros de téléphone dans Symfony 4 PHP avec Authy et Twilio SMS
Temps de lecture: 7 minutes
Introduction
L'une des méthodes les plus appropriées pour s'assurer que la base de données de votre application ne contient que des numéros de téléphone valides enregistrés pour chaque utilisateur consiste à vérifier correctement le numéro de téléphone pendant le processus d'enregistrement. Cela permet, entre autres, de garantir l'intégrité de l'application, de réduire le nombre d'enregistrements faux ou frauduleux et de convertir facilement ces données à des fins de marketing.
Dans ce tutoriel, je vais vous montrer comment vérifier les numéros de téléphone dans un projet Symfony 4 en exploitant l'API Verify de Twilio. Ensemble, nous allons créer une application qui va capturer les numéros de téléphone des utilisateurs, puis utiliser Twilio pour envoyer un code à 6 chiffres par SMS. Après réception de ce code, l'utilisateur devra le saisir pour que la vérification soit correcte.
Une fois que nous aurons terminé le processus - étape par étape - de mise en œuvre de cette fonctionnalité, vous saurez structurer un flux d'enregistrement approprié qui prend en compte la vérification du numéro de téléphone.
Conditions préalables
Pour tirer le meilleur parti de ce tutoriel, il est préférable d'avoir des connaissances raisonnables en matière de programmation orientée objet avec PHP. Pour rendre le tutoriel plus accessible aux débutants dans Symfony, je m'efforcerai de décomposer toute logique ou implémentation complexe.
Assurez-vous que Composer est installé globalement sur votre ordinateur. Enfin, si vous avez un compte Twilio existant, vous serez opérationnel en un rien de temps. Si vous n'avez pas encore de compte, ne vous inquiétez pas : nous allons en créer un plus tard dans cet article.
Ce que nous allons construire
Comme mentionné précédemment, l'application que nous allons construire dans cet article permettra de capturer le numéro de téléphone des utilisateurs pendant le processus d'enregistrement. Les détails des utilisateurs ne seront pas conservés dans la base de données tant que leur numéro de téléphone n'aura pas été vérifié.
Pour réussir à mettre en œuvre ce flux, nous allons exploiter un service spécifiquement mis à disposition par Twilio nommé API Authy. Ce service vérifie les numéros de téléphone en envoyant des codes par message vocal et par SMS. Dans le cadre de ce tutoriel, nous enverrons un code à 6 chiffres par SMS.
Voici à quoi ressemble le workflow de vérification :
- Création d'une nouvelle application Authy afin d'obtenir une clé API
- Envoi d'un token de vérification par SMS une fois qu'un utilisateur s'enregistre
- Vérification du token de vérification et enregistrement des détails de l'utilisateur dans la base de données
Une fois cette procédure terminée, vous disposez d'une application capable de capturer et de confirmer de manière transparente les numéros de téléphone des utilisateurs dans le cadre du processus d'intégration, comme illustré ci-dessous :
Installation et configuration d'un nouveau projet Symfony
Pour commencer, nous allons utiliser Composer pour créer une nouvelle application Symfony. Ouvrez un terminal, accédez au dossier de votre choix pour le développement de projet sur l'ordinateur et exécutez la commande suivante :
La commande ci-dessus crée l'application dans un nouveau dossier nommé phone-verify-twilio
et installe les dépendances pertinentes pour le projet. Une fois l'installation terminée, changez de répertoire dans le nouveau dossier de projet et démarrez le serveur Web intégré, comme indiqué ci-dessous :
Cette opération installe la dernière version de l'outil dans le projet.
Configuration d'un compte Twilio
Pour accéder aux API et autres services offerts par Twilio, un compte Twilio est nécessaire. Cliquez ici pour commencer avec un compte Twilio gratuit.
Vérifiez votre numéro de téléphone et accédez au tableau de bord une fois que vous avez terminé. Vous obtenez une page similaire à celle illustrée ci-dessous :
Cliquez ensuite sur l'icône All Products and Services (Tous les produits et services) et faites défiler la liste pour sélectionner Authy :.
Sur la page de l'API Authy, cliquez sur le bouton Get Started (Commencer) et vérifiez votre numéro de téléphone pour pouvoir utiliser Authy.
Une fois la vérification du numéro de téléphone terminée, cliquez sur Applications dans la barre latérale. Cette opération affiche la liste de toutes les applications Authy que vous avez créées jusqu'à présent. Étant donné qu'aucune application n'a été créée pour le moment, cliquez sur le bouton Create Application (Créer une application).
Ensuite, donnez un nom convivial à votre nouvelle application. Je nomme la mienne verify-app et je clique sur Create (Créer).
Une fois ce processus terminé, vous avez créé avec succès une application Authy avec les identifiants requis pour une connexion. Remarque : vous devrez revenir sur cette page ultérieurement pour la clé API.
Création d'une classe d'entité
Au cours du processus d'enregistrement, nous avons l'intention de capturer les détails concernant nos utilisateurs et de vérifier leur numéro de téléphone avant de continuer à enregistrer leurs informations dans la base de données. Commençons par créer un modèle qui représente un utilisateur. Pour ce faire, nous allons utiliser le bundle maker qui est installé avec Symfony afin de générer une nouvelle entité « User ». Exécutez la commande suivante à cet effet :
La commande ci-dessus entraîne la création de deux nouveaux fichiers, src/Entity/User.php
et src/Repository/UserRepository.php
. Ouvrez le fichier User.php
et configurez-le comme suit :
Ici, nous avons créé des champs pour la base de données.
Création d'un contrôleur par défaut (DefaultController)
Ensuite, nous devons générer un nouveau contrôleur pour traiter le rendu de la page par défaut de notre application. Ouvrez le terminal et exécutez la commande suivante :
Une fois cette opération effectuée, vous obtenez deux nouveaux fichiers, src/Controller/DefaultController.php
et une page de vue correspondante dans templates/default/index.html.twig
. Ouvrez le fichier DefaultController.php
et remplacez son contenu par ce qui suit :
Le contrôleur ci-dessus affichera le contenu dans le fichier default/index.html.twig
. Ouvrez template/default/index.html.twig
et collez-y les éléments suivants :
Générer le contrôleur de sécurité (Security Controller)
Dans cette section, nous générons un nouveau contrôleur qui traitera le processus de connexion d'un utilisateur :
Ouvrez le contrôleur que vous venez de créer et remplacez son contenu par le code suivant :
Créer la page de connexion
Ouvrez le fichier templates/security/index.html.twig
et configurez-le comme indiqué ici :
Ici, nous avons créé les champs de saisie nécessaires à l'authentification d'un utilisateur.
Générer le contrôleur d'enregistrement (RegistrationController)
Générez un contrôleur pour traiter l'enregistrement des utilisateurs avec :
Ouvrez le fichier src/Controller/RegistrationController.php
et collez les éléments suivants :
Créer la page d'enregistrement
Collez le contenu ci-dessous pour la page d'enregistrement. Le fichier se trouve dans le dossier templates/registration
:
Nous avons créé ici des champs de saisie pour le nom d'utilisateur, l'adresse e-mail, l'indicatif du pays, le numéro de téléphone et le mot de passe.
Ajout d'une feuille de style
Créez un nouveau dossier nommé css
dans le dossier public
et créez un autre fichier nommé style.css
dans le dossier que vous venez de créer. Collez le code suivant dans le nouveau fichier :
Mise à jour du modèle de base
Mettez à jour le modèle de base comme suit :
Si vous exécutez l'application à ce moment-là avec php bin/console server:run
, vous verrez la page ci-dessous en accédant à http://localhost:8000 :
À ce stade, notre application est prête pour que les utilisateurs commencent à s'enregistrer et à vérifier leur numéro de téléphone de sorte à accéder aux zones sécurisées de notre application.
Mise à jour du fichier DotEnv
Dans le répertoire racine du projet, nous allons mettre à jour le fichier .env
avec les identifiants de la base de données, ainsi que nos identifiants Twilio. Ouvrez le fichier et configurez-le comme indiqué ci-dessous :
Remarque : n'oubliez pas de remplacer les éléments ci-dessous par les identifiants appropriés :
- db_user : à remplacer par votre nom d'utilisateur de base de données
- db_password : à remplacer par votre mot de passe de base de données
- db_name : à remplacer par le nom de votre base de données
- TWILIO_AUTHY_API_KEY : à remplacer par la clé API de production obtenue à partir du tableau de bord de l'application Authy.
Exécutez ensuite la commande php bin/console doctrine:database:create
pour créer une base de données avec la valeur de nom de base de données. Pour l'instant, la base de données ne contient toujours pas de tables. Exécutez la commande suivante pour demander à Doctrine de créer les tables en fonction de l'entité User créée précédemment.
Capture du numéro de téléphone utilisateur et envoi d'un code de vérification
Revenons au RegistrationController. Mettez à jour le contenu comme suit :
Ce que nous avons ajouté à RegistrationController()
, c'est une méthode nommée registerUsers()
. Cette méthode utilise le composant HttpFoundation pour capturer les entrées utilisateur à des fins de vérification.
Enfin, nous avons défini les détails des utilisateurs dans la session. L'objectif est d'obtenir ces détails à partir de la session une fois que le numéro de téléphone de l'utilisateur a été vérifié et enregistré dans la base de données. Cela garantit que nous remplissons la base de données uniquement avec les détails des utilisateurs vérifiés.
Création d'un contrôleur d'accueil (HomeController) et validation du code de vérification
Maintenant, nous allons créer un contrôleur qui traite la vérification du numéro de téléphone de l'utilisateur et enregistre les détails dans la base de données. Pour ce faire, exécutez la commande suivante :
Accédez au nouveau fichier créé par la commande ci-dessus dans /src/Controller/HomeController.php
et remplacez son contenu par ce qui suit :
Nous avons créé une méthode pour vérifier le code saisi par les utilisateurs et nous l'avons enregistré dans la base de données.
Page d'accueil
Mettez également à jour le fichier index.html.twig
généré pour HomeController()
avec le contenu suivant :
Cette page s'affiche uniquement pour les utilisateurs dont le numéro de téléphone a été vérifié :
Créer une page de vérification
Ici, nous allons créer une page où les utilisateurs peuvent saisir le code à 6 chiffres qu'ils ont reçu et obtenir la réponse appropriée en fonction de l'état de vérification du code. Pour commencer, accédez au dossier template/home
et créez un nouveau fichier nommé verify.html.twig
, puis collez-y ce qui suit :
Si le code de vérification saisi par l'utilisateur est incorrect, un message s'affiche comme indiqué ci-dessous :
Si le code est correct, l'utilisateur est redirigé vers la page de connexion et reçoit un message indiquant que le numéro de téléphone a été vérifié. Il peut alors se connecter pour afficher la page protégée :
Mise à jour du fichier Security.yaml
Mettez à jour le contenu du fichier ./config/packages/security.yaml
comme suit :
Enfin, ajoutez la route de déconnexion au fichier ./config/routes.yaml
:
Test de l'application
Nous pouvons désormais tester l'application. N'oubliez pas de redémarrer le serveur s'il ne fonctionne pas avec php bin/console server:run
. Accédez à http://localhost:8000 et essayez d'utiliser l'application en enregistrant un utilisateur :
Conclusion
Dans ce tutoriel, nous avons appris à configurer un nouveau projet Symfony et à restructurer notre application pour capturer le numéro de téléphone d'un utilisateur, en veillant à ce que le numéro de téléphone soit vérifié avant que les détails de cet utilisateur soient enregistrés dans la base de données. Grâce à l'API Authy de Twilio, notre application peut maintenant inclure des utilisateurs avec des numéros de téléphone vérifiés.
Veuillez noter que le flux d'enregistrement mis en œuvre dans ce tutoriel peut aussi être implémenté pour un projet existant ou un nouveau projet comme décrit ici.
J'espère que vous avez trouvé ce tutoriel utile. N'hésitez pas à explorer le code source ici sur GitHub et à consulter la documentation officielle de Twilio pour en savoir plus sur l'API Authy et les autres ressources.
Olususi Oluyemi est un passionné de technologie, mordu de programmation et accro au développement Web, qui adore découvrir les nouvelles technologies.
Twitter : https://twitter.com/yemiwebby
GitHub : https://github.com/yemiwebby
Site Web : https://yemiwebby.com.ng/
Articles associés
Ressources connexes
Twilio Docs
Des API aux SDK en passant par les exemples d'applications
Documentation de référence sur l'API, SDK, bibliothèques d'assistance, démarrages rapides et didacticiels pour votre langage et votre plateforme.
Centre de ressources
Les derniers ebooks, rapports de l'industrie et webinaires
Apprenez des experts en engagement client pour améliorer votre propre communication.
Ahoy
Le hub de la communauté des développeurs de Twilio
Meilleures pratiques, exemples de code et inspiration pour créer des expériences de communication et d'engagement numérique.