﻿1
00:00:01,054 --> 00:00:04,060
‫-: In questa lezione, consentiremo all'utente

2
00:00:04,060 --> 00:00:07,283
‫attualmente connesso di manipolare i suoi dati utente.

3
00:00:09,020 --> 00:00:11,910
‫E così ora, implementando gli aggiornamenti degli

4
00:00:11,910 --> 00:00:14,880
‫utenti, stiamo davvero lasciando il dominio dell'autenticazione e

5
00:00:14,880 --> 00:00:19,030
‫ci stiamo spostando di più in cose relative agli utenti reali, ok?

6
00:00:19,030 --> 00:00:22,180
‫Quindi, invece di utilizzare il controller di autenticazione

7
00:00:22,180 --> 00:00:24,840
‫ora, implementiamo questa funzionalità di aggiornamento

8
00:00:24,840 --> 00:00:26,743
‫direttamente nel loro userController.

9
00:00:27,850 --> 00:00:28,970
‫Ok, quindi

10
00:00:28,970 --> 00:00:31,710
‫abbiamo un sacco di gestori, quindi

11
00:00:31,710 --> 00:00:35,270
‫di percorsi, che non sono realmente implementati qui, ok?

12
00:00:35,270 --> 00:00:37,420
‫Ma lasciamoli da parte per ora

13
00:00:37,420 --> 00:00:40,553
‫e creiamo la nostra nuova funzione di gestione qui sotto.

14
00:00:42,800 --> 00:00:45,143
‫E questo si chiamerà updateMe.

15
00:00:48,312 --> 00:00:51,260
‫E così di nuovo, è updateMe perché serve

16
00:00:51,260 --> 00:00:53,323
‫per aggiornare l'utente attualmente autenticato.

17
00:00:54,580 --> 00:00:56,620
‫Successivamente, implementeremo anche questa funzione

18
00:00:56,620 --> 00:01:00,070
‫updateUser qui, ma questo è come un amministratore

19
00:01:00,070 --> 00:01:03,680
‫per aggiornare tutti i dati dell'utente, mentre l'utente

20
00:01:03,680 --> 00:01:07,490
‫stesso può aggiornare solo, almeno per ora, il nome

21
00:01:07,490 --> 00:01:09,293
‫e l'indirizzo e-mail.

22
00:01:12,180 --> 00:01:15,900
‫Quindi, richiesta, risposta e il prossimo.

23
00:01:17,205 --> 00:01:20,205
‫(clack della tastiera) E lo stiamo effettivamente

24
00:01:22,550 --> 00:01:25,800
‫facendo, quindi aggiornando i dati dell'utente, in un

25
00:01:25,800 --> 00:01:29,180
‫percorso diverso rispetto all'aggiornamento della password dell'utente, beh perché

26
00:01:29,180 --> 00:01:32,040
‫di solito in una tipica applicazione web

27
00:01:32,040 --> 00:01:33,773
‫è sempre così.

28
00:01:34,720 --> 00:01:36,370
‫Quindi di solito hai

29
00:01:36,370 --> 00:01:38,190
‫un posto dove puoi aggiornare

30
00:01:38,190 --> 00:01:40,630
‫la tua password e poi un altro posto

31
00:01:40,630 --> 00:01:43,700
‫dove puoi aggiornare i dati sull'utente o sull'account stesso.

32
00:01:43,700 --> 00:01:46,993
‫E quindi qui, stiamo semplicemente seguendo questo schema.

33
00:01:48,592 --> 00:01:52,410
‫Quindi, di nuovo, iniziamo esponendo i nostri passaggi.

34
00:01:52,410 --> 00:01:54,140
‫E la prima cosa che

35
00:01:54,140 --> 00:01:56,090
‫vogliamo fare qui è creare fondamentalmente

36
00:01:56,090 --> 00:01:58,703
‫un errore se l'utente tenta di aggiornare la password.

37
00:02:01,993 --> 00:02:05,737
‫Quindi crea un errore se l'utente pubblica

38
00:02:07,330 --> 00:02:10,073
‫fondamentalmente i dati della password.

39
00:02:13,406 --> 00:02:17,980
‫Ma in caso contrario, dobbiamo semplicemente aggiornare il documento dell'utente.

40
00:02:20,610 --> 00:02:23,720
‫Abbastanza semplice, e cominciamo ovviamente con

41
00:02:23,720 --> 00:02:24,783
‫il primo.

42
00:02:26,410 --> 00:02:28,180
‫Ovviamente ci sarà un

43
00:02:28,180 --> 00:02:30,220
‫corpo in cui passeremo i dati,

44
00:02:30,220 --> 00:02:33,933
‫e quindi se su quel corpo ci sono dati sulla password,

45
00:02:35,890 --> 00:02:37,929
‫o una conferma della password...

46
00:02:37,929 --> 00:02:40,596
‫(tasti che battono)

47
00:02:44,047 --> 00:02:45,350
‫Confermare.

48
00:02:45,350 --> 00:02:49,410
‫Bene, in tal caso, vogliamo tornare immediatamente e

49
00:02:49,410 --> 00:02:51,833
‫creare un nuovo Apperror.

50
00:02:53,920 --> 00:02:57,110
‫Oh, e immagino che non l'abbiamo ancora implementato qui,

51
00:02:57,110 --> 00:02:58,780
‫o in realtà lo

52
00:02:58,780 --> 00:03:00,663
‫richiediamo, quindi prendiamolo da qui.

53
00:03:01,660 --> 00:03:02,730
‫Quindi AppError...

54
00:03:04,360 --> 00:03:05,580
‫Non è

55
00:03:05,580 --> 00:03:07,400
‫qui, quindi userController...

56
00:03:11,550 --> 00:03:13,550
‫Quindi AppError, ci siamo.

57
00:03:15,700 --> 00:03:20,700
‫Quindi 'Questo percorso non è per gli aggiornamenti delle password.

58
00:03:26,280 --> 00:03:29,623
‫'Utilizzare /updateMYPassword. ' Quindi sostanzialmente

59
00:03:32,160 --> 00:03:34,960
‫il percorso che abbiamo specificato prima.

60
00:03:34,960 --> 00:03:36,720
‫Quindi aggiornaMYPassword.

61
00:03:39,226 --> 00:03:42,753
‫E poi anche un codice 400 per una cattiva richiesta.

62
00:03:46,150 --> 00:03:48,743
‫E proviamo subito questo.

63
00:03:49,921 --> 00:03:51,770
‫E per questo

64
00:03:51,770 --> 00:03:54,133
‫solo due cose, prima dobbiamo inviare

65
00:03:56,230 --> 00:04:00,660
‫una risposta, quindi diciamo res. status(200) per okay, quindi json,

66
00:04:00,660 --> 00:04:01,993
‫aggiungi lo

67
00:04:07,130 --> 00:04:09,070
‫stato come success.

68
00:04:09,070 --> 00:04:11,860
‫E in seguito invieremo anche l'utente aggiornato, ma

69
00:04:11,860 --> 00:04:13,563
‫lo lasciamo per dopo.

70
00:04:14,610 --> 00:04:16,840
‫Quindi questa è la risposta, e ora ovviamente

71
00:04:16,840 --> 00:04:19,893
‫abbiamo anche bisogno di aggiungere questo percorso al nostro router utente.

72
00:04:21,880 --> 00:04:24,993
‫Quindi è ovviamente simile all'aggiornamento della mia

73
00:04:26,390 --> 00:04:29,663
‫password, quindi router e, naturalmente, una patch, /updateMe,

74
00:04:32,066 --> 00:04:32,899
‫quindi

75
00:04:35,370 --> 00:04:38,080
‫di nuovo, è un percorso protetto

76
00:04:38,080 --> 00:04:42,120
‫in modo che solo l'utente attualmente autenticato possa aggiornare i

77
00:04:42,120 --> 00:04:43,603
‫dati dell'utente corrente.

78
00:04:45,420 --> 00:04:48,240
‫E quindi tutto questo è ovviamente davvero

79
00:04:48,240 --> 00:04:51,540
‫sicuro, ancora una volta perché l'ID dell'utente che verrà aggiornato

80
00:04:51,540 --> 00:04:53,960
‫proviene dalla richiesta. user, che

81
00:04:53,960 --> 00:04:58,120
‫è stato impostato da questo middleware di protezione qui, che a

82
00:04:58,120 --> 00:05:01,700
‫sua volta ha preso l'idea dal token web json, e

83
00:05:01,700 --> 00:05:05,180
‫poiché nessuno può cambiare l'ID in quel token web

84
00:05:05,180 --> 00:05:07,920
‫json senza conoscere il segreto, sappiamo bene

85
00:05:07,920 --> 00:05:11,260
‫che l'ID è quindi sicuro a causa di ciò.

86
00:05:11,260 --> 00:05:13,993
‫E quindi per questo tutto qui è al sicuro.

87
00:05:16,342 --> 00:05:18,675
‫Quindi, userController. aggiornami.

88
00:05:21,554 --> 00:05:22,471
‫Adesso va bene...

89
00:05:24,050 --> 00:05:26,003
‫Quindi proviamo questo ora.

90
00:05:28,830 --> 00:05:30,883
‫Vai avanti e copialo di nuovo.

91
00:05:34,530 --> 00:05:37,363
‫E prima di tutto, impostiamo l'autorizzazione.

92
00:05:38,300 --> 00:05:41,520
‫Di nuovo dal token Bearer e ovviamente

93
00:05:41,520 --> 00:05:43,770
‫con questa variabile d'ambiente.

94
00:05:45,788 --> 00:05:48,470
‫Inoltre deve essere una richiesta di patch

95
00:05:48,470 --> 00:05:50,653
‫e dobbiamo specificare un corpo.

96
00:05:53,740 --> 00:05:56,110
‫E voglio iniziare testandolo, causando ovviamente

97
00:05:56,110 --> 00:05:57,930
‫questo errore, quindi specifichiamo

98
00:05:57,930 --> 00:05:59,653
‫una password e poi

99
00:06:06,170 --> 00:06:07,613
‫un nome.

100
00:06:12,620 --> 00:06:15,883
‫Quindi diciamo che questo è il nome che vogliamo

101
00:06:17,030 --> 00:06:18,620
‫aggiornare, quindi salviamolo qui.

102
00:06:20,911 --> 00:06:23,361
‫E in realtà è ovviamente nella cartella Utenti.

103
00:06:26,960 --> 00:06:28,973
‫Dati utente.

104
00:06:30,810 --> 00:06:32,750
‫E in realtà creiamo una nuova

105
00:06:32,750 --> 00:06:35,670
‫cartella qui e mettiamo le cose relative all'autenticazione

106
00:06:35,670 --> 00:06:37,123
‫nella propria cartella.

107
00:06:39,998 --> 00:06:42,960
‫Quindi, quassù, creiamo

108
00:06:42,960 --> 00:06:47,960
‫una nuova cartella e la chiamiamo Autenticazione.

109
00:06:48,150 --> 00:06:49,460
‫Non è corretto.

110
00:06:49,460 --> 00:06:52,354
‫AH-THEN-TICATION.

111
00:06:52,354 --> 00:06:53,554
‫(ridacchia) Allora è così.

112
00:06:55,480 --> 00:06:58,593
‫E quindi la password è correlata

113
00:06:59,550 --> 00:07:04,530
‫all'autenticazione, anche alla reimpostazione della password, alla dimenticanza della password,

114
00:07:04,530 --> 00:07:07,193
‫all'accesso e alla disconnessione.

115
00:07:11,078 --> 00:07:13,245
‫Quindi, chiudiamo questi due e

116
00:07:14,440 --> 00:07:16,800
‫ora accedi come, o effettivamente creiamo

117
00:07:16,800 --> 00:07:18,600
‫un nuovo utente.

118
00:07:20,490 --> 00:07:22,043
‫Quindi iscriviamoci qui,

119
00:07:24,170 --> 00:07:28,600
‫come utente normale, così possiamo sbarazzarci di questi due qui.

120
00:07:28,600 --> 00:07:33,150
‫E ora lo sto semplicemente chiamando, beh, prova di nuovo, va bene?

121
00:07:33,150 --> 00:07:36,060
‫E diamo un'occhiata a quali utenti abbiamo attualmente

122
00:07:38,520 --> 00:07:40,100
‫nel nostro database.

123
00:07:40,100 --> 00:07:41,950
‫Quindi abbiamo ciao e

124
00:07:41,950 --> 00:07:43,823
‫amministratore, quindi ora usiamo test.

125
00:07:47,400 --> 00:07:49,260
‫E sono sempre di nuovo, usando la stessa

126
00:07:49,260 --> 00:07:50,483
‫password per renderlo davvero facile.

127
00:07:52,310 --> 00:07:55,833
‫Va bene, dobbiamo dare anche il nome, chiamiamolo

128
00:07:59,530 --> 00:08:01,003
‫J qui.

129
00:08:03,180 --> 00:08:05,570
‫E ora effettivamente otteniamo il nostro token,

130
00:08:05,570 --> 00:08:07,120
‫e siamo già connessi,

131
00:08:07,120 --> 00:08:09,250
‫quindi ora quando aggiorniamo l'utente, dovrebbe

132
00:08:09,250 --> 00:08:12,083
‫essere per questo utente che ha appena effettuato l'accesso.

133
00:08:13,734 --> 00:08:15,770
‫Quindi non sto cercando di aggiornare

134
00:08:15,770 --> 00:08:19,180
‫e, naturalmente, nessun aggiornamento è stato ancora implementato e quindi non funzionerà.

135
00:08:19,180 --> 00:08:21,820
‫Tutto quello che voglio vedere è l'errore

136
00:08:21,820 --> 00:08:25,713
‫che dovrebbe verificarsi perché ho specificato questa proprietà password qui sul corpo.

137
00:08:27,361 --> 00:08:28,720
‫Quindi proviamolo.

138
00:08:28,720 --> 00:08:31,973
‫E qui otteniamo questo tipo di errore dall'aspetto strano, ma

139
00:08:33,190 --> 00:08:35,700
‫immagino sia semplicemente perché non abbiamo effettivamente aggiornato

140
00:08:35,700 --> 00:08:37,150
‫il percorso qui,

141
00:08:37,150 --> 00:08:40,500
‫quindi ricorda che ho appena copiato un percorso, quindi l'URL,

142
00:08:40,500 --> 00:08:42,160
‫e l'ho appena incollato qui.

143
00:08:42,160 --> 00:08:46,610
‫Ma ovviamente, deve essere updateME.

144
00:08:46,610 --> 00:08:48,630
‫Quindi proviamo di nuovo.

145
00:08:48,630 --> 00:08:51,617
‫E così ora otteniamo effettivamente quell'errore che abbiamo specificato.

146
00:08:51,617 --> 00:08:53,627
‫"Questo percorso non è per gli aggiornamenti della password.

147
00:08:53,627 --> 00:08:56,300
‫"Utilizzare /updateMyPassowrd. "Così fantastico,

148
00:08:56,300 --> 00:08:58,450
‫quella parte funziona, e

149
00:08:58,450 --> 00:09:01,890
‫funziona anche che dobbiamo essere autenticati.

150
00:09:01,890 --> 00:09:05,700
‫Perché diciamo che non abbiamo autenticazione, quindi

151
00:09:05,700 --> 00:09:08,410
‫diciamo che: No Auth.

152
00:09:08,410 --> 00:09:10,330
‫E quindi proviamoci di nuovo adesso.

153
00:09:10,330 --> 00:09:12,867
‫E così infatti, "Non sei loggato!

154
00:09:12,867 --> 00:09:15,157
‫"Effettua il login per ottenere l'accesso. "Quindi, solo

155
00:09:17,300 --> 00:09:19,800
‫per dimostrarti che la nostra autenticazione sta effettivamente

156
00:09:19,800 --> 00:09:21,853
‫facendo il suo lavoro anche qui.

157
00:09:23,260 --> 00:09:25,450
‫Ma ovviamente, vogliamo il nostro token

158
00:09:25,450 --> 00:09:27,933
‫Bearer, e quindi ora otteniamo quell'altro errore.

159
00:09:29,990 --> 00:09:32,790
‫Ottimo, quindi ora andiamo avanti

160
00:09:32,790 --> 00:09:36,943
‫implementando il resto della funzionalità per il gestore updateMe.

161
00:09:38,170 --> 00:09:40,970
‫Quindi aggiornando il documento dell'utente, e potremmo provare

162
00:09:40,970 --> 00:09:43,910
‫a farlo con l'utente. sicuro.

163
00:09:43,910 --> 00:09:46,860
‫Quindi, proprio come prima, in pratica ottenendo l'utente,

164
00:09:46,860 --> 00:09:49,430
‫quindi aggiornando le proprietà e quindi, alla

165
00:09:49,430 --> 00:09:51,030
‫fine, salvando il documento.

166
00:09:51,030 --> 00:09:53,500
‫Ma il problema è che ci sono

167
00:09:53,500 --> 00:09:56,320
‫alcuni campi obbligatori che non aggiorniamo e quindi

168
00:09:56,320 --> 00:09:57,680
‫a causa di

169
00:09:57,680 --> 00:09:59,490
‫ciò, si verificherà un errore.

170
00:09:59,490 --> 00:10:01,330
‫E quindi, solo per dimostrartelo rapidamente, lascia

171
00:10:01,330 --> 00:10:02,530
‫che lo faccia davvero.

172
00:10:03,430 --> 00:10:06,403
‫Ok, molto velocemente, portando qui l'utente.

173
00:10:09,490 --> 00:10:14,490
‫Quindi findbyId, quindi richiesta. utente come già sappiamo, . ID.

174
00:10:17,540 --> 00:10:22,540
‫E poi diciamo, utente. name = 'Jonas' e quindi attendere

175
00:10:25,582 --> 00:10:27,297
‫l'utente. Salva.

176
00:10:30,660 --> 00:10:33,763
‫Ma di nuovo vedi che questo ci darà un errore allora.

177
00:10:35,277 --> 00:10:37,320
‫Ma per ora, ovviamente, dichiariamola anche

178
00:10:37,320 --> 00:10:38,763
‫come funzione asincrona.

179
00:10:45,700 --> 00:10:47,970
‫E va bene.

180
00:10:47,970 --> 00:10:49,690
‫Quindi testiamolo ora,

181
00:10:49,690 --> 00:10:52,780
‫ma dovremmo aspettarci di vedere un errore ora.

182
00:10:52,780 --> 00:10:55,113
‫Quindi, ovviamente, liberiamoci di

183
00:10:58,910 --> 00:11:02,560
‫questo, e infatti otteniamo: "Conferma la tua password".

184
00:11:02,560 --> 00:11:06,380
‫E questo perché passwordConfirm è un campo obbligatorio ma

185
00:11:06,380 --> 00:11:08,763
‫ovviamente non lo abbiamo specificato.

186
00:11:09,770 --> 00:11:12,940
‫E quindi il metodo sicuro non è davvero l'opzione

187
00:11:12,940 --> 00:11:14,760
‫corretta in questo caso.

188
00:11:14,760 --> 00:11:16,560
‫Quindi, invece, quello che

189
00:11:16,560 --> 00:11:19,453
‫possiamo fare ora è usare effettivamente findById e update.

190
00:11:20,540 --> 00:11:23,560
‫Quindi non potevamo usarlo prima per tutti i motivi

191
00:11:23,560 --> 00:11:25,970
‫che ti ho spiegato più volte ormai.

192
00:11:25,970 --> 00:11:28,460
‫Ma ora dal momento che non abbiamo

193
00:11:28,460 --> 00:11:32,380
‫a che fare con le password, ma solo con questi dati non

194
00:11:32,380 --> 00:11:36,263
‫sensibili come nome o e-mail, ora possiamo usare findById e update.

195
00:11:38,810 --> 00:11:40,343
‫Quindi, liberiamoci di questo.

196
00:11:42,380 --> 00:11:46,040
‫Chiamiamolo anche qui aggiornatoUser.

197
00:11:46,040 --> 00:11:48,950
‫E poi qui dentro, dobbiamo passare non solo l'ID,

198
00:11:48,950 --> 00:11:51,400
‫ma anche i dati che dovrebbero essere aggiornati,

199
00:11:51,400 --> 00:11:53,040
‫e poi alcune opzioni.

200
00:11:53,040 --> 00:11:56,303
‫Quindi i dati, per ora chiamiamoli x qui, e ti

201
00:11:57,650 --> 00:11:59,140
‫sto dicendo perché in

202
00:11:59,140 --> 00:12:02,250
‫un secondo, e poi le opzioni che vogliamo passare.

203
00:12:02,250 --> 00:12:04,180
‫E quindi è proprio come prima,

204
00:12:04,180 --> 00:12:07,240
‫la nuova opzione impostata su true, in modo che

205
00:12:07,240 --> 00:12:09,090
‫restituisca il nuovo oggetto,

206
00:12:09,090 --> 00:12:12,033
‫quindi fondamentalmente l'oggetto aggiornato invece di quello vecchio.

207
00:12:12,880 --> 00:12:16,393
‫E anche runValidators è impostato su true.

208
00:12:17,670 --> 00:12:22,000
‫Perché in effetti vogliamo che i modelli convalidino il nostro documento.

209
00:12:22,000 --> 00:12:25,490
‫Quindi, ad esempio, se inseriamo un indirizzo email non valido, questo

210
00:12:25,490 --> 00:12:28,490
‫dovrebbe essere rilevato dal Validator e restituire un errore.

211
00:12:29,770 --> 00:12:34,770
‫Ora perché metto x qui e non semplicemente richiesta. corpo?

212
00:12:35,040 --> 00:12:37,510
‫Bene, questo perché in realtà non

213
00:12:37,510 --> 00:12:40,010
‫vogliamo aggiornare tutto ciò che è nel

214
00:12:40,010 --> 00:12:43,130
‫corpo, perché diciamo che l'utente inserisce, nel corpo, il

215
00:12:43,130 --> 00:12:44,513
‫ruolo per esempio.

216
00:12:46,550 --> 00:12:51,550
‫Potremmo avere un corpo. ruolo impostato su admin, ad esempio,

217
00:12:52,510 --> 00:12:55,040
‫e quindi questo consentirebbe a qualsiasi utente

218
00:12:55,040 --> 00:12:57,860
‫di modificare il ruolo, ad esempio, in amministratore.

219
00:12:57,860 --> 00:13:00,200
‫E ovviamente questo non può essere permesso.

220
00:13:00,200 --> 00:13:02,850
‫Oppure l'utente potrebbe anche cambiare il proprio token

221
00:13:02,850 --> 00:13:05,350
‫di ripristino, o quando il token di

222
00:13:05,350 --> 00:13:08,290
‫ripristino scade, e tutto ciò non dovrebbe essere consentito, ovviamente.

223
00:13:08,290 --> 00:13:10,440
‫Quindi fare una cosa del genere

224
00:13:10,440 --> 00:13:12,520
‫sarebbe ovviamente un grosso errore.

225
00:13:12,520 --> 00:13:14,773
‫E quindi dobbiamo assicurarci che l'oggetto

226
00:13:14,773 --> 00:13:16,640
‫che passiamo qui, quindi di

227
00:13:16,640 --> 00:13:19,460
‫nuovo quell'oggetto che conterrà i dati che verranno

228
00:13:19,460 --> 00:13:20,860
‫aggiornati, contenga solo

229
00:13:20,860 --> 00:13:23,540
‫nome ed email, perché per ora questi

230
00:13:23,540 --> 00:13:25,940
‫sono gli unici campi che vogliamo

231
00:13:25,940 --> 00:13:27,623
‫consentire di aggiornare .

232
00:13:28,640 --> 00:13:31,150
‫E quindi fondamentalmente vogliamo filtrare il corpo

233
00:13:31,150 --> 00:13:34,370
‫in modo che alla fine contenga solo nome ed

234
00:13:34,370 --> 00:13:35,610
‫email e nient'altro.

235
00:13:35,610 --> 00:13:38,620
‫Quindi, se l'utente prova a cambiare il ruolo, questo

236
00:13:38,620 --> 00:13:40,250
‫verrà filtrato in modo

237
00:13:40,250 --> 00:13:43,483
‫che non trovi mai la strada per il nostro database.

238
00:13:44,769 --> 00:13:48,400
‫Quindi quello che vogliamo fare è fondamentalmente creare una

239
00:13:48,400 --> 00:13:49,750
‫variabile e

240
00:13:52,400 --> 00:13:56,240
‫diciamo filteredBody, e poi creeremo una funzione in un secondo,

241
00:13:56,240 --> 00:13:58,620
‫ma usiamola già qui, solo così

242
00:13:58,620 --> 00:14:00,420
‫puoi vedere come funzionerà.

243
00:14:01,450 --> 00:14:03,250
‫E poi qui

244
00:14:03,250 --> 00:14:05,850
‫passiamo i dati, quindi l'oggetto che

245
00:14:05,850 --> 00:14:09,890
‫vogliamo filtrare, quindi req. body, perché è lì che si trovano

246
00:14:09,890 --> 00:14:12,440
‫tutti i dati, quindi passiamo un paio di argomenti.

247
00:14:12,440 --> 00:14:15,170
‫Uno per ciascuno dei campi che vogliamo

248
00:14:15,170 --> 00:14:16,183
‫mantenere nell'oggetto.

249
00:14:17,950 --> 00:14:20,343
‫Quindi vogliamo mantenere il campo chiamato nome

250
00:14:21,400 --> 00:14:23,653
‫e il campo chiamato email.

251
00:14:25,120 --> 00:14:28,790
‫E ancora, un po' più tardi potremmo aggiungere più campi

252
00:14:28,790 --> 00:14:30,910
‫qui, ad esempio in seguito potremmo

253
00:14:30,910 --> 00:14:32,850
‫consentire all'utente di caricare un'immagine.

254
00:14:32,850 --> 00:14:35,709
‫E ovviamente dobbiamo anche aggiornare

255
00:14:35,709 --> 00:14:37,220
‫il database.

256
00:14:37,220 --> 00:14:39,010
‫Ma per ora, tutto ciò

257
00:14:39,010 --> 00:14:43,343
‫che vogliamo tenere nel corpo è nome ed e-mail e filtrare tutto il resto.

258
00:14:45,410 --> 00:14:48,067
‫E quindi qui, ora usiamo filteredBody,

259
00:14:49,730 --> 00:14:51,573
‫invece di x ovviamente.

260
00:14:54,400 --> 00:14:57,200
‫E quindi ora ciò che dobbiamo fare

261
00:14:57,200 --> 00:15:00,833
‫è implementare effettivamente questa funzione che si occuperà di filtrare l'oggetto.

262
00:15:02,640 --> 00:15:03,893
‫Quindi facciamolo qui.

263
00:15:09,151 --> 00:15:09,984
‫FilterObj,

264
00:15:12,350 --> 00:15:15,050
‫che prenderà un oggetto e quindi

265
00:15:15,050 --> 00:15:18,853
‫i restanti parametri per tutti i campi consentiti.

266
00:15:21,320 --> 00:15:23,670
‫E quindi questo creerà fondamentalmente

267
00:15:23,670 --> 00:15:27,203
‫un array contenente tutti gli argomenti che abbiamo passato.

268
00:15:28,690 --> 00:15:31,750
‫Quindi in pratica sono stati passati dopo questo primo.

269
00:15:31,750 --> 00:15:36,750
‫Quindi, in tal caso, è un array contenente nome ed e-mail.

270
00:15:39,610 --> 00:15:41,260
‫Quindi quello che dobbiamo

271
00:15:41,260 --> 00:15:44,560
‫fare ora è fondamentalmente scorrere l'oggetto e per ogni elemento controlla

272
00:15:44,560 --> 00:15:46,240
‫se è uno dei campi

273
00:15:46,240 --> 00:15:49,110
‫consentiti, e se lo è, aggiungilo semplicemente a un

274
00:15:49,110 --> 00:15:51,160
‫nuovo oggetto, che alla fine torneremo .

275
00:15:51,160 --> 00:15:53,840
‫E probabilmente ci sono modi più efficienti o

276
00:15:53,840 --> 00:15:55,140
‫migliori per implementarlo,

277
00:15:55,140 --> 00:15:56,990
‫ma facciamolo molto velocemente qui.

278
00:15:58,810 --> 00:16:00,790
‫Quindi eseguiremo il

279
00:16:00,790 --> 00:16:04,893
‫loop dell'oggetto dicendo Object. chiavi dell'oggetto che passiamo.

280
00:16:05,940 --> 00:16:08,210
‫Quindi questo è uno dei modi più semplici per

281
00:16:08,210 --> 00:16:09,883
‫scorrere un oggetto in JavaScript.

282
00:16:12,612 --> 00:16:15,710
‫Quindi, questo qui restituisce sostanzialmente un array contenente tutti

283
00:16:15,710 --> 00:16:17,560
‫i nomi delle chiavi,

284
00:16:17,560 --> 00:16:19,850
‫quindi i nomi dei campi di questo

285
00:16:19,850 --> 00:16:21,713
‫oggetto, e quindi possiamo scorrerli.

286
00:16:22,570 --> 00:16:24,023
‫Quindi la nostra funzione di callback.

287
00:16:24,960 --> 00:16:27,933
‫E per ogni elemento, questo è quello che faremo.

288
00:16:29,080 --> 00:16:32,680
‫Quindi, se l'array di campi consentito include l'elemento

289
00:16:33,680 --> 00:16:38,680
‫corrente, quindi il nome del campo corrente, allora vogliamo aggiungerlo

290
00:16:38,840 --> 00:16:41,310
‫a un nuovo oggetto.

291
00:16:41,310 --> 00:16:43,533
‫Quindi creiamolo rapidamente qui,

292
00:16:44,580 --> 00:16:47,340
‫quindi const newObj che è vuoto

293
00:16:48,540 --> 00:16:50,260
‫per ora, e

294
00:16:50,260 --> 00:16:53,010
‫alla fine è quello che restituiremo.

295
00:16:54,820 --> 00:16:57,500
‫Quindi nuovoOggetto.

296
00:16:57,500 --> 00:17:00,770
‫Quindi, se il campo corrente è uno dei

297
00:17:00,770 --> 00:17:05,770
‫campi consentiti, allora newObj con il nome del campo corrente, dovrebbe essere

298
00:17:07,260 --> 00:17:10,970
‫uguale a qualunque cosa sia nell'oggetto nell'elemento corrente, quindi

299
00:17:10,970 --> 00:17:13,743
‫il nome del campo corrente.

300
00:17:15,330 --> 00:17:17,593
‫Quindi non se questo sembra un po

301
00:17:18,460 --> 00:17:20,740
‫'confuso, questo è di nuovo solo JavaScript

302
00:17:20,740 --> 00:17:24,450
‫standard, non ha nulla a che fare con JS o eXpress o

303
00:17:24,450 --> 00:17:25,593
‫qualcosa del genere.

304
00:17:26,810 --> 00:17:29,510
‫Quindi, di nuovo, tutto ciò che facciamo qui è

305
00:17:29,510 --> 00:17:32,090
‫fondamentalmente scorrere tutti i campi che sono nell'oggetto e

306
00:17:32,090 --> 00:17:33,710
‫quindi per ogni campo,

307
00:17:33,710 --> 00:17:35,700
‫controlliamo se è uno dei campi consentiti.

308
00:17:35,700 --> 00:17:39,300
‫E se lo è, allora creiamo un nuovo campo nel nuovo

309
00:17:39,300 --> 00:17:40,610
‫oggetto, ovviamente con

310
00:17:40,610 --> 00:17:43,700
‫lo stesso nome, quindi ancora name element, con lo

311
00:17:43,700 --> 00:17:46,317
‫stesso identico valore che ha nell'oggetto originale.

312
00:17:46,317 --> 00:17:49,193
‫E poi alla fine, ovviamente, restituiamo quello.

313
00:17:51,880 --> 00:17:55,323
‫E quindi ora dovrebbe funzionare tutto qui.

314
00:17:56,260 --> 00:17:58,520
‫Quindi tutto ciò che dobbiamo

315
00:17:58,520 --> 00:18:01,603
‫fare alla fine è inviare l'utente aggiornato al client.

316
00:18:03,040 --> 00:18:04,083
‫Quindi, utente.

317
00:18:06,120 --> 00:18:11,120
‫Ora, ovviamente, dobbiamo mettere udatedUser qui, salvarlo di

318
00:18:11,160 --> 00:18:15,400
‫nuovo e quindi ora dovrebbe funzionare.

319
00:18:15,400 --> 00:18:17,877
‫Se davvero quello che abbiamo fatto qui è stato..

320
00:18:21,310 --> 00:18:24,003
‫aggiorna l'utente per ultimo

321
00:18:25,450 --> 00:18:30,450
‫e, prima di farlo, abbiamo effettivamente filtrato i nomi

322
00:18:34,490 --> 00:18:39,303
‫dei campi indesiderati che non possono essere aggiornati.

323
00:18:40,758 --> 00:18:42,460
‫Quindi proviamolo ora.

324
00:18:42,460 --> 00:18:46,423
‫E questo utente qui è un utente normale, quindi lo abbiamo

325
00:18:47,780 --> 00:18:49,150
‫appena creato, ricorda

326
00:18:49,150 --> 00:18:50,813
‫con il nome di J.

327
00:18:51,920 --> 00:18:55,100
‫E quindi diamo rapidamente un'occhiata a Compass.

328
00:18:56,900 --> 00:19:00,870
‫Quindi è un utente normale, con un nome di J.

329
00:19:00,870 --> 00:19:02,450
‫E quindi ora aggiorniamo

330
00:19:02,450 --> 00:19:05,160
‫il nome e proviamo anche ad aggiornare il

331
00:19:05,160 --> 00:19:07,460
‫ruolo, che di nuovo non è consentito.

332
00:19:07,460 --> 00:19:11,090
‫Ma per vedere se il nostro codice funziona, proviamolo.

333
00:19:11,090 --> 00:19:14,470
‫Quindi c'è già il nome, e diciamo che siamo

334
00:19:14,470 --> 00:19:15,970
‫un utente malintenzionato

335
00:19:15,970 --> 00:19:19,313
‫che cerca di cambiare il nostro ruolo in amministratore.

336
00:19:20,620 --> 00:19:23,150
‫Quindi, immagino che sia tutto

337
00:19:23,150 --> 00:19:25,190
‫corretto, quindi inviamo questo

338
00:19:25,190 --> 00:19:28,520
‫ora, e infatti ecco il nostro oggetto aggiornato.

339
00:19:28,520 --> 00:19:32,150
‫Quindi otteniamo il nostro nuovo nome, che è Jonas Schmedtmann,

340
00:19:32,150 --> 00:19:35,250
‫e poi il ruolo, che è ancora utente.

341
00:19:35,250 --> 00:19:37,913
‫Non ha aggiornato il ruolo in admin.

342
00:19:39,460 --> 00:19:42,380
‫Perfetto. È esattamente quello che volevamo.

343
00:19:42,380 --> 00:19:46,230
‫Quindi, salva questo e torniamo indietro e in realtà

344
00:19:46,230 --> 00:19:49,513
‫con questo abbiamo appena finito questo video.

345
00:19:50,590 --> 00:19:53,770
‫Successivamente, implementeremo una funzionalità per

346
00:19:53,770 --> 00:19:55,913
‫eliminare l'utente corrente.

347
00:19:56,890 --> 00:20:00,730
‫Quindi abbiamo lavorato sull'aggiornamento, quindi vogliamo consentire a un utente

348
00:20:00,730 --> 00:20:03,970
‫di cancellarsi praticamente da solo quando non vuole più

349
00:20:03,970 --> 00:20:06,143
‫far parte della nostra applicazione.

