﻿1
00:00:01,200 --> 00:00:04,530
‫- : Bienvenue à la dernière vidéo de la section.

2
00:00:04,530 --> 00:00:07,950
‫Et dans cette section, nous avons en quelque sorte terminé notre

3
00:00:07,950 --> 00:00:11,350
‫projet, à la fois l'API et le site Web rendu, du

4
00:00:11,350 --> 00:00:12,910
‫moins pour le moment.

5
00:00:12,910 --> 00:00:17,180
‫Alors encore une fois, félicitations pour avoir atteint ce point et pour

6
00:00:17,180 --> 00:00:20,970
‫avoir assisté à plus de 30 heures de vidéo, toujours à

7
00:00:20,970 --> 00:00:22,573
‫l'écoute de ma voix.

8
00:00:23,670 --> 00:00:25,840
‫Quoi qu'il en soit, dans cette dernière

9
00:00:25,840 --> 00:00:28,260
‫vidéo, je voulais aborder rapidement certains sujets que

10
00:00:28,260 --> 00:00:31,650
‫nous aurions pu ajouter à l'API et au site Web, et

11
00:00:31,650 --> 00:00:34,810
‫vous les laisser en gros comme des défis si vous

12
00:00:34,810 --> 00:00:35,863
‫le souhaitez.

13
00:00:37,350 --> 00:00:40,160
‫Nous aurions donc pu ajouter un peu plus de

14
00:00:40,160 --> 00:00:42,500
‫logique métier à notre projet, par exemple, en

15
00:00:42,500 --> 00:00:46,310
‫ajoutant une restriction selon laquelle les utilisateurs ne peuvent consulter qu'une visite

16
00:00:46,310 --> 00:00:47,910
‫qu'ils ont réellement réservée.

17
00:00:47,910 --> 00:00:50,940
‫Et cela aurait beaucoup de sens, non?

18
00:00:50,940 --> 00:00:53,510
‫Je veux donc que vous essayiez cela par vous-même

19
00:00:53,510 --> 00:00:55,320
‫si vous en avez envie.

20
00:00:55,320 --> 00:00:58,450
‫Maintenant, ces défis, je ne vais pas les résoudre

21
00:00:58,450 --> 00:01:02,620
‫moi-même, à moins qu'il n'y ait vraiment beaucoup de demande pour l'un d'entre eux.

22
00:01:02,620 --> 00:01:04,190
‫Et j'ai en

23
00:01:04,190 --> 00:01:06,650
‫fait laissé ce genre de défis plus

24
00:01:06,650 --> 00:01:09,950
‫compliqués aux étudiants à faire eux-mêmes dans mes autres

25
00:01:09,950 --> 00:01:14,150
‫cours, et j'ai vraiment vu des résultats créatifs dans de nombreux cas.

26
00:01:14,150 --> 00:01:17,160
‫J'espère donc que vous en essayerez également quelques-uns.

27
00:01:17,160 --> 00:01:19,170
‫Maintenant, de toute façon, vous

28
00:01:19,170 --> 00:01:22,180
‫pouvez également implémenter des itinéraires de réservation imbriqués, par

29
00:01:22,180 --> 00:01:25,130
‫exemple, obtenir toutes les réservations pour un certain tour

30
00:01:25,130 --> 00:01:27,940
‫et obtenir toutes les réservations pour un certain

31
00:01:27,940 --> 00:01:30,080
‫utilisateur, donc en fonction des identifiants.

32
00:01:30,080 --> 00:01:33,690
‫Vous pouvez également améliorer considérablement les dates de la tournée, et ce que

33
00:01:33,690 --> 00:01:37,050
‫je veux dire par là, c'est que vous pouvez ajouter un champ

34
00:01:37,050 --> 00:01:40,230
‫de participants et un champ soldOut à chacune des dates.

35
00:01:40,230 --> 00:01:42,420
‫Et la date devient alors un

36
00:01:42,420 --> 00:01:44,770
‫peu comme une instance de la tournée.

37
00:01:44,770 --> 00:01:47,300
‫Ensuite, lorsqu'un utilisateur réserve réellement une visite,

38
00:01:47,300 --> 00:01:49,970
‫il doit sélectionner l'une des dates disponibles, puis

39
00:01:49,970 --> 00:01:51,860
‫votre réservation à l'une

40
00:01:51,860 --> 00:01:54,070
‫des dates augmentera le nombre de

41
00:01:54,070 --> 00:01:56,910
‫participants à la date jusqu'à ce qu'elle soit

42
00:01:56,910 --> 00:01:59,950
‫réservée, donc fondamentalement, lorsque les participants sont plus nombreux

43
00:01:59,950 --> 00:02:02,000
‫que la taille maximale du groupe.

44
00:02:02,000 --> 00:02:04,300
‫Maintenant, enfin, bien sûr, lorsque l'utilisateur souhaite

45
00:02:04,300 --> 00:02:06,760
‫réserver une certaine visite à une certaine

46
00:02:06,760 --> 00:02:09,800
‫date, vous devez vérifier si la visite est toujours disponible

47
00:02:09,800 --> 00:02:11,450
‫à cette date sélectionnée.

48
00:02:11,450 --> 00:02:12,290
‫D'accord?

49
00:02:12,290 --> 00:02:15,480
‫C'est donc en fait un défi assez sophistiqué

50
00:02:15,480 --> 00:02:18,180
‫mais aussi très amusant à mettre en

51
00:02:18,180 --> 00:02:21,480
‫œuvre, et cela ajouterait vraiment une logique commerciale significative

52
00:02:21,480 --> 00:02:22,883
‫à ce projet.

53
00:02:24,100 --> 00:02:26,040
‫Enfin, vous pouvez également implémenter certaines

54
00:02:26,040 --> 00:02:28,140
‫des fonctionnalités d'authentification avancées dont nous avons

55
00:02:28,140 --> 00:02:30,480
‫déjà parlé un peu plus tôt dans la

56
00:02:30,480 --> 00:02:32,150
‫section sur la sécurité.

57
00:02:32,150 --> 00:02:35,480
‫Par exemple, vous pouvez confirmer l'adresse e-mail d'un utilisateur en

58
00:02:35,480 --> 00:02:38,360
‫lui envoyant un e-mail avec un lien sur

59
00:02:38,360 --> 00:02:39,570
‫lequel il doit

60
00:02:39,570 --> 00:02:41,160
‫cliquer, et seulement après

61
00:02:41,160 --> 00:02:44,540
‫le clic, l'utilisateur est alors vraiment enregistré dans l'application et

62
00:02:44,540 --> 00:02:47,450
‫peut faire des choses comme acheter des visites.

63
00:02:47,450 --> 00:02:49,690
‫Vous pouvez également garder les utilisateurs

64
00:02:49,690 --> 00:02:52,400
‫connectés avec ce qu'on appelle des jetons d'actualisation.

65
00:02:52,400 --> 00:02:55,130
‫Et c'est encore un peu compliqué à mettre en

66
00:02:55,130 --> 00:02:57,900
‫œuvre, mais si vous cherchez comment cela fonctionne sur Google,

67
00:02:57,900 --> 00:03:00,330
‫je suis sûr que vous pouvez trouver une

68
00:03:00,330 --> 00:03:03,770
‫bonne solution ou que vous pouvez même en trouver une par vous-même.

69
00:03:03,770 --> 00:03:07,070
‫Enfin, vous pouvez également implémenter l'authentification à deux

70
00:03:07,070 --> 00:03:10,360
‫facteurs, mais celle-ci va encore plus loin.

71
00:03:10,360 --> 00:03:12,360
‫Donc, fondamentalement, lorsqu'un utilisateur se

72
00:03:12,360 --> 00:03:15,200
‫connecte, il reçoit quelque chose comme un

73
00:03:15,200 --> 00:03:17,920
‫message texte sur son téléphone avec un

74
00:03:17,920 --> 00:03:19,670
‫code qu'il doit

75
00:03:19,670 --> 00:03:23,370
‫insérer dans l'application afin d'être authentifié après cette deuxième étape.

76
00:03:23,370 --> 00:03:25,210
‫Ce sont donc de jolis défis

77
00:03:25,210 --> 00:03:28,140
‫que vous pourriez vraiment mettre en œuvre sur le site de

78
00:03:28,140 --> 00:03:29,463
‫l'API, essentiellement du projet.

79
00:03:30,400 --> 00:03:34,000
‫Mais il y a aussi des choses que vous pouvez faire sur le site Web.

80
00:03:34,000 --> 00:03:37,270
‫Par exemple, vous pouvez implémenter le formulaire d'inscription, qui

81
00:03:37,270 --> 00:03:40,380
‫devrait être très similaire au formulaire de connexion.

82
00:03:40,380 --> 00:03:43,720
‫Donc je ne l'ai pas vraiment fait parce que c'est tellement similaire

83
00:03:43,720 --> 00:03:44,790
‫au formulaire de

84
00:03:44,790 --> 00:03:48,540
‫connexion, et donc je ne voulais pas perdre de temps en faisant ça.

85
00:03:48,540 --> 00:03:50,930
‫Mais bien sûr, vous pouvez aller de l'avant et

86
00:03:50,930 --> 00:03:52,430
‫mettre en œuvre celui-ci également.

87
00:03:52,430 --> 00:03:55,680
‫Ensuite, une autre chose intéressante que vous pouvez faire sur le site

88
00:03:55,680 --> 00:03:57,980
‫Web est que sur la page de détail

89
00:03:57,980 --> 00:03:59,340
‫de la visite, vous

90
00:03:59,340 --> 00:04:01,890
‫pouvez autoriser un utilisateur à ajouter un avis directement

91
00:04:01,890 --> 00:04:05,010
‫sur le site Web, mais uniquement s'il a effectué cette visite.

92
00:04:05,010 --> 00:04:07,760
‫Vous devrez donc vérifier si l'utilisateur actuellement connecté

93
00:04:07,760 --> 00:04:10,270
‫a effectivement réservé la visite en cours,

94
00:04:10,270 --> 00:04:13,690
‫et aussi si l'heure de la visite est déjà passée.

95
00:04:13,690 --> 00:04:16,650
‫Et si c'est le cas, vous pouvez ajouter un formulaire

96
00:04:16,650 --> 00:04:18,690
‫à la page où l'utilisateur peut

97
00:04:18,690 --> 00:04:21,920
‫ajouter un nouvel avis, par exemple, en utilisant notre API d'avis.

98
00:04:21,920 --> 00:04:24,600
‫Ou aussi, et celui-ci est un peu lié,

99
00:04:24,600 --> 00:04:26,990
‫vous pouvez masquer toute la section de

100
00:04:26,990 --> 00:04:30,480
‫réservation sur la même page de détail de la visite si

101
00:04:30,480 --> 00:04:32,620
‫l'utilisateur actuel a réservé la visite.

102
00:04:32,620 --> 00:04:33,810
‫D'accord.

103
00:04:33,810 --> 00:04:36,250
‫Cela empêcherait alors le même utilisateur de réserver

104
00:04:36,250 --> 00:04:37,850
‫deux fois la même visite.

105
00:04:37,850 --> 00:04:40,990
‫Et puis, puisque vous le faites déjà sur le front-end,

106
00:04:40,990 --> 00:04:43,350
‫vous devez également empêcher les réservations

107
00:04:43,350 --> 00:04:45,981
‫en double sur le back-end de votre modèle.

108
00:04:45,981 --> 00:04:47,660
‫Ce sera en fait

109
00:04:47,660 --> 00:04:51,380
‫très similaire à empêcher les avis en double du même utilisateur.

110
00:04:51,380 --> 00:04:52,860
‫D'accord.

111
00:04:52,860 --> 00:04:54,160
‫En outre, vous

112
00:04:54,160 --> 00:04:57,250
‫pouvez implémenter une fonctionnalité de visite très agréable.

113
00:04:57,250 --> 00:04:59,590
‫Ainsi, lorsque vous avez quelque chose comme un bouton

114
00:04:59,590 --> 00:05:01,720
‫J'aime ou un bouton en forme de

115
00:05:01,720 --> 00:05:03,620
‫cœur sur la visite, puis lorsque

116
00:05:03,620 --> 00:05:06,120
‫l'utilisateur clique dessus, il est ajouté à ses favoris.

117
00:05:06,120 --> 00:05:07,340
‫Et puis sur

118
00:05:07,340 --> 00:05:11,940
‫le site Web, vous pouvez avoir une page de favoris ou simplement un panneau de

119
00:05:11,940 --> 00:05:14,860
‫favoris où l'utilisateur peut voir toutes ses visites préférées.

120
00:05:14,860 --> 00:05:17,210
‫Ce n'est donc pas vraiment difficile mais je

121
00:05:17,210 --> 00:05:19,713
‫pense que c'est très amusant à mettre en œuvre.

122
00:05:20,900 --> 00:05:23,230
‫Ensuite, sur la page du compte d'utilisateur,

123
00:05:23,230 --> 00:05:25,610
‫vous pouvez implémenter la page Mes avis,

124
00:05:25,610 --> 00:05:27,870
‫qui contient déjà un lien

125
00:05:27,870 --> 00:05:30,410
‫pour le moment, et sur cette page, l'utilisateur

126
00:05:30,410 --> 00:05:34,730
‫pourrait alors voir et peut-être aussi modifier et supprimer tous ses propres avis.

127
00:05:34,730 --> 00:05:36,660
‫Maintenant, si vous connaissez React,

128
00:05:36,660 --> 00:05:38,900
‫ce serait vraiment un moyen incroyable

129
00:05:38,900 --> 00:05:42,580
‫d'utiliser l'API Natours et d'entraîner vos compétences React en

130
00:05:42,580 --> 00:05:43,940
‫même temps.

131
00:05:43,940 --> 00:05:46,260
‫Et une fois que vous avez fait cela

132
00:05:46,260 --> 00:05:49,140
‫avec React, vous pouvez en fait recréer la page entière

133
00:05:49,140 --> 00:05:51,790
‫en tant qu'application d'une seule page avec React ou

134
00:05:51,790 --> 00:05:53,290
‫quelque chose comme ça.

135
00:05:53,290 --> 00:05:57,010
‫Donc, comme Angular ou Vue fonctionnerait également pour cela.

136
00:05:57,010 --> 00:05:57,843
‫À droite.

137
00:05:57,843 --> 00:06:00,626
‫Ce serait donc vraiment bien si vous faisiez

138
00:06:00,626 --> 00:06:03,933
‫cela, et j'aimerais vraiment vraiment que cela soit mis en œuvre.

139
00:06:04,770 --> 00:06:07,310
‫Enfin, pour les administrateurs, vous pouvez

140
00:06:07,310 --> 00:06:09,800
‫implémenter les pages Gérer, où les

141
00:06:09,800 --> 00:06:13,180
‫administrateurs peuvent ensuite créer, lire, mettre à jour

142
00:06:13,180 --> 00:06:15,300
‫et supprimer toutes les

143
00:06:15,300 --> 00:06:18,923
‫ressources, donc toutes les visites, utilisateurs, avis et réservations.

144
00:06:19,860 --> 00:06:23,130
‫Une fois de plus, React conviendrait peut-être pour cela, ou

145
00:06:23,130 --> 00:06:25,770
‫si ce n'est pas le cas, alors

146
00:06:25,770 --> 00:06:28,480
‫juste du Javascript régulier sur le front-end fonctionnerait

147
00:06:28,480 --> 00:06:33,270
‫également très bien, par exemple, mettre à jour toutes ces ressources à l'aide d'appels Ajax.

148
00:06:33,270 --> 00:06:36,530
‫Il y a donc vraiment une tonne de choses que vous

149
00:06:36,530 --> 00:06:39,070
‫pourriez mettre en œuvre afin d'améliorer encore plus

150
00:06:39,070 --> 00:06:41,030
‫notre projet et notre site Web.

151
00:06:41,030 --> 00:06:42,180
‫À droite?

152
00:06:42,180 --> 00:06:43,860
‫Et je suis sûr que

153
00:06:43,860 --> 00:06:46,200
‫vous pourriez même trouver d'autres trucs ici.

154
00:06:46,200 --> 00:06:48,450
‫Encore une fois, ce serait vraiment génial

155
00:06:48,450 --> 00:06:52,120
‫de voir certaines de ces fonctionnalités réellement mises en œuvre par vous.

156
00:06:52,120 --> 00:06:54,910
‫Et si vous en faites un ou même plusieurs,

157
00:06:54,910 --> 00:06:57,240
‫assurez-vous simplement de partager votre résultat dans

158
00:06:57,240 --> 00:06:59,153
‫la section Q&R du cours.

159
00:07:00,120 --> 00:07:04,190
‫Bref, c'est tout pour cette vidéo et pour cette section

160
00:07:04,190 --> 00:07:07,260
‫et aussi presque pour ce cours.

161
00:07:07,260 --> 00:07:10,750
‫Donc bon travail encore une fois et maintenant, tout ce

162
00:07:10,750 --> 00:07:13,620
‫qu'il reste à faire est de préparer l'application

163
00:07:13,620 --> 00:07:15,460
‫pour le déploiement, puis

164
00:07:15,460 --> 00:07:19,500
‫de la déployer sur un serveur de production en direct pour vraiment

165
00:07:19,500 --> 00:07:21,673
‫partager notre projet avec le monde.

