‫Narrateur : Nous sommes donc
‫actuellement en train de mettre la touche finale à
‫notre API, et l'une des choses que
‫nous devons faire maintenant est de
‫corriger certaines des authentifications et autorisations dans toutes nos ressources.
‫Et nous allons commencer ici avec notre ressource de tournée.
‫Et puisque tous les éléments
‫d'authentification et d'autorisation sont toujours définis sur les déclarations
‫d'itinéraires, eh bien, nous
‫allons travailler ici sur le fichier des itinéraires de tournée.
‫Donc, cette API de tournée que nous avons
‫ici est essentiellement ce que nous voulons exposer au monde.
‫Ainsi, par exemple, nous pourrions souhaiter
‫autoriser d'autres sites de voyage à intégrer nos circuits
‫dans leur propre site Web.
‫Et c'est donc à cela que sert cette API.
‫Et donc par conséquent, nous n'aurons aucune autorisation sur
‫les demandes de tournées.
‫Droit?
‫Et donc nous devrions en fait nous débarrasser de celui
‫que nous avons actuellement.
‫Droit?
‫Alors, celui-ci.
‫Donc, en obtenant toutes
‫les visites, nous devons maintenant
‫le protéger, et seuls les utilisateurs authentifiés peuvent donc l'utiliser.
‫D'accord?
‫Mais encore une fois, cela
‫n'a pas beaucoup de sens, car vous
‫voulez exposer cette partie de l'API à tout le monde.
‫Alors, débarrassons-nous de ça.
‫Cependant, pour les actions de création ou de modification de visites, nous
‫souhaitons uniquement autoriser les guides
‫principaux et les administrateurs à effectuer ces actions.
‫Alors bien sûr, pas d'utilisateurs normaux, et
‫aussi pas de guides normaux.
‫Donc, juste des administrateurs et des guides principaux.
‫Et donc mettons cela ici en fait.
‫Contrôleur d'authentification. protéger
‫et authcontroller. Restreindre.
‫Administrateur
‫et guide principal.
‫Donnez-lui une sauvegarde
‫ici, et ça a l'air très bien.
‫Et ensuite, nous voulons faire la même chose avec l'édition.
‫Droit?
‫Donc, nous l'avons déjà fait en fait dans
‫l'entête, et donc copions simplement ce que nous avons ici pour patcher également.
‫Donnez-lui une sauvegarde, et maintenant cela semble parfait.
‫D'accord?
‫Donc tout le
‫reste, même une seule visite ici, est
‫bien sûr gratuit pour tout le monde, d'accord ?
‫Et il en va de même pour obtenir les meilleures tournées,
‫ainsi que pour obtenir les statistiques de tournée.
‫Maintenant, ici, à propos du forfait mensuel,
‫eh bien, nous pourrions également vouloir le restreindre.
‫Seulement, par exemple, à tout le monde sauf aux utilisateurs normaux.
‫D'accord?
‫Donc, copiez celui-ci ici
‫également, sauvegardez-le, puis ajoutez également les guides normaux.
‫Bien?
‫Et donc, cela semble parfait à ce stade, je pense.
‫D'accord?
‫Donc, en gros, notre routeur de tournée est maintenant terminé.
‫Parfait.
‫Et je ne vais pas
‫tester tout ça car on sait déjà que ça marche.
‫Bien?
‫Alors, fermons
‫celui-ci et passons directement au suivant.
‫Alors, ces premiers parcours
‫ici sont bien entendu ouverts à tous.
‫Alors, inscrivez-vous, connectez-vous, oubliez le
‫mot de passe et réinitialisez le mot de passe.
‫Pour aucun d'entre eux, vous devez être connecté.
‫Droit?
‫Mais, vous devez être connecté
‫afin d'être authentifié pour mettre à jour votre mot de passe, pour
‫obtenir vos propres informations, pour
‫mettre à jour ou supprimer votre propre compte, et
‫vraiment pour toutes ces autres opérations
‫ici aussi.
‫Nous ne voulons donc pas que le public obtienne des informations
‫sur tous les utilisateurs.
‫Nous ne voulons pas non plus que quiconque supprime
‫des utilisateurs ou mette à jour des utilisateurs, et vraiment aucune de
‫ces opérations ici ne devrait être gratuite pour le public.
‫D'accord?
‫Donc, pour tous ces
‫itinéraires ici, à partir de
‫ce point, vous devrez toujours être authentifié.
‫Bien?
‫Et donc, nous pouvons maintenant aller de
‫l'avant et ajouter ce contrôleur d'authentification. protéger à toutes ces routes, mais en
‫fait, nous pouvons faire mieux que cela, n'est-ce pas ?
‫Donc, pour ce
‫faire, gardons à l'esprit que cette fonction de protection
‫n'est en réalité qu'un middleware.
‫Et rappelez-vous également que le
‫middleware s'exécute toujours en séquence, n'est-ce pas ?
‫Maintenant, avec ce routeur que nous avons
‫ici, que nous avons créé au
‫début, c'est un peu comme une mini application.
‫Vous vous en souvenez ?
‫Et donc, tout comme avec l'application
‫habituelle, nous pouvons également utiliser un middleware sur ce routeur.
‫D'accord?
‫Et donc, nous pouvons faire quelque chose comme ça.
‫Routeur. utiliser,
‫et maintenant authcontroller. protéger, et c'est
‫tout.
‫Et ce
‫que cela fera, c'est essentiellement protéger toutes
‫les routes qui viennent après ce point.
‫D'accord?
‫Et encore une fois, c'est parce que
‫le middleware s'exécute en séquence.
‫Et donc après ces quatre fonctions middleware,
‫car rappelez-vous que techniquement, il
‫s'agit toujours d'un middleware,
‫alors le middleware suivant dans la pile est cette protection.
‫Et cela n'appellera alors le middleware suivant
‫que si l'utilisateur est authentifié.
‫Et le prochain middleware dans ce cas est ce patch ici.
‫D'accord?
‫Et donc, encore une
‫fois, cela signifie
‫que toutes ces routes vers tous
‫ces middlewares, techniquement, qui viennent après celui-ci sont désormais protégées.
‫Et donc, nous pouvons aller de l'avant et supprimer cette
‫protection de tous.
‫D'accord?
‫Et juste pour vous prouver que cela
‫fonctionne toujours maintenant, allons de l'avant et obtenons les informations sur moi.
‫Donc, fondamentalement, l'utilisateur actuel.
‫Donc, si je lance
‫maintenant ceci, vous verrez que cela fonctionne toujours.
‫Et si je supprime l'authentification, alors
‫il dit que nous ne sommes pas connectés.
‫Et c'est exactement ce que fait ce middleware de protection.
‫Droit?
‫Donc, il va maintenant être de retour au travail.
‫Tellement parfait!
‫C'est une petite astuce sympa pour protéger
‫toutes les routes en même temps,
‫généralement en utilisant un
‫middleware qui précède toutes ces autres routes.
‫D'accord?
‫Et par exemple, si nous
‫déplaçons maintenant cela un peu vers le haut, comme ceci
‫par exemple, nous devrons également être
‫connectés pour utiliser le mot de passe oublié.
‫Droit?
‫Alors, laissez-moi vous le prouver.
‫D'accord?
‫Et donc généralement, bien sûr, nous n'avons pas besoin d'être
‫connecté pour oublier notre mot
‫de passe, car cela n'aurait aucun sens, n'est-ce pas ?
‫Mais pour le moment, puisque nous déplaçons ce
‫middleware un peu vers le haut, il dit "vous n'êtes pas connecté".
‫D'accord?
‫Et donc vraiment, cela prouve que ce contrôleur d'authentification ici
‫fait son travail.
‫Alors, protégez toutes les routes -- après
‫ce middleware.
‫D'accord.
‫Maintenant, rappelez-vous également comment nous avons dit
‫que toutes ces actions ici ne devraient être exécutées
‫que par les administrateurs,
‫et nous pouvons donc maintenant utiliser exactement la même technique que
‫celle que nous avons utilisée ici pour protéger toutes ces routes.
‫Alors, routeur.
‫utiliser, authcontroller. restreindre, administrateur.
‫D'accord?
‫Et maintenant, seuls les administrateurs seront en mesure d'obtenir
‫tous les utilisateurs, de créer de nouveaux utilisateurs, d'obtenir à nouveau des
‫utilisateurs et de corriger et supprimer des utilisateurs.
‫Bien?
‫Et donc à partir
‫de ce point, toutes les routes sont non
‫seulement protégées, mais également restreintes uniquement à l'administrateur.
‫Mais bien sûr, ceux qui arrivent avant que
‫tous ceux qui sont connectés puissent y accéder, d'accord ?
‫Alors laissez-moi vous le prouver.
‫Donc, je vais me connecter, pas avec admin,
‫mais avec testuser.
‫D'accord?
‫Et donc nous nous sommes
‫connectés avec succès, essayons maintenant de voir tous les utilisateurs.
‫Et maintenant, il dit que vous n'êtes pas connecté.
‫Eh bien, nous sommes actuellement connectés,
‫mais nous avons oublié d'ajouter l'autorisation ici.
‫Alors, jeton au porteur, renvoyez-le, et maintenant nous voyons que
‫vous n'avez pas la permission de jouer.
‫Mais maintenant, lorsque nous changeons cela en administrateur, nous nous connectons
‫donc en tant qu'administrateur maintenant,
‫et maintenant, lorsque nous obtenons tous les utilisateurs, cela
‫fonctionne bien sûr.
‫Tellement parfait!
‫Et cela termine
‫également l'authentification et l'autorisation de ces utilisateurs.
‫Mais juste pour
‫refléter cela dans Postman, revenons en arrière et
‫mettons donc l'autorisation ici, partout.
‫D'accord?
‫Et encore une fois, c'est
‫parce que plus tard, nous allons créer une
‫documentation API basée sur la collection que nous avons créée ici.
‫Et puis, il est important que nous marquions
‫celui-ci ici comme protégé.
‫Sauvegarde le.
‫Enregistrez celui-ci également.
‫Et la même chose pour mettre à jour et supprimer l'utilisateur.
‫Donc, jeton au porteur, sauvegarde, et idem pour
‫la mise à jour.
‫D'accord, et en fait puisque nous faisons ça, faisons de
‫même avec tous les autres.
‫Donc, pas les critiques, celle-là
‫est pour un peu
‫plus tard, mais vraiment pour les visites.
‫Donc, ici, nous n'avons plus besoin d'authentification,
‫alors gardons cela.
‫Pour oublier, nous n'avons pas non plus besoin
‫d'autorisation, mais pour créer, nous avons maintenant besoin du jeton du porteur.
‫D'accord?
‫Aussi pour la mise à jour, et il
‫est donc logique de les protéger également ici dans Postman.
‫Maintenant, celui-ci l'avait déjà, car nous
‫avons en fait utilisé celui-ci pour le tester
‫en premier lieu.
‫Donc celui-ci ne l'avait pas, mais le forfait mensuel d'obtention, nous
‫avons également protégé celui-ci.
‫Ajoutez également le jeton du porteur
‫ici, et je pense
‫donc qu'avec cela, nous sommes vraiment terminés maintenant, avec ceux-ci aussi.
‫Et donc ce que nous devons faire pour terminer
‫maintenant cette partie est ici, corrigez également la même chose sur les critiques.
‫Et la première chose que
‫je veux faire est de protéger essentiellement toutes les
‫routes qui ont à voir avec les critiques.
‫Ainsi, nous voulons que personne
‫qui n'est pas authentifié obtienne, publie, modifie ou supprime des avis.
‫D'accord?
‫On dit routeur. utilisation,
‫contrôleur d'authentification. protéger.
‫D'accord?
‫Et cela signifie qu'à partir de ce
‫point, personne ne peut accéder à aucune de
‫ces routes sans être authentifié.
‫Mais nous pouvons supprimer cette partie ici, d'accord ?
‫Et maintenant, avec l'authentification à
‫l'écart, pensons à l'autorisation.
‫Ainsi, tout d'abord, seuls les utilisateurs devraient
‫pouvoir publier des avis.
‫Pas de guides, et aussi pas d'administrateurs.
‫Et donc cette partie, nous l'avons déjà en fait ici.
‫D'accord?
‫Ensuite, les administrateurs devraient pouvoir mettre à jour
‫ou supprimer des avis, tout comme les utilisateurs réguliers,
‫bien sûr, afin qu'ils puissent ensuite modifier
‫ou supprimer leurs propres avis.
‫Et enfin, les guides ne peuvent pas ajouter, modifier ou supprimer des avis.
‫Étant donné que les guides sont ceux qui effectuent le travail, il
‫serait donc étrange qu'ils puissent publier des
‫critiques eux-mêmes ou modifier les critiques d'autres personnes, n'est-ce pas ?
‫Et donc mettons ce que nous venons de décrire dans le code.
‫Donc, fondamentalement, les correctifs et les suppressions
‫sont limités aux utilisateurs,
‫ou en
‫fait uniquement à l'utilisateur et à l'administrateur.
‫Et puis la même chose pour la suppression.
‫D'accord?
‫Et donc vous voyez que maintenant les guides et
‫les guides principaux n'ont plus rien à voir avec les critiques.
‫Tout ce qu'ils peuvent faire, c'est vraiment obtenir des
‫avis, mais ne pas les modifier ni les publier du tout, d'accord ?
‫Et donc, rapidement maintenant dans Postman, mettons
‫cela ici aussi.
‫Donc, créer de nouveaux avis a déjà l'autorisation, obtenir tous les
‫avis en a également besoin maintenant.
‫Donc, avec le jeton du porteur, sauf que, ici,
‫le jeton du porteur aussi.
‫Maintenant, écrivez et obtenez également une seule critique.
‫En fait, ordonnons gentiment cela aussi, de sorte
‫qu'ils soient tous en quelque sorte dans le même ordre.
‫Et maintenant, à propos de ces deux
‫là, ils sont également protégés.
‫Droit?
‫Parce qu'en fin de compte, ce sont les
‫gestionnaires d'avis qui sont en fait appelés pour les deux.
‫Et donc ici, nous devons également ajouter ce jeton au porteur.
‫D'accord?
‫Alors maintenant, en gros, le
‫seul moyen d'accéder aux données sur les avis est d'appeler toutes les visites.
‫Droit?
‫Du moins pour les personnes non authentifiées.
‫D'accord?
‫Alors, terminons tout cela, et donc je pense
‫que nous sommes maintenant prêts à partir, et nous
‫avons également terminé cette partie.
‫Nettoyons juste un peu ici.
‫Et oui, je pense que c'est ça.
‫Donc, avec cela, nous avons en fait terminé
‫les parties d'authentification et d'autorisation de nos trois ressources, nous sommes donc
‫vraiment sur le point de terminer notre API ici.
‫Il ne reste qu'une petite quantité de choses à faire, et
‫nous allons donc faire tout cela dans
‫le reste de cette section.