﻿1
00:00:01,290 --> 00:00:03,730
‫Instructeur : Très bien, créons maintenant ces nouveaux

2
00:00:03,730 --> 00:00:06,670
‫utilisateurs, sur la base du modèle que nous venons de

3
00:00:06,670 --> 00:00:09,093
‫mettre en œuvre dans la dernière vidéo.

4
00:00:10,630 --> 00:00:14,180
‫Ainsi, nous effectuerons la plupart des tâches liées aux utilisateurs, telles que

5
00:00:14,180 --> 00:00:17,350
‫la création de nouveaux utilisateurs, la connexion des utilisateurs ou

6
00:00:17,350 --> 00:00:20,933
‫la mise à jour des mots de passe dans le contrôleur d'authentification.

7
00:00:22,190 --> 00:00:25,800
‫Donc, tout ce qui est vraiment lié à l'authentification ne sera

8
00:00:25,800 --> 00:00:28,550
‫pas dans le contrôleur d'utilisateur que nous avons

9
00:00:28,550 --> 00:00:30,250
‫réellement créé auparavant, mais

10
00:00:30,250 --> 00:00:33,313
‫à la place, nous allons créer un contrôleur d'authentification.

11
00:00:35,070 --> 00:00:36,990
‫Donc, toutes les fonctions

12
00:00:36,990 --> 00:00:38,943
‫liées à l'authentification iront ici.

13
00:00:41,860 --> 00:00:44,300
‫Et cela aura un peu plus de sens plus

14
00:00:44,300 --> 00:00:46,530
‫tard, lorsque nous commencerons à utiliser toutes les fonctions

15
00:00:46,530 --> 00:00:48,103
‫que je vais mettre ici.

16
00:00:49,500 --> 00:00:51,560
‫Et maintenant, la première chose

17
00:00:51,560 --> 00:00:53,983
‫que nous devons faire est d'importer

18
00:00:57,870 --> 00:01:00,610
‫notre utilisateur, donc notre modèle d'utilisateur bien sûr,

19
00:01:00,610 --> 00:01:05,610
‫et c'est à un niveau supérieur, alors il devrait être dans les modèles,

20
00:01:07,250 --> 00:01:08,577
‫puis dans userModel.

21
00:01:09,450 --> 00:01:10,283
‫D'accord.

22
00:01:12,490 --> 00:01:16,500
‫Alors, créons et exportons notre tout premier contrôleur.

23
00:01:16,500 --> 00:01:18,347
‫Et je vais appeler celui-ci une inscription.

24
00:01:20,020 --> 00:01:22,990
‫Et donc vous voyez que je ne l'appelle pas create user,

25
00:01:22,990 --> 00:01:25,060
‫comme je l'ai fait dans un

26
00:01:25,060 --> 00:01:27,300
‫contrôleur de tournée, mais vraiment je l'appelle inscription

27
00:01:27,300 --> 00:01:29,700
‫parce que c'est le nom qui a un peu

28
00:01:29,700 --> 00:01:31,913
‫plus de sens dans le contexte de l'authentification.

29
00:01:33,360 --> 00:01:36,510
‫Ce sera donc bien sûr une fonction asynchrone, car nous allons

30
00:01:36,510 --> 00:01:38,973
‫effectuer des opérations de base de données.

31
00:01:42,190 --> 00:01:44,913
‫Ensuite, demandez, répondez et ensuite comme

32
00:01:46,000 --> 00:01:49,650
‫toujours, puis c'est ici que nous créons le nouvel utilisateur.

33
00:01:49,650 --> 00:01:52,573
‫Et donc c'est très similaire à ce que nous faisions avant.

34
00:01:53,460 --> 00:01:55,590
‫Donc, cette fois, cela s'appelle newUser,

35
00:01:55,590 --> 00:01:57,070
‫puis rappelez-vous comment

36
00:01:57,070 --> 00:02:00,090
‫nous créons un nouveau document basé sur un modèle.

37
00:02:00,090 --> 00:02:02,210
‫Nous utilisons donc bien sûr le

38
00:02:02,210 --> 00:02:04,610
‫nom du modèle, qui dans ce cas

39
00:02:04,610 --> 00:02:07,163
‫est User, puis nous utilisons la méthode create.

40
00:02:08,740 --> 00:02:10,020
‫Et puis tout ce que

41
00:02:10,020 --> 00:02:12,150
‫nous avons à faire est de passer un objet

42
00:02:12,150 --> 00:02:14,353
‫avec les données à partir desquelles l'utilisateur doit être créé.

43
00:02:15,380 --> 00:02:20,093
‫Et donc, comme avant, ces données sont en fait dans req. corps.

44
00:02:21,070 --> 00:02:23,430
‫Et donc tout cela va renvoyer une

45
00:02:23,430 --> 00:02:25,920
‫promesse, et nous devons donc attendre cela, et c'est

46
00:02:25,920 --> 00:02:28,683
‫donc la raison pour laquelle il s'agit d'une fonction asynchrone.

47
00:02:30,150 --> 00:02:32,403
‫Et je vois que là-haut, nous avons besoin d'exportations.

48
00:02:34,374 --> 00:02:36,740
‫Et maintenant, à l'étape suivante,

49
00:02:36,740 --> 00:02:40,310
‫nous enverrons réellement ce nouvel utilisateur au client.

50
00:02:40,310 --> 00:02:45,283
‫Donc rés. status, qui est 201 pour créé,

51
00:02:46,720 --> 00:02:48,453
‫puis notre objet JSON.

52
00:02:52,160 --> 00:02:53,763
‫C'est donc à nouveau le

53
00:02:55,010 --> 00:02:58,250
‫succès, puis notre propriété de données qui est à

54
00:02:58,250 --> 00:02:59,690
‫nouveau appelée une

55
00:02:59,690 --> 00:03:03,510
‫enveloppe ici, donc une propriété qui va contenir les données elles-mêmes.

56
00:03:03,510 --> 00:03:05,770
‫Et les données sont maintenant appelées user,

57
00:03:05,770 --> 00:03:07,723
‫alors qu'avant elles s'appelaient tour, et

58
00:03:09,105 --> 00:03:12,323
‫donc ce que nous allons envoyer ici est le newUser.

59
00:03:13,890 --> 00:03:16,270
‫Sauvegardez-le et avant d'essayer, rappelez-vous qu'il

60
00:03:16,270 --> 00:03:18,810
‫s'agit d'une fonction asynchrone et que nous devons

61
00:03:18,810 --> 00:03:21,393
‫donc réfléchir à la gestion des erreurs ici.

62
00:03:22,500 --> 00:03:24,470
‫Alors, que devons-nous faire ici ?

63
00:03:24,470 --> 00:03:26,840
‫Eh bien, nous devons envelopper toute cette fonction

64
00:03:26,840 --> 00:03:29,770
‫que nous venons de créer dans la fonction catchAsync que nous

65
00:03:29,770 --> 00:03:31,570
‫avons créée dans la dernière section.

66
00:03:32,810 --> 00:03:37,160
‫Alors rappelez-vous comment nous avons fait cela dans le tourController, où

67
00:03:37,160 --> 00:03:39,640
‫toutes les fonctions asynchrones sont encapsulées

68
00:03:39,640 --> 00:03:42,740
‫dans cette fonction catchAsync afin que nous n'ayons

69
00:03:42,740 --> 00:03:43,900
‫pas à

70
00:03:43,900 --> 00:03:47,640
‫écrire le bloc try catch dans chaque fonction ici.

71
00:03:47,640 --> 00:03:49,440
‫Rappelez-vous cela de la dernière section?

72
00:03:50,410 --> 00:03:52,450
‫Donc en fait, je vais

73
00:03:52,450 --> 00:03:55,963
‫aller de l'avant et copier cette déclaration requise ici.

74
00:04:00,190 --> 00:04:02,353
‫Donc un peu

75
00:04:03,220 --> 00:04:07,253
‫paresseux parfois, pas envie d'écrire le même code

76
00:04:08,360 --> 00:04:12,570
‫encore et encore, donc catchAsync, et puis nous

77
00:04:12,570 --> 00:04:16,303
‫devons fermer cela ici à la fin.

78
00:04:18,793 --> 00:04:20,220
‫Et maintenant, tout ce

79
00:04:20,220 --> 00:04:22,393
‫que nous avons à faire est d'implémenter réellement

80
00:04:22,393 --> 00:04:25,440
‫la route afin que ce gestionnaire d'inscription ici puisse ensuite être appelé.

81
00:04:25,440 --> 00:04:27,650
‫Et donc allons à nos

82
00:04:27,650 --> 00:04:31,400
‫userRoutes, que nous avons en fait déjà créées quelque temps auparavant,

83
00:04:31,400 --> 00:04:33,923
‫et nous avons déjà quelques routes ici.

84
00:04:34,930 --> 00:04:37,653
‫Mais en fait, je vais en créer un nouveau ici maintenant.

85
00:04:43,990 --> 00:04:46,700
‫Et comme je l'ai mentionné juste au début de cette

86
00:04:46,700 --> 00:04:48,700
‫vidéo, la ressource utilisateur est un peu différente

87
00:04:48,700 --> 00:04:50,290
‫de toutes les autres ressources.

88
00:04:50,290 --> 00:04:52,730
‫Encore une fois, parce que cela a vraiment à

89
00:04:52,730 --> 00:04:54,680
‫voir avec tout ce qui concerne l'authentification.

90
00:04:54,680 --> 00:04:57,010
‫Et donc nous avons un contrôleur

91
00:04:57,010 --> 00:05:00,410
‫différent pour cela, donc le authController, les noms de fonction

92
00:05:00,410 --> 00:05:02,110
‫ont également des noms

93
00:05:02,110 --> 00:05:05,143
‫différents, et nous aurons donc également une route spéciale.

94
00:05:08,540 --> 00:05:11,770
‫Disons routeur. post, puis nous

95
00:05:11,770 --> 00:05:15,313
‫créerons un itinéraire pour l'inscription, donc /inscription, et c'est là

96
00:05:18,450 --> 00:05:20,270
‫que nous utiliserons cette fonction

97
00:05:20,270 --> 00:05:22,370
‫que nous venons de créer auparavant.

98
00:05:23,260 --> 00:05:24,800
‫Et bien sûr, avant

99
00:05:24,800 --> 00:05:27,963
‫de pouvoir le faire, nous devons exiger ce contrôleur d'authentification.

100
00:05:29,520 --> 00:05:32,040
‫Donc, dupliquons simplement cette ligne

101
00:05:32,040 --> 00:05:37,040
‫ici et remplaçons user à deux endroits, et nous avons

102
00:05:37,440 --> 00:05:39,713
‫donc ici notre authController, et

103
00:05:41,416 --> 00:05:42,716
‫utilisons-le maintenant. s'inscrire.

104
00:05:44,340 --> 00:05:45,173
‫Donc, comme vous

105
00:05:47,050 --> 00:05:49,790
‫le voyez, l'inscription est vraiment une sorte de point final spécial.

106
00:05:49,790 --> 00:05:51,410
‫Cela ne correspond pas à l'architecture REST

107
00:05:51,410 --> 00:05:53,560
‫dont nous avons parlé précédemment, car dans ce cas,

108
00:05:53,560 --> 00:05:55,070
‫cela n'a pas beaucoup de sens.

109
00:05:55,070 --> 00:05:57,920
‫Et rappelez-vous donc comment nous avons dit que

110
00:05:57,920 --> 00:06:00,030
‫dans certains cas particuliers, nous

111
00:06:00,030 --> 00:06:02,690
‫pouvons bien sûr créer d'autres points de terminaison

112
00:06:02,690 --> 00:06:07,690
‫qui ne correspondent pas à 100% à cette philosophie REST qui est fondamentalement implémentée ici.

113
00:06:07,980 --> 00:06:09,853
‫Donc, ceci suit bien sûr

114
00:06:10,950 --> 00:06:15,040
‫à 100% la philosophie REST, où le nom de l'URL n'a rien

115
00:06:15,040 --> 00:06:17,790
‫à voir avec l'action qui est réellement effectuée.

116
00:06:17,790 --> 00:06:19,950
‫Tandis qu'ici, bien sûr, c'est le cas.

117
00:06:19,950 --> 00:06:22,080
‫Le nom de la route est donc

118
00:06:22,080 --> 00:06:23,960
‫inscription car nous inscrivons des utilisateurs.

119
00:06:23,960 --> 00:06:25,953
‫Et aussi ici, nous avons implémenté toutes ces

120
00:06:26,880 --> 00:06:28,760
‫différentes déformations HTTP, mais ici pour

121
00:06:28,760 --> 00:06:30,940
‫l'inscription, nous n'avons vraiment besoin que de POST.

122
00:06:31,810 --> 00:06:34,773
‫Nous ne pouvons donc pas vraiment obtenir de données à partir de l'inscription, ou nous

123
00:06:35,668 --> 00:06:38,520
‫ne pouvons pas corriger une inscription, donc ne pas la mettre à jour.

124
00:06:38,520 --> 00:06:41,810
‫Cela n'a pas vraiment de sens, et donc dans ce cas, tout

125
00:06:41,810 --> 00:06:43,170
‫ce que nous voulons

126
00:06:43,170 --> 00:06:45,140
‫faire, c'est avoir une route pour l'inscription,

127
00:06:45,140 --> 00:06:47,160
‫où nous ne pouvons que POST les données.

128
00:06:47,160 --> 00:06:48,953
‫Car encore une fois, cela n'a

129
00:06:50,170 --> 00:06:52,370
‫de sens que d'envoyer des données à cette route,

130
00:06:52,370 --> 00:06:54,740
‫de sorte que le nouvel utilisateur soit ensuite créé.

131
00:06:54,740 --> 00:06:57,820
‫Et nous aurons différentes routes similaires à celle-ci, comme

132
00:06:57,820 --> 00:07:00,240
‫pour la connexion, ou pour la réinitialisation

133
00:07:00,240 --> 00:07:03,820
‫du mot de passe, et toutes sortes de choses comme ça.

134
00:07:03,820 --> 00:07:06,003
‫Et nous conserverons également ces

135
00:07:07,163 --> 00:07:10,150
‫routes ici, donc celles dans un format plus REST, car

136
00:07:10,150 --> 00:07:12,930
‫il y a aussi la possibilité pour un administrateur

137
00:07:12,930 --> 00:07:15,180
‫système de mettre à jour ou de

138
00:07:15,180 --> 00:07:18,370
‫supprimer ou d'obtenir tous les utilisateurs en fonction de leur ID.

139
00:07:18,370 --> 00:07:21,423
‫Mais nous nous en occuperons plus tard, pour l'instant nous

140
00:07:22,620 --> 00:07:24,590
‫voulons juste implémenter toutes les fonctions

141
00:07:24,590 --> 00:07:25,890
‫qui concernent l'authentification.

142
00:07:25,890 --> 00:07:28,970
‫Donc, fondamentalement, des fonctions qui ne sont pertinentes

143
00:07:28,970 --> 00:07:30,620
‫que pour l'utilisateur lui-même.

144
00:07:30,620 --> 00:07:33,340
‫Ce n'est donc pas un administrateur qui va inscrire un

145
00:07:33,340 --> 00:07:36,180
‫utilisateur, ou ce n'est pas un administrateur qui va connecter

146
00:07:36,180 --> 00:07:38,730
‫un utilisateur, mais à la place, c'est le

147
00:07:38,730 --> 00:07:41,580
‫propre utilisateur qui va s'inscrire lui-même, ou se connecter lui-même.

148
00:07:41,580 --> 00:07:45,040
‫D'accord, est-ce que ça a du sens ?

149
00:07:45,040 --> 00:07:46,613
‫Nous devrions donc avoir tout en place

150
00:07:47,570 --> 00:07:50,160
‫maintenant, de sorte que cela devrait maintenant fonctionner lorsque nous créons notre nouvel utilisateur.

151
00:07:50,160 --> 00:07:53,830
‫Donc, lorsque nous nous inscrivons essentiellement, pour notre application.

152
00:07:53,830 --> 00:07:57,270
‫Alors essayons ça maintenant.

153
00:07:57,270 --> 00:07:58,683
‫Copiez simplement cette

154
00:08:01,020 --> 00:08:02,447
‫URL, les utilisateurs, puis inscrivez-vous.

155
00:08:06,610 --> 00:08:08,393
‫Ensuite, nous devons spécifier le

156
00:08:11,743 --> 00:08:13,710
‫corps, nous disons brut, puis JSON.

157
00:08:14,640 --> 00:08:19,190
‫Oh et aussi, n'oubliez pas bien sûr, de mettre

158
00:08:19,190 --> 00:08:20,720
‫celui-ci en POST.

159
00:08:20,720 --> 00:08:22,223
‫Alors, de quelles données avons-nous besoin ici ?

160
00:08:25,478 --> 00:08:27,830
‫Rappelez-vous, le premier est le

161
00:08:27,830 --> 00:08:30,293
‫nom, puis l'e-mail, et je mets

162
00:08:34,710 --> 00:08:39,710
‫le mien ici en fait, puis le mot de passe, et alors faisons

163
00:08:46,211 --> 00:08:49,211
‫quelque chose ici, ça n'a pas vraiment d'importance.

164
00:08:50,360 --> 00:08:52,560
‫Et encore une fois, nous parlerons de la gestion des

165
00:08:54,850 --> 00:08:56,330
‫mots de passe un peu plus

166
00:08:56,330 --> 00:08:58,383
‫tard, et en fait directement dans la prochaine vidéo.

167
00:08:59,290 --> 00:09:01,140
‫Alors maintenant, celui-ci devrait être le même.

168
00:09:02,420 --> 00:09:04,960
‫Alors réussissez 1234, juste comme test.

169
00:09:04,960 --> 00:09:08,143
‫Et la photo souvenir n'est pas obligatoire, et

170
00:09:09,287 --> 00:09:11,820
‫donc je ne fais pas ça.

171
00:09:11,820 --> 00:09:13,663
‫Et donc voyons maintenant.

172
00:09:15,040 --> 00:09:16,133
‫Et maintenant, nous obtenons cette erreur

173
00:09:17,990 --> 00:09:20,180
‫ici, et c'est parce que j'ai mal orthographié le mot de passe ici.

174
00:09:20,180 --> 00:09:22,853
‫D'accord, ce serait donc la façon allemande de l'écrire.

175
00:09:24,150 --> 00:09:27,373
‫Et maintenant c'est juste.

176
00:09:28,370 --> 00:09:29,890
‫D'accord, et en effet, nous obtenons notre nouvel utilisateur ici.

177
00:09:29,890 --> 00:09:33,460
‫Parfait.

178
00:09:33,460 --> 00:09:34,580
‫Disons maintenant que nous avons essayé de le faire avec un GET.

179
00:09:34,580 --> 00:09:38,350
‫Qu'obtiendrions-nous?

180
00:09:38,350 --> 00:09:39,800
‫Eh bien, "Cet

181
00:09:39,800 --> 00:09:42,300
‫itinéraire n'est pas encore défini", c'est

182
00:09:42,300 --> 00:09:44,350
‫parce que nous avons en

183
00:09:44,350 --> 00:09:47,620
‫fait déjà défini cet itinéraire ici, donc fondamentalement cette

184
00:09:47,620 --> 00:09:50,180
‫partie ici de l'itinéraire, alors laissez-moi

185
00:09:50,180 --> 00:09:52,910
‫vous montrer rapidement cela, donc ce n'est

186
00:09:52,910 --> 00:09:55,970
‫pas dans le tourController, mais dans le userController.

187
00:09:55,970 --> 00:09:58,640
‫Donc, fondamentalement, nous avons getUser ici,

188
00:09:58,640 --> 00:10:01,560
‫puis "Cet itinéraire n'est pas encore défini. " C'est donc celui-ci que nous obtenons, mais

189
00:10:01,560 --> 00:10:04,174
‫bien sûr, cela

190
00:10:04,174 --> 00:10:06,024
‫ne nous intéresse pas vraiment.

191
00:10:07,160 --> 00:10:09,860
‫Et maintenant, enregistrons-le ici, dans Postman afin que

192
00:10:11,460 --> 00:10:13,630
‫nous puissions ensuite le réutiliser facilement.

193
00:10:13,630 --> 00:10:16,613
‫Alors inscrivez-vous.

194
00:10:21,520 --> 00:10:22,513
‫Et maintenant,

195
00:10:24,700 --> 00:10:26,600
‫juste pour confirmer rapidement, ouvrons-le également dans

196
00:10:26,600 --> 00:10:29,420
‫Compass ici, et voyons qu'à ce stade, nous n'avons que

197
00:10:29,420 --> 00:10:32,320
‫des tournées, et allons donc ici à natours, essayons de

198
00:10:32,320 --> 00:10:36,433
‫recharger ceci, et c'est probablement ici, et ainsi de suite en effet, nous obtenons

199
00:10:37,490 --> 00:10:38,890
‫maintenant notre collection d'utilisateurs ici.

200
00:10:41,000 --> 00:10:44,820
‫Alors ouvrons cela, et en effet, nous obtenons maintenant

201
00:10:44,820 --> 00:10:47,120
‫notre premier document ici.

202
00:10:47,120 --> 00:10:49,470
‫Donc l'utilisateur que nous venons de créer.

203
00:10:49,470 --> 00:10:51,640
‫Maintenant, ici, vous pouvez voir le mot

204
00:10:51,640 --> 00:10:54,430
‫de passe simple, et bien sûr, ce n'est pas idéal.

205
00:10:54,430 --> 00:10:57,270
‫Et bien sûr, ce n'est pas idéal, donc dans

206
00:10:57,270 --> 00:10:59,170
‫une application Web, les mots de

207
00:10:59,170 --> 00:11:03,090
‫passe ne devraient jamais être stockés aussi simplement dans une base de données.

208
00:11:03,090 --> 00:11:05,983
‫Il y a donc beaucoup de gestion des mots de passe qui

209
00:11:07,060 --> 00:11:10,020
‫doit se faire dans les coulisses, et c'est donc exactement ce que

210
00:11:10,020 --> 00:11:11,750
‫nous ferons dans la prochaine vidéo.

