﻿1
00:00:00,890 --> 00:00:04,850
‫-: Quindi, dopo l'aggiornamento, consentiamo ora anche all'utente corrente di

2
00:00:04,850 --> 00:00:07,293
‫eliminare sostanzialmente il suo account.

3
00:00:09,070 --> 00:00:12,069
‫Ora, quando un utente decide di eliminare

4
00:00:12,069 --> 00:00:16,390
‫il suo account, in realtà non eliminiamo quel documento dal database.

5
00:00:16,390 --> 00:00:20,580
‫Ma invece abbiamo semplicemente impostato l'account su inattivo.

6
00:00:20,580 --> 00:00:23,170
‫In modo che l'utente possa

7
00:00:23,170 --> 00:00:26,910
‫in futuro riattivare l'account e anche in modo che

8
00:00:26,910 --> 00:00:29,820
‫possiamo ancora sostanzialmente accedere all'account in futuro,

9
00:00:29,820 --> 00:00:33,450
‫anche se ufficialmente, diciamo che è stato cancellato.

10
00:00:33,450 --> 00:00:34,440
‫Va bene?

11
00:00:34,440 --> 00:00:36,380
‫Quindi per implementarlo, prima di

12
00:00:36,380 --> 00:00:39,430
‫tutto dobbiamo creare una nuova proprietà nel nostro schema.

13
00:00:39,430 --> 00:00:40,850
‫Quindi, andiamo

14
00:00:40,850 --> 00:00:42,090
‫lì.

15
00:00:42,090 --> 00:00:43,740
‫E ora vogliamo

16
00:00:45,440 --> 00:00:47,163
‫avere un campo chiamato attivo.

17
00:00:48,210 --> 00:00:49,043
‫Va bene.

18
00:00:50,550 --> 00:00:52,150
‫Che dovrebbe essere del

19
00:00:54,370 --> 00:00:55,550
‫tipo booleano.

20
00:00:55,550 --> 00:00:57,430
‫Ok, e per impostazione

21
00:00:57,430 --> 00:00:58,263
‫predefinita

22
00:00:59,170 --> 00:01:00,040
‫sarà vero.

23
00:01:00,040 --> 00:01:02,180
‫Quindi qualsiasi utente che viene

24
00:01:02,180 --> 00:01:04,430
‫creato nuovo è ovviamente un utente attivo

25
00:01:04,430 --> 00:01:07,300
‫e quindi il valore booleano è impostato su true.

26
00:01:07,300 --> 00:01:11,360
‫Inoltre, non vogliamo mostrarlo nell'output, ok.

27
00:01:11,360 --> 00:01:13,350
‫Perché fondamentalmente vogliamo

28
00:01:13,350 --> 00:01:16,077
‫nascondere questo dettaglio di implementazione all'utente.

29
00:01:16,077 --> 00:01:17,260
‫Va bene?

30
00:01:17,260 --> 00:01:19,920
‫E quindi non vogliamo che nessuno

31
00:01:19,920 --> 00:01:24,390
‫sappia che questo flag, quindi questo flag attivo è qui, ok.

32
00:01:24,390 --> 00:01:28,930
‫Quindi diciamo seleziona e impostalo su false, va bene.

33
00:01:28,930 --> 00:01:29,883
‫Quindi,

34
00:01:30,830 --> 00:01:33,140
‫per eliminare l'utente ora, tutto

35
00:01:33,140 --> 00:01:35,400
‫ciò che dobbiamo fare è

36
00:01:35,400 --> 00:01:38,210
‫sostanzialmente impostare quel flag attivo su false.

37
00:01:38,210 --> 00:01:39,043
‫Va bene.

38
00:01:40,130 --> 00:01:42,390
‫Quindi creiamo quella funzione qui,

39
00:01:42,390 --> 00:01:43,223
‫exports. deleteMe, quindi

40
00:01:44,170 --> 00:01:45,529
‫era updateMe e

41
00:01:45,529 --> 00:01:46,930
‫ora è deleteMe e

42
00:01:46,930 --> 00:01:47,763
‫quindi

43
00:01:47,763 --> 00:01:51,614
‫sappiamo già che stiamo usando un catchAsync qui, giusto?

44
00:01:51,614 --> 00:01:54,410
‫E poi Async perché

45
00:01:54,410 --> 00:01:58,570
‫in pratica sappiamo già che aggiorneremo l'utente.

46
00:01:58,570 --> 00:02:01,150
‫Quindi la richiesta

47
00:02:01,150 --> 00:02:02,960
‫risponde dopo.

48
00:02:02,960 --> 00:02:03,913
‫Quindi,

49
00:02:06,470 --> 00:02:08,300
‫attendi Utente. trova per ID e

50
00:02:08,300 --> 00:02:10,700
‫aggiorna.

51
00:02:10,700 --> 00:02:12,573
‫Ok, e ancora, ovviamente ci sono

52
00:02:13,800 --> 00:02:15,960
‫solo opere per gli utenti che hanno effettuato

53
00:02:15,960 --> 00:02:18,830
‫l'accesso e quindi l'ID utente viene comodamente memorizzato su richiesta. utente. ID.

54
00:02:18,830 --> 00:02:21,617
‫e i dati che vogliamo aggiornare sono

55
00:02:21,617 --> 00:02:23,800
‫semplicemente attivi

56
00:02:23,800 --> 00:02:25,630
‫e impostati su false.

57
00:02:26,680 --> 00:02:28,010
‫Va bene.

58
00:02:28,900 --> 00:02:30,893
‫Ora anche inviare la risposta è abbastanza facile.

59
00:02:31,870 --> 00:02:33,280
‫Usiamo il codice

60
00:02:33,280 --> 00:02:37,560
‫204 per cancellato che poi farà in modo che in realtà in

61
00:02:37,560 --> 00:02:40,100
‫Postman non vediamo nemmeno questa risposta, ok.

62
00:02:40,100 --> 00:02:43,280
‫Ma lo inviamo comunque insieme

63
00:02:43,280 --> 00:02:47,230
‫alla richiesta perché è sempre la migliore pratica.

64
00:02:47,230 --> 00:02:49,830
‫Quindi, è ancora un successo e quindi ricorda

65
00:02:50,770 --> 00:02:52,720
‫che non inviamo alcun dato.

66
00:02:54,090 --> 00:02:56,610
‫Quindi, impostalo semplicemente su no.

67
00:02:56,610 --> 00:02:59,470
‫Va bene, e ora ovviamente aggiungilo anche a

68
00:02:59,470 --> 00:03:01,343
‫tutte le rotte qui.

69
00:03:02,890 --> 00:03:05,080
‫Quindi è abbastanza simile.

70
00:03:05,080 --> 00:03:07,193
‫Quindi deleteMe, quindi anche qui deleteMe e ora

71
00:03:08,850 --> 00:03:10,223
‫in realtà stiamo usando il

72
00:03:11,840 --> 00:03:12,880
‫metodo delete http.

73
00:03:14,620 --> 00:03:16,420
‫Ok, e ancora

74
00:03:16,420 --> 00:03:20,373
‫una volta, non elimineremo effettivamente un utente dal database.

75
00:03:21,480 --> 00:03:24,670
‫Ma finché l'utente non è più accessibile da nessuna parte, è comunque

76
00:03:24,670 --> 00:03:26,570
‫possibile utilizzare questo metodo http qui.

77
00:03:26,570 --> 00:03:30,550
‫Va bene, allora proviamolo adesso.

78
00:03:30,550 --> 00:03:34,277
‫Ok, anche se non siamo ancora pronti

79
00:03:34,277 --> 00:03:37,663
‫al 100%, proviamo lo stesso ora.

80
00:03:38,900 --> 00:03:42,010
‫Va bene, quindi, deleteMe ed

81
00:03:43,080 --> 00:03:46,193
‫è un percorso protetto, quindi dobbiamo

82
00:03:47,200 --> 00:03:50,629
‫essere registrati e quindi creiamo la

83
00:03:50,629 --> 00:03:51,720
‫nostra

84
00:03:51,720 --> 00:03:53,530
‫intestazione di autorizzazione,

85
00:03:53,530 --> 00:03:55,290
‫Bearer Token e

86
00:03:56,150 --> 00:03:59,923
‫ovviamente questo e questo è davvero tutto.

87
00:04:00,910 --> 00:04:03,350
‫Non abbiamo bisogno di passare alcun dato nel corpo.

88
00:04:04,640 --> 00:04:06,040
‫Non è necessario trasferire alcun dato nell'URL.

89
00:04:06,040 --> 00:04:08,730
‫Va bene, perché ancora una volta, gli unici

90
00:04:08,730 --> 00:04:11,173
‫dati necessari sono l'ID utente corrente e

91
00:04:12,010 --> 00:04:15,210
‫quello non è codificato all'interno del nostro token web adiacente.

92
00:04:15,210 --> 00:04:18,560
‫Va bene?

93
00:04:18,560 --> 00:04:21,150
‫Quindi quello che dobbiamo fare è anche eliminare e sì,

94
00:04:21,150 --> 00:04:21,983
‫ora dovrebbe funzionare.

95
00:04:23,510 --> 00:04:25,720
‫Quindi, prima di farlo,

96
00:04:26,660 --> 00:04:29,240
‫prendiamo l'elenco di tutti gli utenti.

97
00:04:29,240 --> 00:04:31,830
‫Va bene, quindi quello che stiamo cancellando

98
00:04:31,830 --> 00:04:33,113
‫ora è quest'ultimo.

99
00:04:34,870 --> 00:04:38,110
‫Quindi questo che abbiamo appena creato nell'ultima lezione.

100
00:04:38,110 --> 00:04:39,533
‫Ok, e stiamo

101
00:04:41,060 --> 00:04:44,300
‫lavorando con questo perché è l'ultimo che ha effettuato

102
00:04:44,300 --> 00:04:47,270
‫l'accesso e quindi è questo token qui che

103
00:04:47,270 --> 00:04:49,710
‫è ora memorizzato nella nostra variabile token.

104
00:04:49,710 --> 00:04:51,370
‫Ok, quindi quando elimineremo

105
00:04:51,370 --> 00:04:54,460
‫l'utente sarà basato sull'ID proveniente da questo token.

106
00:04:54,460 --> 00:04:57,020
‫Quindi proviamolo ora.

107
00:04:57,020 --> 00:05:00,163
‫E infatti otteniamo il nostro 204.

108
00:05:01,700 --> 00:05:03,093
‫E ora quello che mi

109
00:05:06,080 --> 00:05:08,690
‫interessa è vedere se la proprietà select qui è cambiata.

110
00:05:08,690 --> 00:05:11,600
‫E in realtà sembra esattamente lo stesso qui.

111
00:05:11,600 --> 00:05:13,763
‫E questo perché non stiamo

112
00:05:15,290 --> 00:05:17,820
‫perdendo il campo di selezione all'utente.

113
00:05:17,820 --> 00:05:19,760
‫E quindi abbiamo davvero bisogno di vederlo qui.

114
00:05:19,760 --> 00:05:22,460
‫Va bene e quindi in effetti abbiamo qui attivo impostato su false.

115
00:05:22,460 --> 00:05:25,053
‫Ok, questo è quello che volevo dire prima.

116
00:05:26,180 --> 00:05:31,110
‫Quindi non stiamo perdendo i campi attivi all'utente,

117
00:05:31,110 --> 00:05:34,560
‫non il campo selezionato.

118
00:05:34,560 --> 00:05:37,640
‫Così attivo è visibile solo per noi qui

119
00:05:37,640 --> 00:05:40,020
‫in bussola ma non per l'utente.

120
00:05:40,020 --> 00:05:42,230
‫Ora, come ultimo passaggio, ovviamente

121
00:05:42,230 --> 00:05:45,280
‫non vogliamo mostrare gli utenti inattivi in

122
00:05:45,280 --> 00:05:46,920
‫questo output, giusto.

123
00:05:46,920 --> 00:05:50,080
‫E come pensi che potremmo implementarlo?

124
00:05:50,080 --> 00:05:53,960
‫Bene, useremo qualcosa che è molto tempo fa di

125
00:05:53,960 --> 00:05:57,400
‫cui abbiamo parlato due o tre sezioni fa,

126
00:05:57,400 --> 00:06:00,500
‫che è il middleware di query, ok.

127
00:06:00,500 --> 00:06:03,400
‫Quindi il middleware di query è perfetto per

128
00:06:03,400 --> 00:06:06,140
‫questo perché ora possiamo praticamente aggiungere un passaggio

129
00:06:06,140 --> 00:06:08,940
‫prima di qualsiasi altra query che stiamo facendo

130
00:06:08,940 --> 00:06:11,380
‫da qualche parte nella nostra applicazione.

131
00:06:11,380 --> 00:06:14,160
‫Quindi andiamo al nostro modello utente qui

132
00:06:14,160 --> 00:06:16,500
‫e aggiungiamo quel middleware qui.

133
00:06:16,500 --> 00:06:19,810
‫Quindi userSchema. pre, quindi qualcosa che accadrà prima di una query e

134
00:06:19,810 --> 00:06:21,763
‫quella query sarà una ricerca.

135
00:06:25,310 --> 00:06:26,657
‫Ok, quindi questo è ciò che rende questo middleware di query.

136
00:06:29,339 --> 00:06:32,850
‫Quindi una funzione regolare perché ricorda

137
00:06:32,850 --> 00:06:37,760
‫che altrimenti non avremo accesso alla discordia o

138
00:06:37,760 --> 00:06:40,583
‫almeno non avrà il valore

139
00:06:42,330 --> 00:06:44,670
‫che ci aspettiamo

140
00:06:44,670 --> 00:06:46,390
‫che abbia.

141
00:06:46,390 --> 00:06:49,600
‫E ricorda che qui in realtà abbiamo usato un'espressione regolare prima

142
00:06:49,600 --> 00:06:51,460
‫sostanzialmente per dire che vogliamo

143
00:06:51,460 --> 00:06:53,560
‫che questa funzione middleware si applichi a

144
00:06:53,560 --> 00:06:55,440
‫ogni query che inizia con find.

145
00:06:55,440 --> 00:06:57,820
‫Quindi non solo trova, ma anche cose come trova

146
00:06:57,820 --> 00:07:00,520
‫e aggiorna, trova ed elimina e tutte le domande del genere.

147
00:07:00,520 --> 00:07:03,850
‫Ok, quindi usiamo un'espressione regolare alla ricerca

148
00:07:03,850 --> 00:07:07,290
‫di parole o stringhe che iniziano con trova.

149
00:07:07,290 --> 00:07:10,290
‫Quindi questo è ciò che fa questo simbolo qui.

150
00:07:10,290 --> 00:07:14,670
‫E poi termina l'espressione regolare.

151
00:07:14,670 --> 00:07:18,600
‫Quindi molto semplice.

152
00:07:18,600 --> 00:07:20,883
‫Questo è quello che anche io posso

153
00:07:22,080 --> 00:07:24,250
‫scrivere senza andare prima su Google e

154
00:07:24,250 --> 00:07:25,720
‫provare a trovarlo lì.

155
00:07:25,720 --> 00:07:27,650
‫Ok, ricorda che questo è

156
00:07:27,650 --> 00:07:30,600
‫il middleware della query e quindi punta

157
00:07:30,600 --> 00:07:32,480
‫alla query corrente.

158
00:07:32,480 --> 00:07:36,760
‫Ok, quindi torniamo subito qui

159
00:07:36,760 --> 00:07:40,840
‫per vedere come funziona.

160
00:07:42,350 --> 00:07:43,183
‫Quindi abbiamo il

161
00:07:43,183 --> 00:07:47,070
‫nostro ottenere tutti gli utenti qui e qui ovviamente abbiamo una query di ricerca.

162
00:07:47,070 --> 00:07:48,970
‫E ora, prima

163
00:07:48,970 --> 00:07:52,900
‫che la query venga effettivamente eseguita, vogliamo aggiungervi qualcosa.

164
00:07:52,900 --> 00:07:55,880
‫Vale a dire che vogliamo solo trovare documenti che

165
00:07:55,880 --> 00:07:58,840
‫hanno la proprietà attiva impostata su true.

166
00:07:58,840 --> 00:08:00,540
‫Va bene, quindi è facile.

167
00:08:00,540 --> 00:08:03,260
‫Ecco qui.

168
00:08:03,260 --> 00:08:05,823
‫E

169
00:08:07,100 --> 00:08:09,840
‫così questo. trova e poi ovviamente il nostro oggetto filtro documenta solo

170
00:08:09,840 --> 00:08:10,673
‫con attivo impostato

171
00:08:11,610 --> 00:08:12,443
‫su true.

172
00:08:13,610 --> 00:08:15,037
‫E questo è tutto.

173
00:08:15,037 --> 00:08:15,980
‫Chiamando il prossimo middleware e abbiamo finito.

174
00:08:15,980 --> 00:08:17,910
‫Ok, quindi se ora eseguiamo la

175
00:08:19,930 --> 00:08:24,180
‫stessa query, quest'ultima non dovrebbe più essere visualizzata perché di nuovo è impostata

176
00:08:24,180 --> 00:08:25,013
‫su false.

177
00:08:27,610 --> 00:08:31,410
‫E quindi non corrisponderà alla query

178
00:08:31,410 --> 00:08:34,350
‫che abbiamo appena scritto.

179
00:08:34,350 --> 00:08:36,840
‫Ok, ora non abbiamo nessun utente qui

180
00:08:36,840 --> 00:08:40,240
‫e immagino che sia perché gli altri non hanno

181
00:08:40,240 --> 00:08:42,180
‫esplicitamente la proprietà attiva impostata

182
00:08:42,180 --> 00:08:43,223
‫su true.

183
00:08:45,400 --> 00:08:48,530
‫E quindi facciamo ciò che abbiamo effettivamente fatto in quell'altra sezione

184
00:08:48,530 --> 00:08:51,230
‫in cui diciamo che attivo non dovrebbe essere falso.

185
00:08:51,230 --> 00:08:53,360
‫Ok, quindi usiamo

186
00:08:53,360 --> 00:08:55,810
‫l'operatore non uguale a e

187
00:08:55,810 --> 00:08:58,950
‫che ovviamente dovrebbe essere nel suo oggetto.

188
00:08:58,950 --> 00:09:02,230
‫Quindi non uguale a falso.

189
00:09:02,230 --> 00:09:03,690
‫Ok, quindi è molto diverso qui in questo caso.

190
00:09:03,690 --> 00:09:05,900
‫Bene, quindi tutti i documenti in

191
00:09:05,900 --> 00:09:09,343
‫cui attivo non è uguale a falso dovrebbero ora essere visualizzati

192
00:09:10,290 --> 00:09:12,690
‫e quindi gli altri due dovrebbero essere tornati.

193
00:09:12,690 --> 00:09:16,540
‫E infatti eccoli qui.

194
00:09:16,540 --> 00:09:18,790
‫Ok, quindi è così che eliminiamo

195
00:09:18,790 --> 00:09:21,642
‫sostanzialmente i nostri utenti senza eliminarli dal database.

196
00:09:21,642 --> 00:09:24,883
‫Ok, quindi non eliminiamo i documenti, li

197
00:09:24,883 --> 00:09:27,390
‫contrassegniamo solo come inattivi.

198
00:09:27,390 --> 00:09:31,190
‫Ok, salviamolo velocemente qui.

199
00:09:31,190 --> 00:09:34,760
‫Elimina l'utente

200
00:09:34,760 --> 00:09:37,210
‫corrente.

201
00:09:37,210 --> 00:09:39,883
‫Ottimo e con questo abbiamo effettivamente terminato

202
00:09:41,100 --> 00:09:43,963
‫la parte di autenticazione e autorizzazione di questa

203
00:09:46,180 --> 00:09:47,013
‫sezione.

204
00:09:48,680 --> 00:09:50,930
‫Quindi tutto ciò che era correlato a questi

205
00:09:50,930 --> 00:09:53,470
‫argomenti e anche agli utenti come l'aggiornamento e l'eliminazione degli utenti.

206
00:09:53,470 --> 00:09:55,970
‫Anche questo fa parte dell'autenticazione

207
00:09:55,970 --> 00:09:57,460
‫e dell'autorizzazione.

208
00:09:57,460 --> 00:10:00,440
‫Ora, nel resto di questa sezione,

209
00:10:00,440 --> 00:10:04,410
‫parleremo di sicurezza perché ovviamente anche questa

210
00:10:04,410 --> 00:10:07,000
‫è in qualche modo

211
00:10:07,000 --> 00:10:08,410
‫correlata all'autenticazione.

212
00:10:08,410 --> 00:10:10,020
‫Ok, quindi parleremo di

213
00:10:10,020 --> 00:10:12,210
‫un paio di best practice e

214
00:10:12,210 --> 00:10:14,740
‫poi ne implementeremo alcune nel nostro progetto.

