﻿1
00:00:00,890 --> 00:00:04,850
‫- : Donc, après la mise à jour, permettons maintenant également à

2
00:00:04,850 --> 00:00:07,293
‫l'utilisateur actuel de supprimer son compte.

3
00:00:09,070 --> 00:00:12,069
‫Désormais, lorsqu'un utilisateur décide de supprimer son compte,

4
00:00:12,069 --> 00:00:16,390
‫nous ne supprimons en fait pas ce document de la base de données.

5
00:00:16,390 --> 00:00:20,580
‫Mais au lieu de cela, nous avons simplement défini le compte comme inactif.

6
00:00:20,580 --> 00:00:23,170
‫Pour que l'utilisateur puisse à

7
00:00:23,170 --> 00:00:26,910
‫un moment donné réactiver le compte et aussi pour que

8
00:00:26,910 --> 00:00:29,820
‫nous puissions toujours accéder au compte à

9
00:00:29,820 --> 00:00:33,450
‫l'avenir, même si officiellement, disons qu'il a été supprimé.

10
00:00:33,450 --> 00:00:34,440
‫D'accord?

11
00:00:34,440 --> 00:00:36,380
‫Donc, pour implémenter cela, nous

12
00:00:36,380 --> 00:00:39,430
‫devons tout d'abord créer une nouvelle propriété dans notre schéma.

13
00:00:39,430 --> 00:00:42,090
‫Alors, allons-y.

14
00:00:42,090 --> 00:00:43,740
‫Et maintenant, nous voulons

15
00:00:45,440 --> 00:00:47,163
‫avoir un champ appelé actif.

16
00:00:48,210 --> 00:00:49,043
‫D'accord.

17
00:00:50,550 --> 00:00:52,150
‫Qui devrait être du

18
00:00:54,370 --> 00:00:55,550
‫type booléen.

19
00:00:55,550 --> 00:00:57,430
‫D'accord, et par défaut,

20
00:00:57,430 --> 00:00:58,263
‫ce

21
00:00:59,170 --> 00:01:00,040
‫sera vrai.

22
00:01:00,040 --> 00:01:02,180
‫Ainsi, tout utilisateur créé

23
00:01:02,180 --> 00:01:04,430
‫est bien sûr un utilisateur actif

24
00:01:04,430 --> 00:01:07,300
‫et le booléen est donc défini sur true.

25
00:01:07,300 --> 00:01:11,360
‫De plus, nous ne voulons pas afficher cela dans la sortie, d'accord.

26
00:01:11,360 --> 00:01:13,350
‫Parce que nous voulons

27
00:01:13,350 --> 00:01:16,077
‫essentiellement cacher ce détail d'implémentation à l'utilisateur.

28
00:01:16,077 --> 00:01:17,260
‫D'accord?

29
00:01:17,260 --> 00:01:19,920
‫Et donc nous ne voulons pas que

30
00:01:19,920 --> 00:01:24,390
‫quiconque sache que ce drapeau, donc ce drapeau actif est ici, d'accord.

31
00:01:24,390 --> 00:01:28,930
‫Nous disons donc select, et le définissons sur false, d'accord.

32
00:01:28,930 --> 00:01:29,883
‫Et donc,

33
00:01:30,830 --> 00:01:33,140
‫pour supprimer l'utilisateur maintenant, tout ce

34
00:01:33,140 --> 00:01:35,400
‫que nous avons à faire

35
00:01:35,400 --> 00:01:38,210
‫est de définir cet indicateur actif sur false.

36
00:01:38,210 --> 00:01:39,043
‫D'accord.

37
00:01:40,130 --> 00:01:42,390
‫Créons donc cette fonction ici, les

38
00:01:42,390 --> 00:01:43,223
‫exportations. deleteMe, c'était

39
00:01:44,170 --> 00:01:45,529
‫donc updateMe et maintenant

40
00:01:45,529 --> 00:01:46,930
‫c'est deleteMe et nous

41
00:01:46,930 --> 00:01:47,763
‫savons

42
00:01:47,763 --> 00:01:51,614
‫donc déjà que nous utilisons un catchAsync ici, n'est-ce pas ?

43
00:01:51,614 --> 00:01:54,410
‫Et puis Async parce que nous

44
00:01:54,410 --> 00:01:58,570
‫savons déjà que nous allons mettre à jour l'utilisateur.

45
00:01:58,570 --> 00:02:01,150
‫Donc la demande

46
00:02:01,150 --> 00:02:02,960
‫répond ensuite.

47
00:02:02,960 --> 00:02:03,913
‫Alors,

48
00:02:06,470 --> 00:02:08,300
‫attendez l'utilisateur. trouver par ID et mettre

49
00:02:08,300 --> 00:02:10,700
‫à jour.

50
00:02:10,700 --> 00:02:12,573
‫D'accord, et encore une fois, bien

51
00:02:13,800 --> 00:02:15,960
‫sûr, il n'y a de travail que pour les

52
00:02:15,960 --> 00:02:18,830
‫utilisateurs connectés et donc l'ID utilisateur est facilement stocké sur demande. utilisateur. identifiant.

53
00:02:18,830 --> 00:02:21,617
‫et les données que nous voulons mettre à

54
00:02:21,617 --> 00:02:23,800
‫jour sont

55
00:02:23,800 --> 00:02:25,630
‫simplement actives et définissez-les sur false.

56
00:02:26,680 --> 00:02:28,010
‫D'accord.

57
00:02:28,900 --> 00:02:30,893
‫Maintenant, renvoyer la réponse est également assez facile.

58
00:02:31,870 --> 00:02:33,280
‫Nous utilisons le

59
00:02:33,280 --> 00:02:37,560
‫code 204 pour supprimé, ce qui fera en sorte qu'en réalité, dans Postman,

60
00:02:37,560 --> 00:02:40,100
‫nous ne voyions même pas cette réponse, d'accord.

61
00:02:40,100 --> 00:02:43,280
‫Mais nous l'envoyons toujours avec

62
00:02:43,280 --> 00:02:47,230
‫la demande car c'est toujours la meilleure pratique.

63
00:02:47,230 --> 00:02:49,830
‫Donc, c'est toujours un succès et n'oubliez pas

64
00:02:50,770 --> 00:02:52,720
‫que nous n'envoyons aucune donnée.

65
00:02:54,090 --> 00:02:56,610
‫Alors, réglez-le simplement sur non.

66
00:02:56,610 --> 00:02:59,470
‫Très bien, et maintenant, bien sûr, ajoutez-le également

67
00:02:59,470 --> 00:03:01,343
‫à tous les itinéraires ici.

68
00:03:02,890 --> 00:03:05,080
‫Donc c'est assez similaire.

69
00:03:05,080 --> 00:03:07,193
‫Donc deleteMe puis ici deleteMe aussi et maintenant

70
00:03:08,850 --> 00:03:10,223
‫en fait, nous utilisons la

71
00:03:11,840 --> 00:03:12,880
‫méthode delete http.

72
00:03:14,620 --> 00:03:16,420
‫D'accord, et encore une fois,

73
00:03:16,420 --> 00:03:20,373
‫nous ne supprimerons pas réellement un utilisateur de la base de données.

74
00:03:21,480 --> 00:03:24,670
‫Mais tant que l'utilisateur n'est plus accessible nulle part, il est toujours

75
00:03:24,670 --> 00:03:26,570
‫possible d'utiliser cette méthode http ici.

76
00:03:26,570 --> 00:03:30,550
‫Très bien, alors essayons ça maintenant.

77
00:03:30,550 --> 00:03:34,277
‫D'accord, même si nous ne sommes pas encore prêts

78
00:03:34,277 --> 00:03:37,663
‫à 100 %, essayons quand même maintenant.

79
00:03:38,900 --> 00:03:42,010
‫Très bien, alors, deleteMe et c'est

80
00:03:43,080 --> 00:03:46,193
‫une route protégée et nous devons

81
00:03:47,200 --> 00:03:50,629
‫donc être connectés et créons donc

82
00:03:50,629 --> 00:03:51,720
‫notre

83
00:03:51,720 --> 00:03:53,530
‫en-tête d'autorisation, Bearer

84
00:03:53,530 --> 00:03:55,290
‫Token et bien

85
00:03:56,150 --> 00:03:59,923
‫sûr celui-ci et c'est en fait tout.

86
00:04:00,910 --> 00:04:03,350
‫Nous n'avons pas besoin de transmettre de données dans le corps.

87
00:04:04,640 --> 00:04:06,040
‫Nous n'avons pas besoin de transmettre de données dans l'URL.

88
00:04:06,040 --> 00:04:08,730
‫D'accord, car encore une fois, les seules données

89
00:04:08,730 --> 00:04:11,173
‫nécessaires sont l'ID utilisateur actuel et celui-ci

90
00:04:12,010 --> 00:04:15,210
‫n'est pas codé à l'intérieur de notre jeton Web adjacent.

91
00:04:15,210 --> 00:04:18,560
‫D'accord?

92
00:04:18,560 --> 00:04:21,150
‫Donc, ce que nous devons également faire, c'est supprimer et oui, cela

93
00:04:21,150 --> 00:04:21,983
‫devrait fonctionner maintenant.

94
00:04:23,510 --> 00:04:25,720
‫Donc, avant de faire cela, obtenons

95
00:04:26,660 --> 00:04:29,240
‫en fait la liste de tous les utilisateurs.

96
00:04:29,240 --> 00:04:31,830
‫Très bien et donc celui que nous supprimons maintenant

97
00:04:31,830 --> 00:04:33,113
‫est ce dernier.

98
00:04:34,870 --> 00:04:38,110
‫Donc celui-ci que nous venons de créer dans la dernière conférence.

99
00:04:38,110 --> 00:04:39,533
‫D'accord, et nous

100
00:04:41,060 --> 00:04:44,300
‫travaillons avec celui-ci car c'est le dernier qui s'est connecté

101
00:04:44,300 --> 00:04:47,270
‫et c'est donc ce jeton ici qui est

102
00:04:47,270 --> 00:04:49,710
‫actuellement stocké dans notre variable de jeton.

103
00:04:49,710 --> 00:04:51,370
‫D'accord, et donc lorsque nous

104
00:04:51,370 --> 00:04:54,460
‫supprimerons maintenant l'utilisateur, cela sera basé sur l'ID provenant de ce jeton.

105
00:04:54,460 --> 00:04:57,020
‫Alors essayons ça maintenant.

106
00:04:57,020 --> 00:05:00,163
‫Et effectivement nous obtenons notre 204.

107
00:05:01,700 --> 00:05:03,093
‫Et maintenant, ce qui m'intéresse,

108
00:05:06,080 --> 00:05:08,690
‫c'est de voir si la propriété select ici a changé.

109
00:05:08,690 --> 00:05:11,600
‫Et en fait, c'est exactement la même chose ici.

110
00:05:11,600 --> 00:05:13,763
‫Et c'est parce que nous ne

111
00:05:15,290 --> 00:05:17,820
‫divulguons pas le champ de sélection à l'utilisateur.

112
00:05:17,820 --> 00:05:19,760
‫Et donc nous avons réellement besoin de le voir ici.

113
00:05:19,760 --> 00:05:22,460
‫D'accord et en effet, nous avons activé ici défini sur false.

114
00:05:22,460 --> 00:05:25,053
‫Bon, c'est ce que je voulais dire avant.

115
00:05:26,180 --> 00:05:31,110
‫Nous ne divulguons donc pas les champs actifs à

116
00:05:31,110 --> 00:05:34,560
‫l'utilisateur, pas le champ de sélection.

117
00:05:34,560 --> 00:05:37,640
‫Donc active n'est visible que pour nous ici dans

118
00:05:37,640 --> 00:05:40,020
‫la boussole mais pas pour l'utilisateur.

119
00:05:40,020 --> 00:05:42,230
‫Maintenant, comme dernière étape, nous ne

120
00:05:42,230 --> 00:05:45,280
‫voulons bien sûr pas afficher les utilisateurs inactifs dans

121
00:05:45,280 --> 00:05:46,920
‫cette sortie, n'est-ce pas.

122
00:05:46,920 --> 00:05:50,080
‫Et comment pensez-vous que nous pourrions mettre cela en œuvre?

123
00:05:50,080 --> 00:05:53,960
‫Eh bien, nous allons utiliser quelque chose qui remonte à loin

124
00:05:53,960 --> 00:05:57,400
‫dont nous avons parlé il y a deux ou trois

125
00:05:57,400 --> 00:06:00,500
‫sections, qui est un intergiciel de requête, d'accord.

126
00:06:00,500 --> 00:06:03,400
‫Le middleware de requête est donc parfait pour

127
00:06:03,400 --> 00:06:06,140
‫cela, car nous pouvons maintenant ajouter une

128
00:06:06,140 --> 00:06:08,940
‫étape avant toute autre requête que nous effectuons

129
00:06:08,940 --> 00:06:11,380
‫ensuite quelque part dans notre application.

130
00:06:11,380 --> 00:06:14,160
‫Passons donc à notre modèle utilisateur ici

131
00:06:14,160 --> 00:06:16,500
‫et ajoutons ce middleware ici.

132
00:06:16,500 --> 00:06:19,810
‫Donc userSchema. pre, donc quelque chose qui se produira avant une requête et

133
00:06:19,810 --> 00:06:21,763
‫cette requête sera une recherche.

134
00:06:25,310 --> 00:06:26,657
‫D'accord, c'est donc ce qui rend ce middleware de requête.

135
00:06:29,339 --> 00:06:32,850
‫Ensuite, une fonction normale car rappelez-vous que

136
00:06:32,850 --> 00:06:37,760
‫sinon nous n'aurons pas accès au discord ou au

137
00:06:37,760 --> 00:06:40,583
‫moins il n'aura pas la

138
00:06:42,330 --> 00:06:44,670
‫valeur que nous attendons

139
00:06:44,670 --> 00:06:46,390
‫de lui.

140
00:06:46,390 --> 00:06:49,600
‫Et rappelez-vous qu'ici nous avons en fait utilisé une expression régulière

141
00:06:49,600 --> 00:06:51,460
‫avant de dire essentiellement que

142
00:06:51,460 --> 00:06:53,560
‫nous voulons que cette fonction middleware s'applique

143
00:06:53,560 --> 00:06:55,440
‫à chaque requête qui commence par find.

144
00:06:55,440 --> 00:06:57,820
‫Donc, pas seulement trouver, mais aussi des choses comme rechercher et

145
00:06:57,820 --> 00:07:00,520
‫mettre à jour, rechercher et supprimer, et toutes les requêtes de ce type.

146
00:07:00,520 --> 00:07:03,850
‫D'accord, et nous utilisons donc une expression régulière

147
00:07:03,850 --> 00:07:07,290
‫pour rechercher des mots ou des chaînes commençant par find.

148
00:07:07,290 --> 00:07:10,290
‫C'est donc ce que fait ce symbole ici.

149
00:07:10,290 --> 00:07:14,670
‫Et puis terminez l'expression régulière.

150
00:07:14,670 --> 00:07:18,600
‫Donc très simple.

151
00:07:18,600 --> 00:07:20,883
‫C'est celui que même moi je peux écrire

152
00:07:22,080 --> 00:07:24,250
‫sans aller d'abord sur Google et essayer

153
00:07:24,250 --> 00:07:25,720
‫de le trouver là-bas.

154
00:07:25,720 --> 00:07:27,650
‫D'accord, rappelez-vous qu'il s'agit d'un

155
00:07:27,650 --> 00:07:30,600
‫middleware de requête et que cela pointe donc

156
00:07:30,600 --> 00:07:32,480
‫vers la requête actuelle.

157
00:07:32,480 --> 00:07:36,760
‫D'accord, et revenons donc rapidement ici

158
00:07:36,760 --> 00:07:40,840
‫pour voir comment cela fonctionne.

159
00:07:42,350 --> 00:07:43,183
‫Nous avons donc

160
00:07:43,183 --> 00:07:47,070
‫notre obtenir tous les utilisateurs ici et ici, bien sûr, nous avons une requête de recherche.

161
00:07:47,070 --> 00:07:48,970
‫Et maintenant, avant que cette

162
00:07:48,970 --> 00:07:52,900
‫requête ne soit réellement exécutée, nous voulons y ajouter quelque chose.

163
00:07:52,900 --> 00:07:55,880
‫C'est-à-dire que nous voulons uniquement trouver les documents dont

164
00:07:55,880 --> 00:07:58,840
‫la propriété active est définie sur true.

165
00:07:58,840 --> 00:08:00,540
‫D'accord, donc c'est facile.

166
00:08:00,540 --> 00:08:03,260
‫C'est ici.

167
00:08:03,260 --> 00:08:05,823
‫Et

168
00:08:07,100 --> 00:08:09,840
‫donc ceci. find, puis bien sûr, notre objet de filtre ne contient que les documents dont

169
00:08:09,840 --> 00:08:10,673
‫la valeur active est

170
00:08:11,610 --> 00:08:12,443
‫définie sur true.

171
00:08:13,610 --> 00:08:15,037
‫Et c'est tout.

172
00:08:15,037 --> 00:08:15,980
‫Appelez le prochain middleware et nous avons terminé.

173
00:08:15,980 --> 00:08:17,910
‫D'accord, et donc si nous faisons maintenant

174
00:08:19,930 --> 00:08:24,180
‫la même requête, cette dernière ne devrait plus s'afficher car elle a encore une fois activé

175
00:08:24,180 --> 00:08:25,013
‫la valeur false.

176
00:08:27,610 --> 00:08:31,410
‫Et donc ça ne va pas correspondre à

177
00:08:31,410 --> 00:08:34,350
‫la requête que nous venons d'écrire.

178
00:08:34,350 --> 00:08:36,840
‫D'accord, maintenant nous n'avons aucun utilisateur ici

179
00:08:36,840 --> 00:08:40,240
‫et je suppose que c'est parce que les autres n'ont

180
00:08:40,240 --> 00:08:42,180
‫pas explicitement la propriété active définie

181
00:08:42,180 --> 00:08:43,223
‫sur true.

182
00:08:45,400 --> 00:08:48,530
‫Et donc faisons ce que nous avons fait dans cette autre section

183
00:08:48,530 --> 00:08:51,230
‫où nous disons qu'active ne devrait pas être faux.

184
00:08:51,230 --> 00:08:53,360
‫D'accord, nous utilisons donc

185
00:08:53,360 --> 00:08:55,810
‫l'opérateur non égal à et cela

186
00:08:55,810 --> 00:08:58,950
‫devrait bien sûr être dans son propre objet.

187
00:08:58,950 --> 00:09:02,230
‫Donc pas égal à faux.

188
00:09:02,230 --> 00:09:03,690
‫D'accord, c'est donc assez différent ici dans ce cas.

189
00:09:03,690 --> 00:09:05,900
‫Très bien, donc tous les documents

190
00:09:05,900 --> 00:09:09,343
‫où actif n'est pas égal à faux devraient maintenant apparaître et

191
00:09:10,290 --> 00:09:12,690
‫les deux autres devraient maintenant être de retour.

192
00:09:12,690 --> 00:09:16,540
‫Et en effet les voici.

193
00:09:16,540 --> 00:09:18,790
‫D'accord et c'est ainsi que nous supprimons essentiellement nos

194
00:09:18,790 --> 00:09:21,642
‫utilisateurs tout en ne les supprimant pas de la base de données.

195
00:09:21,642 --> 00:09:24,883
‫D'accord, nous ne supprimons donc pas les documents,

196
00:09:24,883 --> 00:09:27,390
‫nous les marquons seulement comme inactifs.

197
00:09:27,390 --> 00:09:31,190
‫D'accord, enregistrons rapidement ceci ici.

198
00:09:31,190 --> 00:09:34,760
‫Supprimer l'utilisateur

199
00:09:34,760 --> 00:09:37,210
‫actuel.

200
00:09:37,210 --> 00:09:39,883
‫Génial et avec cela, nous avons en

201
00:09:41,100 --> 00:09:43,963
‫fait terminé la partie authentification et autorisation de

202
00:09:46,180 --> 00:09:47,013
‫cette section.

203
00:09:48,680 --> 00:09:50,930
‫Donc tout ce qui était lié à ces sujets et

204
00:09:50,930 --> 00:09:53,470
‫aussi aux utilisateurs comme la mise à jour et la suppression d'utilisateurs.

205
00:09:53,470 --> 00:09:55,970
‫Cela fait également partie de l'authentification

206
00:09:55,970 --> 00:09:57,460
‫et de l'autorisation.

207
00:09:57,460 --> 00:10:00,440
‫Maintenant, dans le reste de cette

208
00:10:00,440 --> 00:10:04,410
‫section, nous allons parler de sécurité car bien sûr,

209
00:10:04,410 --> 00:10:07,000
‫c'est aussi en quelque sorte lié

210
00:10:07,000 --> 00:10:08,410
‫à l'authentification.

211
00:10:08,410 --> 00:10:10,020
‫D'accord, nous allons

212
00:10:10,020 --> 00:10:12,210
‫donc parler de quelques bonnes pratiques,

213
00:10:12,210 --> 00:10:14,740
‫puis en implémenter certaines dans notre projet.

