﻿1
00:00:01,054 --> 00:00:04,060
‫- : Dans cette conférence, nous allons permettre

2
00:00:04,060 --> 00:00:07,283
‫à l'utilisateur actuellement connecté de manipuler ses données d'utilisateur.

3
00:00:09,020 --> 00:00:11,910
‫Et maintenant, en implémentant les mises à jour

4
00:00:11,910 --> 00:00:14,880
‫des utilisateurs, nous quittons vraiment le domaine de l'authentification et

5
00:00:14,880 --> 00:00:19,030
‫nous nous dirigeons davantage vers de vrais trucs liés aux utilisateurs, d'accord ?

6
00:00:19,030 --> 00:00:22,180
‫Et donc au lieu d'utiliser le contrôleur d'authentification maintenant,

7
00:00:22,180 --> 00:00:24,840
‫implémentons cette fonctionnalité de mise à jour

8
00:00:24,840 --> 00:00:26,743
‫directement dans leur userController.

9
00:00:27,850 --> 00:00:28,970
‫D'accord, nous

10
00:00:28,970 --> 00:00:31,710
‫avons donc un tas de gestionnaires, donc

11
00:00:31,710 --> 00:00:35,270
‫d'itinéraires, qui ne sont pas vraiment implémentés ici, d'accord ?

12
00:00:35,270 --> 00:00:37,420
‫Mais laissons-les de côté pour le

13
00:00:37,420 --> 00:00:40,553
‫moment et créons notre nouvelle fonction de gestionnaire ici.

14
00:00:42,800 --> 00:00:45,143
‫Et celui-ci s'appellera updateMe.

15
00:00:48,312 --> 00:00:51,260
‫Et encore une fois, c'est updateMe car c'est pour

16
00:00:51,260 --> 00:00:53,323
‫mettre à jour l'utilisateur actuellement authentifié.

17
00:00:54,580 --> 00:00:56,620
‫Plus tard, nous implémenterons alors également

18
00:00:56,620 --> 00:01:00,070
‫cette fonction updateUser ici, mais il s'agit alors pour un administrateur

19
00:01:00,070 --> 00:01:03,680
‫de mettre à jour toutes les données de l'utilisateur, tandis que

20
00:01:03,680 --> 00:01:07,490
‫l'utilisateur lui-même ne peut mettre à jour, pour l'instant du moins, que

21
00:01:07,490 --> 00:01:09,293
‫le nom et l'adresse e-mail.

22
00:01:12,180 --> 00:01:15,900
‫Alors, demande, réponse, et ensuite.

23
00:01:17,205 --> 00:01:20,205
‫(claquement du clavier) Et nous le faisons réellement, donc la

24
00:01:22,550 --> 00:01:25,800
‫mise à jour des données utilisateur, d'une manière différente de la

25
00:01:25,800 --> 00:01:29,180
‫mise à jour du mot de passe utilisateur, eh bien parce

26
00:01:29,180 --> 00:01:32,040
‫que généralement dans une application Web typique, c'est toujours

27
00:01:32,040 --> 00:01:33,773
‫ainsi que cela se fait.

28
00:01:34,720 --> 00:01:36,370
‫Ainsi, vous avez généralement un

29
00:01:36,370 --> 00:01:38,190
‫endroit où vous pouvez mettre à jour

30
00:01:38,190 --> 00:01:40,630
‫votre mot de passe, puis un autre endroit où vous

31
00:01:40,630 --> 00:01:43,700
‫pouvez mettre à jour les données sur l'utilisateur ou le compte lui-même.

32
00:01:43,700 --> 00:01:46,993
‫Et donc ici, nous suivons simplement ce modèle.

33
00:01:48,592 --> 00:01:52,410
‫Alors encore une fois, commençons par exposer nos étapes.

34
00:01:52,410 --> 00:01:54,140
‫Et la première chose que nous

35
00:01:54,140 --> 00:01:56,090
‫voulons faire ici est de créer une erreur

36
00:01:56,090 --> 00:01:58,703
‫si l'utilisateur essaie de mettre à jour le mot de passe.

37
00:02:01,993 --> 00:02:05,737
‫Donc, créez une erreur si l'utilisateur publie essentiellement des

38
00:02:07,330 --> 00:02:10,073
‫données de mot de passe.

39
00:02:13,406 --> 00:02:17,980
‫Mais sinon, il suffit de mettre à jour le document utilisateur.

40
00:02:20,610 --> 00:02:23,720
‫Si simple, et commençons bien sûr par

41
00:02:23,720 --> 00:02:24,783
‫le premier.

42
00:02:26,410 --> 00:02:28,180
‫Bien sûr, il y aura un

43
00:02:28,180 --> 00:02:30,220
‫corps où nous allons transmettre les données, et

44
00:02:30,220 --> 00:02:33,933
‫donc si sur ce corps il y a des données sur le mot de

45
00:02:35,890 --> 00:02:37,929
‫passe, ou une confirmation de mot de passe...

46
00:02:37,929 --> 00:02:40,596
‫(claquement des touches)

47
00:02:44,047 --> 00:02:45,350
‫Validez.

48
00:02:45,350 --> 00:02:49,410
‫Eh bien, dans ce cas, nous voulons revenir immédiatement et

49
00:02:49,410 --> 00:02:51,833
‫créer une nouvelle erreur Apperror.

50
00:02:53,920 --> 00:02:57,110
‫Oh et je suppose que nous ne l'avons pas encore mis en œuvre

51
00:02:57,110 --> 00:02:58,780
‫ici, ou que nous ne l'avons

52
00:02:58,780 --> 00:03:00,663
‫pas encore requis, alors prenons-le à partir d'ici.

53
00:03:01,660 --> 00:03:02,730
‫Donc AppError...

54
00:03:04,360 --> 00:03:05,580
‫Ce n'est

55
00:03:05,580 --> 00:03:07,400
‫pas ici, donc le userController...

56
00:03:11,550 --> 00:03:13,550
‫Alors AppError, c'est parti.

57
00:03:15,700 --> 00:03:20,700
‫Donc 'Cet itinéraire n'est pas pour les mises à jour de mot de passe.

58
00:03:26,280 --> 00:03:29,623
‫'Veuillez utiliser /updateMYPassword. ' Donc, en

59
00:03:32,160 --> 00:03:34,960
‫gros, l'itinéraire que nous avons spécifié auparavant.

60
00:03:34,960 --> 00:03:36,720
‫Alors mettez à jourMYPassword.

61
00:03:39,226 --> 00:03:42,753
‫Et puis aussi, un code 400 pour une mauvaise demande.

62
00:03:46,150 --> 00:03:48,743
‫Et essayons celui-ci tout de suite.

63
00:03:49,921 --> 00:03:51,770
‫Et pour cela, juste

64
00:03:51,770 --> 00:03:54,133
‫deux choses, nous devons d'abord renvoyer

65
00:03:56,230 --> 00:04:00,660
‫une réponse, alors disons res. status(200) pour ok, puis json,

66
00:04:00,660 --> 00:04:01,993
‫ajoutez le

67
00:04:07,130 --> 00:04:09,070
‫statut en tant que succès.

68
00:04:09,070 --> 00:04:11,860
‫Et plus tard, nous enverrons également l'utilisateur mis à jour,

69
00:04:11,860 --> 00:04:13,563
‫mais laissons cela pour plus tard.

70
00:04:14,610 --> 00:04:16,840
‫Voilà donc la réponse, et maintenant nous

71
00:04:16,840 --> 00:04:19,893
‫devons bien sûr également ajouter cette route à notre utilisateur Router.

72
00:04:21,880 --> 00:04:24,993
‫C'est donc bien sûr similaire à mettre à jour

73
00:04:26,390 --> 00:04:29,663
‫mon mot de passe, donc routeur, et bien sûr

74
00:04:32,066 --> 00:04:32,899
‫un

75
00:04:35,370 --> 00:04:38,080
‫correctif, /updateMe, là encore, c'est une route protégée

76
00:04:38,080 --> 00:04:42,120
‫afin que seul l'utilisateur actuellement authentifié puisse mettre à jour les

77
00:04:42,120 --> 00:04:43,603
‫données de l'utilisateur actuel.

78
00:04:45,420 --> 00:04:48,240
‫Et donc tout cela est bien sûr vraiment sécurisé, encore

79
00:04:48,240 --> 00:04:51,540
‫une fois parce que l'ID de l'utilisateur qui va être mis à jour

80
00:04:51,540 --> 00:04:53,960
‫vient de la demande. utilisateur, qui

81
00:04:53,960 --> 00:04:58,120
‫a été défini par ce middleware de protection ici, qui à son

82
00:04:58,120 --> 00:05:01,700
‫tour a eu l'idée du jeton Web json, et puisque

83
00:05:01,700 --> 00:05:05,180
‫personne ne peut changer l'ID dans ce jeton Web

84
00:05:05,180 --> 00:05:07,920
‫json sans connaître le secret, nous savons

85
00:05:07,920 --> 00:05:11,260
‫que l'ID est alors sûr à cause de ça.

86
00:05:11,260 --> 00:05:13,993
‫Et donc à cause de cela, tout ici est en sécurité.

87
00:05:16,342 --> 00:05:18,675
‫Donc, userController. Tiens moi au courant.

88
00:05:21,554 --> 00:05:22,471
‫Maintenant d'accord...

89
00:05:24,050 --> 00:05:26,003
‫Alors testons cela maintenant.

90
00:05:28,830 --> 00:05:30,883
‫Allez-y et copiez-le à nouveau.

91
00:05:34,530 --> 00:05:37,363
‫Et tout d'abord, définissons l'autorisation.

92
00:05:38,300 --> 00:05:41,520
‫Encore une fois à partir du Bearer Token et

93
00:05:41,520 --> 00:05:43,770
‫bien sûr avec cette variable d'environnement.

94
00:05:45,788 --> 00:05:48,470
‫Il doit également s'agir d'une demande de correctif

95
00:05:48,470 --> 00:05:50,653
‫et nous devons spécifier un corps.

96
00:05:53,740 --> 00:05:56,110
‫Et je veux commencer par le tester, provoquant

97
00:05:56,110 --> 00:05:57,930
‫cette erreur bien sûr, et donc

98
00:05:57,930 --> 00:05:59,653
‫spécifions un mot de passe,

99
00:06:06,170 --> 00:06:07,613
‫puis un nom.

100
00:06:12,620 --> 00:06:15,883
‫Disons donc que c'est le nom que nous voulons mettre à

101
00:06:17,030 --> 00:06:18,620
‫jour, alors enregistrons-le ici.

102
00:06:20,911 --> 00:06:23,361
‫Et en fait, c'est bien sûr dans le dossier Utilisateurs.

103
00:06:26,960 --> 00:06:28,973
‫Données d'utilisateur.

104
00:06:30,810 --> 00:06:32,750
‫Et en fait, créons un nouveau

105
00:06:32,750 --> 00:06:35,670
‫dossier ici et mettons les éléments liés à l'authentification

106
00:06:35,670 --> 00:06:37,123
‫dans son propre dossier.

107
00:06:39,998 --> 00:06:42,960
‫Donc ici, nous

108
00:06:42,960 --> 00:06:47,960
‫créons un nouveau dossier et l'appelons Authentification.

109
00:06:48,150 --> 00:06:49,460
‫Ce n'est pas correct.

110
00:06:49,460 --> 00:06:52,354
‫AH-PUIS-TICATION.

111
00:06:52,354 --> 00:06:53,554
‫(rires) Alors c'est tout.

112
00:06:55,480 --> 00:06:58,593
‫Le mot de passe est donc lié à l'authentification,

113
00:06:59,550 --> 00:07:04,530
‫à la réinitialisation du mot de passe, à l'oubli du mot de passe, à

114
00:07:04,530 --> 00:07:07,193
‫la connexion et à la déconnexion.

115
00:07:11,078 --> 00:07:13,245
‫Alors, fermons ces deux-là, et maintenant

116
00:07:14,440 --> 00:07:16,800
‫connectez-vous en tant que, ou créons en

117
00:07:16,800 --> 00:07:18,600
‫fait un nouvel utilisateur.

118
00:07:20,490 --> 00:07:22,043
‫Alors inscrivons-nous ici, en

119
00:07:24,170 --> 00:07:28,600
‫tant qu'utilisateur normal, afin que nous puissions nous débarrasser de ces deux là.

120
00:07:28,600 --> 00:07:33,150
‫Et maintenant, je l'appelle simplement, eh bien, teste à nouveau, d'accord ?

121
00:07:33,150 --> 00:07:36,060
‫Et jetons un coup d'œil aux utilisateurs que nous avons actuellement

122
00:07:38,520 --> 00:07:40,100
‫dans notre base de données.

123
00:07:40,100 --> 00:07:41,950
‫Nous avons donc hello et

124
00:07:41,950 --> 00:07:43,823
‫admin, et utilisons donc maintenant test.

125
00:07:47,400 --> 00:07:49,260
‫Et je suis toujours à nouveau, en utilisant le même mot

126
00:07:49,260 --> 00:07:50,483
‫de passe pour le rendre vraiment facile.

127
00:07:52,310 --> 00:07:55,833
‫Très bien, nous devons également donner le nom, appelons-le

128
00:07:59,530 --> 00:08:01,003
‫simplement J ici.

129
00:08:03,180 --> 00:08:05,570
‫Et maintenant, en effet, nous obtenons notre jeton, et

130
00:08:05,570 --> 00:08:07,120
‫nous sommes déjà connectés, et

131
00:08:07,120 --> 00:08:09,250
‫donc maintenant, lorsque nous mettons à jour

132
00:08:09,250 --> 00:08:12,083
‫l'utilisateur, cela devrait être pour cet utilisateur qui vient d'être connecté.

133
00:08:13,734 --> 00:08:15,770
‫Je n'essaie donc pas de mettre à jour

134
00:08:15,770 --> 00:08:19,180
‫et bien sûr, aucune mise à jour n'est encore implémentée et cela ne fonctionnera donc pas.

135
00:08:19,180 --> 00:08:21,820
‫Tout ce que je veux voir, c'est l'erreur qui devrait

136
00:08:21,820 --> 00:08:25,713
‫se produire car j'ai spécifié cette propriété de mot de passe ici sur le corps.

137
00:08:27,361 --> 00:08:28,720
‫Essayons donc.

138
00:08:28,720 --> 00:08:31,973
‫Et ici, nous obtenons cette sorte d'erreur d'apparence étrange, mais je suppose

139
00:08:33,190 --> 00:08:35,700
‫que c'est simplement parce que nous n'avons pas réellement

140
00:08:35,700 --> 00:08:37,150
‫mis à jour la

141
00:08:37,150 --> 00:08:40,500
‫route ici, alors rappelez-vous que je viens de copier une route, donc

142
00:08:40,500 --> 00:08:42,160
‫l'URL, et de la coller ici.

143
00:08:42,160 --> 00:08:46,610
‫Mais bien sûr, il doit être updateME.

144
00:08:46,610 --> 00:08:48,630
‫Essayons donc à nouveau.

145
00:08:48,630 --> 00:08:51,617
‫Et maintenant, nous obtenons en fait cette erreur que nous avons spécifiée.

146
00:08:51,617 --> 00:08:53,627
‫"Cet itinéraire n'est pas destiné aux mises à jour de mots de passe.

147
00:08:53,627 --> 00:08:56,300
‫"Veuillez utiliser /updateMyPassowrd. " Tellement

148
00:08:56,300 --> 00:08:58,450
‫génial, cette partie fonctionne, et

149
00:08:58,450 --> 00:09:01,890
‫cela fonctionne aussi que nous devons être authentifiés.

150
00:09:01,890 --> 00:09:05,700
‫Parce que disons que nous n'avons pas d'authentification, et

151
00:09:05,700 --> 00:09:08,410
‫donc disons que : No Auth.

152
00:09:08,410 --> 00:09:10,330
‫Et alors essayons à nouveau maintenant.

153
00:09:10,330 --> 00:09:12,867
‫Et donc effectivement, « Vous n'êtes pas connecté !

154
00:09:12,867 --> 00:09:15,157
‫"Veuillez vous connecter pour avoir accès. " Alors

155
00:09:17,300 --> 00:09:19,800
‫juste pour vous prouver que notre authentification

156
00:09:19,800 --> 00:09:21,853
‫fait aussi son travail ici.

157
00:09:23,260 --> 00:09:25,450
‫Mais bien sûr, nous voulons notre Bearer

158
00:09:25,450 --> 00:09:27,933
‫Token, et maintenant nous obtenons cette autre erreur.

159
00:09:29,990 --> 00:09:32,790
‫Super, alors allons-y maintenant,

160
00:09:32,790 --> 00:09:36,943
‫implémentons le reste des fonctionnalités du gestionnaire updateMe.

161
00:09:38,170 --> 00:09:40,970
‫Donc mettre à jour le document utilisateur, et nous pourrions essayer

162
00:09:40,970 --> 00:09:43,910
‫de le faire avec user. en sécurité.

163
00:09:43,910 --> 00:09:46,860
‫Donc, comme avant, obtenir l'utilisateur, puis mettre à

164
00:09:46,860 --> 00:09:49,430
‫jour les propriétés, puis à la fin,

165
00:09:49,430 --> 00:09:51,030
‫enregistrer le document.

166
00:09:51,030 --> 00:09:53,500
‫Mais le problème avec cela est qu'il y a

167
00:09:53,500 --> 00:09:56,320
‫des champs qui sont obligatoires que nous ne mettons pas à

168
00:09:56,320 --> 00:09:57,680
‫jour, et à cause

169
00:09:57,680 --> 00:09:59,490
‫de cela, nous allons générer une erreur.

170
00:09:59,490 --> 00:10:01,330
‫Et donc juste pour vous démontrer rapidement,

171
00:10:01,330 --> 00:10:02,530
‫laissez-moi faire cela.

172
00:10:03,430 --> 00:10:06,403
‫D'accord, donc très rapidement, amener l'utilisateur ici.

173
00:10:09,490 --> 00:10:14,490
‫Alors findbyId, donc demande. utilisateur comme nous le savons déjà, . identifiant.

174
00:10:17,540 --> 00:10:22,540
‫Et puis disons, utilisateur. name = 'Jonas' puis attendez

175
00:10:25,582 --> 00:10:27,297
‫l'utilisateur. enregistrer.

176
00:10:30,660 --> 00:10:33,763
‫Mais encore une fois, vous voyez que cela nous donnera alors une erreur.

177
00:10:35,277 --> 00:10:37,320
‫Mais pour l'instant, déclarons-le aussi bien sûr

178
00:10:37,320 --> 00:10:38,763
‫comme une fonction asynchrone.

179
00:10:45,700 --> 00:10:47,970
‫Et bien.

180
00:10:47,970 --> 00:10:49,690
‫Alors testons-le maintenant, mais

181
00:10:49,690 --> 00:10:52,780
‫nous devrions nous attendre à voir une erreur maintenant.

182
00:10:52,780 --> 00:10:55,113
‫Alors bien sûr débarrassons-nous de celui-ci, et

183
00:10:58,910 --> 00:11:02,560
‫en effet nous obtenons : "Veuillez confirmer votre mot de passe".

184
00:11:02,560 --> 00:11:06,380
‫Et c'est parce que passwordConfirm est un champ obligatoire mais nous

185
00:11:06,380 --> 00:11:08,763
‫ne l'avons bien sûr pas spécifié.

186
00:11:09,770 --> 00:11:12,940
‫Et donc la méthode sûre n'est pas vraiment la

187
00:11:12,940 --> 00:11:14,760
‫bonne option dans ce cas.

188
00:11:14,760 --> 00:11:16,560
‫Donc, à la place,

189
00:11:16,560 --> 00:11:19,453
‫nous pouvons maintenant utiliser findById et mettre à jour.

190
00:11:20,540 --> 00:11:23,560
‫Nous ne pouvions donc pas l'utiliser auparavant pour toutes les raisons

191
00:11:23,560 --> 00:11:25,970
‫que je vous ai expliquées plusieurs fois maintenant.

192
00:11:25,970 --> 00:11:28,460
‫Mais maintenant, puisque nous ne traitons pas

193
00:11:28,460 --> 00:11:32,380
‫de mots de passe, mais uniquement de ces données non sensibles comme le

194
00:11:32,380 --> 00:11:36,263
‫nom ou l'e-mail, nous pouvons maintenant utiliser findById et mettre à jour.

195
00:11:38,810 --> 00:11:40,343
‫Alors, débarrassons-nous de cela.

196
00:11:42,380 --> 00:11:46,040
‫Appelons-le également ici updateUser.

197
00:11:46,040 --> 00:11:48,950
‫Et puis ici, nous devons transmettre non seulement l'ID, mais

198
00:11:48,950 --> 00:11:51,400
‫aussi les données qui doivent être mises à

199
00:11:51,400 --> 00:11:53,040
‫jour, puis quelques options.

200
00:11:53,040 --> 00:11:56,303
‫Donc les données, appelons-les pour l'instant x ici, et je

201
00:11:57,650 --> 00:11:59,140
‫vous explique pourquoi dans

202
00:11:59,140 --> 00:12:02,250
‫une seconde, puis les options que nous voulons transmettre.

203
00:12:02,250 --> 00:12:04,180
‫Et c'est comme avant, la nouvelle

204
00:12:04,180 --> 00:12:07,240
‫option définie sur true, de sorte qu'elle renvoie le

205
00:12:07,240 --> 00:12:09,090
‫nouvel objet, donc fondamentalement

206
00:12:09,090 --> 00:12:12,033
‫l'objet mis à jour au lieu de l'ancien.

207
00:12:12,880 --> 00:12:16,393
‫Et les runValidators sont également définis sur true.

208
00:12:17,670 --> 00:12:22,000
‫Car effectivement nous voulons que les modèles valident notre document.

209
00:12:22,000 --> 00:12:25,490
‫Ainsi, par exemple, si nous saisissons une adresse e-mail invalide, cela devrait

210
00:12:25,490 --> 00:12:28,490
‫être détecté par le validateur et renvoyer une erreur.

211
00:12:29,770 --> 00:12:34,770
‫Maintenant, pourquoi est-ce que je mets x ici, et pas simplement une demande. corps?

212
00:12:35,040 --> 00:12:37,510
‫Et bien c'est parce qu'en fait on ne veut

213
00:12:37,510 --> 00:12:40,010
‫pas mettre à jour tout ce qui est dans

214
00:12:40,010 --> 00:12:43,130
‫le corps, parce que disons que l'utilisateur met, dans le corps,

215
00:12:43,130 --> 00:12:44,513
‫le rôle par exemple.

216
00:12:46,550 --> 00:12:51,550
‫Nous pourrions avoir un corps. rôle défini sur admin par exemple,

217
00:12:52,510 --> 00:12:55,040
‫ce qui permettrait alors à tout utilisateur

218
00:12:55,040 --> 00:12:57,860
‫de changer le rôle, par exemple, en administrateur.

219
00:12:57,860 --> 00:13:00,200
‫Et bien sûr, cela ne peut pas être autorisé.

220
00:13:00,200 --> 00:13:02,850
‫Ou l'utilisateur peut également modifier son jeton de réinitialisation,

221
00:13:02,850 --> 00:13:05,350
‫ou lorsque ce jeton de réinitialisation expire,

222
00:13:05,350 --> 00:13:08,290
‫et tout cela ne devrait bien sûr pas être autorisé.

223
00:13:08,290 --> 00:13:10,440
‫Donc, faire quelque chose comme ça serait

224
00:13:10,440 --> 00:13:12,520
‫bien sûr une énorme erreur.

225
00:13:12,520 --> 00:13:14,773
‫Et donc nous devons nous assurer que l'objet

226
00:13:14,773 --> 00:13:16,640
‫que nous passons ici, donc encore une

227
00:13:16,640 --> 00:13:19,460
‫fois cet objet qui contiendra les données qui vont être

228
00:13:19,460 --> 00:13:20,860
‫mises à jour, ne

229
00:13:20,860 --> 00:13:23,540
‫contient que le nom et l'email, car pour l'instant ce

230
00:13:23,540 --> 00:13:25,940
‫sont les seuls champs que nous voulons autoriser

231
00:13:25,940 --> 00:13:27,623
‫à mettre à jour .

232
00:13:28,640 --> 00:13:31,150
‫Et donc, en gros, nous voulons filtrer le corps

233
00:13:31,150 --> 00:13:34,370
‫pour qu'à la fin, il ne contienne que le nom et l'e-mail

234
00:13:34,370 --> 00:13:35,610
‫et rien d'autre.

235
00:13:35,610 --> 00:13:38,620
‫Donc, si l'utilisateur essaie de changer de rôle, celui-ci sera

236
00:13:38,620 --> 00:13:40,250
‫alors filtré afin qu'il

237
00:13:40,250 --> 00:13:43,483
‫ne trouve jamais son chemin vers notre base de données.

238
00:13:44,769 --> 00:13:48,400
‫Donc, ce que nous voulons faire, c'est essentiellement créer une

239
00:13:48,400 --> 00:13:49,750
‫variable et disons

240
00:13:52,400 --> 00:13:56,240
‫filteredBody, puis nous allons créer une fonction dans une seconde, mais

241
00:13:56,240 --> 00:13:58,620
‫utilisons-la déjà ici, juste pour que vous

242
00:13:58,620 --> 00:14:00,420
‫voyiez comment cela va fonctionner.

243
00:14:01,450 --> 00:14:03,250
‫Et puis ici

244
00:14:03,250 --> 00:14:05,850
‫nous passons les données, donc l'objet que

245
00:14:05,850 --> 00:14:09,890
‫nous voulons filtrer, donc req. body, car c'est là que se

246
00:14:09,890 --> 00:14:12,440
‫trouvent toutes les données, puis nous passons quelques arguments.

247
00:14:12,440 --> 00:14:15,170
‫Un pour chacun des champs que nous voulons conserver

248
00:14:15,170 --> 00:14:16,183
‫dans l'objet.

249
00:14:17,950 --> 00:14:20,343
‫Nous souhaitons donc conserver le champ appelé

250
00:14:21,400 --> 00:14:23,653
‫nom, et le champ appelé email.

251
00:14:25,120 --> 00:14:28,790
‫Et encore une fois, un peu plus tard, nous pourrions alors ajouter plus de

252
00:14:28,790 --> 00:14:30,910
‫champs ici, par exemple plus tard, nous pourrions

253
00:14:30,910 --> 00:14:32,850
‫permettre à l'utilisateur de télécharger une image.

254
00:14:32,850 --> 00:14:35,709
‫Et bien sûr que nous devons également mettre à jour

255
00:14:35,709 --> 00:14:37,220
‫dans la base de données.

256
00:14:37,220 --> 00:14:39,010
‫Mais pour l'instant, tout ce que

257
00:14:39,010 --> 00:14:43,343
‫nous voulons garder dans le corps est le nom et l'e-mail et filtrer tout le reste.

258
00:14:45,410 --> 00:14:48,067
‫Et donc ici, utilisons maintenant filteredBody, au lieu

259
00:14:49,730 --> 00:14:51,573
‫de x bien sûr.

260
00:14:54,400 --> 00:14:57,200
‫Et donc maintenant, ce que nous devons

261
00:14:57,200 --> 00:15:00,833
‫faire, c'est implémenter réellement cette fonction qui s'occupera de filtrer l'objet.

262
00:15:02,640 --> 00:15:03,893
‫Alors faisons-le ici.

263
00:15:09,151 --> 00:15:09,984
‫FilterObj,

264
00:15:12,350 --> 00:15:15,050
‫qui prendra un objet puis

265
00:15:15,050 --> 00:15:18,853
‫les autres paramètres pour tous les champs autorisés.

266
00:15:21,320 --> 00:15:23,670
‫Et donc cela créera essentiellement

267
00:15:23,670 --> 00:15:27,203
‫un tableau contenant tous les arguments que nous avons transmis.

268
00:15:28,690 --> 00:15:31,750
‫Donc, en gros, cela a été adopté après ce premier.

269
00:15:31,750 --> 00:15:36,750
‫Donc, dans ce cas, il s'agit d'un tableau contenant le nom et l'e-mail.

270
00:15:39,610 --> 00:15:41,260
‫Donc, ce que nous devons

271
00:15:41,260 --> 00:15:44,560
‫faire maintenant, c'est essentiellement parcourir l'objet et pour chaque élément vérifier si

272
00:15:44,560 --> 00:15:46,240
‫c'est l'un des champs autorisés, et

273
00:15:46,240 --> 00:15:49,110
‫si c'est le cas, l'ajouter simplement à un nouvel objet, que

274
00:15:49,110 --> 00:15:51,160
‫nous allons ensuite retourner à la fin .

275
00:15:51,160 --> 00:15:53,840
‫Et il existe probablement de meilleures façons de

276
00:15:53,840 --> 00:15:55,140
‫mettre cela en

277
00:15:55,140 --> 00:15:56,990
‫œuvre, mais faisons-le très rapidement ici.

278
00:15:58,810 --> 00:16:00,790
‫Nous allons donc

279
00:16:00,790 --> 00:16:04,893
‫boucler l'objet en disant Objet. clés de l'objet dans lequel nous passons.

280
00:16:05,940 --> 00:16:08,210
‫C'est donc l'un des moyens les plus simples de

281
00:16:08,210 --> 00:16:09,883
‫parcourir un objet en JavaScript.

282
00:16:12,612 --> 00:16:15,710
‫Donc, ici, cela renvoie essentiellement un tableau contenant tous

283
00:16:15,710 --> 00:16:17,560
‫les noms de clés,

284
00:16:17,560 --> 00:16:19,850
‫donc les noms de champ de cet

285
00:16:19,850 --> 00:16:21,713
‫objet, puis nous pouvons les parcourir.

286
00:16:22,570 --> 00:16:24,023
‫Ensuite, notre fonction de rappel.

287
00:16:24,960 --> 00:16:27,933
‫Et pour chaque élément, c'est ce que nous allons faire.

288
00:16:29,080 --> 00:16:32,680
‫Ainsi, si le tableau de champs autorisés inclut

289
00:16:33,680 --> 00:16:38,680
‫l'élément actuel, donc le nom du champ actuel, nous souhaitons l'ajouter

290
00:16:38,840 --> 00:16:41,310
‫à un nouvel objet.

291
00:16:41,310 --> 00:16:43,533
‫Créons donc rapidement celui-ci ici,

292
00:16:44,580 --> 00:16:47,340
‫donc const newObj qui est vide pour

293
00:16:48,540 --> 00:16:50,260
‫l'instant, et au

294
00:16:50,260 --> 00:16:53,010
‫final, c'est celui-là que nous allons retourner.

295
00:16:54,820 --> 00:16:57,500
‫Donc newObj.

296
00:16:57,500 --> 00:17:00,770
‫Donc, si le champ actuel est l'un des champs

297
00:17:00,770 --> 00:17:05,770
‫autorisés, alors newObj avec le nom de champ du champ actuel doit être égal

298
00:17:07,260 --> 00:17:10,970
‫à tout ce qui se trouve dans l'objet de l'élément

299
00:17:10,970 --> 00:17:13,743
‫actuel, donc le nom du champ actuel.

300
00:17:15,330 --> 00:17:17,593
‫Donc, si cela semble un peu déroutant,

301
00:17:18,460 --> 00:17:20,740
‫il ne s'agit encore que de JavaScript standard,

302
00:17:20,740 --> 00:17:24,450
‫cela n'a rien à voir avec aucun JS ou eXpress ou quelque

303
00:17:24,450 --> 00:17:25,593
‫chose comme ça.

304
00:17:26,810 --> 00:17:29,510
‫Encore une fois, tout ce que nous faisons ici est de

305
00:17:29,510 --> 00:17:32,090
‫parcourir en boucle tous les champs qui se trouvent dans l'objet,

306
00:17:32,090 --> 00:17:33,710
‫puis pour chaque champ, nous

307
00:17:33,710 --> 00:17:35,700
‫vérifions s'il s'agit de l'un des champs autorisés.

308
00:17:35,700 --> 00:17:39,300
‫Et si c'est le cas, alors nous créons un nouveau champ dans

309
00:17:39,300 --> 00:17:40,610
‫le nouvel objet, bien

310
00:17:40,610 --> 00:17:43,700
‫sûr avec le même nom, donc toujours name element, avec

311
00:17:43,700 --> 00:17:46,317
‫exactement la même valeur que dans l'objet d'origine.

312
00:17:46,317 --> 00:17:49,193
‫Et puis à la fin bien sûr, on renvoie celui-là.

313
00:17:51,880 --> 00:17:55,323
‫Et donc tout cela devrait maintenant fonctionner ici.

314
00:17:56,260 --> 00:17:58,520
‫Ensuite, tout ce que nous avons à faire

315
00:17:58,520 --> 00:18:01,603
‫à la fin est d'envoyer cet utilisateur mis à jour au client.

316
00:18:03,040 --> 00:18:04,083
‫Alors, utilisateur.

317
00:18:06,120 --> 00:18:11,120
‫Maintenant, bien sûr, nous devons mettre le udatedUser ici, le

318
00:18:11,160 --> 00:18:15,400
‫sauvegarder à nouveau, et maintenant cela devrait fonctionner.

319
00:18:15,400 --> 00:18:17,877
‫Voir vraiment ce que nous avons fait ici était ..

320
00:18:21,310 --> 00:18:24,003
‫mettre à jour l'utilisateur en dernier,

321
00:18:25,450 --> 00:18:30,450
‫et avant cela, nous avons en fait filtré les noms de champs

322
00:18:34,490 --> 00:18:39,303
‫indésirables qui ne sont pas autorisés à être mis à jour.

323
00:18:40,758 --> 00:18:42,460
‫Alors essayons ça maintenant.

324
00:18:42,460 --> 00:18:46,423
‫Et cet utilisateur ici est un utilisateur régulier, nous venons donc de

325
00:18:47,780 --> 00:18:49,150
‫le créer, rappelez-vous

326
00:18:49,150 --> 00:18:50,813
‫avec le nom de J.

327
00:18:51,920 --> 00:18:55,100
‫Jetons donc un coup d'œil à Compass.

328
00:18:56,900 --> 00:19:00,870
‫C'est donc un utilisateur normal, avec un nom de J.

329
00:19:00,870 --> 00:19:02,450
‫Et donc mettons maintenant à

330
00:19:02,450 --> 00:19:05,160
‫jour, puis nommons, et essayons également de mettre à jour le

331
00:19:05,160 --> 00:19:07,460
‫rôle, ce qui encore une fois n'est pas autorisé.

332
00:19:07,460 --> 00:19:11,090
‫Mais pour voir si notre code fonctionne, essayons-le.

333
00:19:11,090 --> 00:19:14,470
‫Il y a donc déjà le nom, et disons que

334
00:19:14,470 --> 00:19:15,970
‫nous sommes un

335
00:19:15,970 --> 00:19:19,313
‫utilisateur malveillant essayant de changer notre rôle en admin.

336
00:19:20,620 --> 00:19:23,150
‫Donc, tout est correct, je suppose,

337
00:19:23,150 --> 00:19:25,190
‫alors envoyons-le maintenant, et

338
00:19:25,190 --> 00:19:28,520
‫en effet voici notre objet mis à jour.

339
00:19:28,520 --> 00:19:32,150
‫Nous obtenons donc notre nouveau nom, qui est Jonas Schmedtmann,

340
00:19:32,150 --> 00:19:35,250
‫puis le rôle, qui est toujours utilisateur.

341
00:19:35,250 --> 00:19:37,913
‫Il n'a pas mis à jour le rôle d'administrateur.

342
00:19:39,460 --> 00:19:42,380
‫Parfait. C'est exactement ce que nous voulions.

343
00:19:42,380 --> 00:19:46,230
‫Alors, sauvez ceci et revenons en arrière et en

344
00:19:46,230 --> 00:19:49,513
‫fait, nous venons de terminer cette vidéo.

345
00:19:50,590 --> 00:19:53,770
‫Ensuite, nous allons implémenter une fonctionnalité de

346
00:19:53,770 --> 00:19:55,913
‫suppression de l'utilisateur actuel.

347
00:19:56,890 --> 00:20:00,730
‫Nous avons donc travaillé sur la mise à jour. Ensuite, nous voulons permettre

348
00:20:00,730 --> 00:20:03,970
‫à un utilisateur de se supprimer lui-même lorsqu'il ne veut

349
00:20:03,970 --> 00:20:06,143
‫plus faire partie de notre application.

