﻿1
00:00:01,290 --> 00:00:03,730
‫Istruttore: Va bene, quindi ora creiamo

2
00:00:03,730 --> 00:00:06,670
‫quei nuovi utenti, in base al modello che

3
00:00:06,670 --> 00:00:09,093
‫abbiamo appena implementato nell'ultimo video.

4
00:00:10,630 --> 00:00:14,180
‫Quindi, faremo la maggior parte delle cose relative all'utente

5
00:00:14,180 --> 00:00:17,350
‫come la creazione di nuovi utenti, l'accesso

6
00:00:17,350 --> 00:00:20,933
‫degli utenti o l'aggiornamento delle password nel controller di autenticazione.

7
00:00:22,190 --> 00:00:25,800
‫Quindi tutto ciò che è realmente correlato all'autenticazione, non

8
00:00:25,800 --> 00:00:28,550
‫sarà nel controller utente che abbiamo

9
00:00:28,550 --> 00:00:30,250
‫effettivamente creato prima,

10
00:00:30,250 --> 00:00:33,313
‫ma invece creeremo un controller di autenticazione.

11
00:00:35,070 --> 00:00:36,990
‫Quindi tutte le

12
00:00:36,990 --> 00:00:38,943
‫funzioni relative all'autenticazione andranno qui.

13
00:00:41,860 --> 00:00:44,300
‫E questo avrà un po' più senso in

14
00:00:44,300 --> 00:00:46,530
‫seguito, quando inizieremo a usare tutte le

15
00:00:46,530 --> 00:00:48,103
‫funzioni che inserirò qui.

16
00:00:49,500 --> 00:00:51,560
‫E ora, la prima cosa

17
00:00:51,560 --> 00:00:53,983
‫che dobbiamo fare è importare il

18
00:00:57,870 --> 00:01:00,610
‫nostro utente, quindi il nostro modello utente ovviamente,

19
00:01:00,610 --> 00:01:05,610
‫e questo è a un livello superiore, quindi dovrebbe essere in modelli e

20
00:01:07,250 --> 00:01:08,577
‫poi in userModel.

21
00:01:09,450 --> 00:01:10,283
‫Tutto bene.

22
00:01:12,490 --> 00:01:16,500
‫Quindi, creiamo ed esportiamo il nostro primissimo controller.

23
00:01:16,500 --> 00:01:18,347
‫E chiamerò questa registrazione.

24
00:01:20,020 --> 00:01:22,990
‫E così vedi che non lo chiamo creare utente,

25
00:01:22,990 --> 00:01:25,060
‫come ho fatto in un

26
00:01:25,060 --> 00:01:27,300
‫tour controller, ma in realtà lo chiamo

27
00:01:27,300 --> 00:01:29,700
‫registrazione perché è il nome che ha un

28
00:01:29,700 --> 00:01:31,913
‫po' più di significato nel contesto dell'autenticazione.

29
00:01:33,360 --> 00:01:36,510
‫Quindi sarà ovviamente una funzione asincrona, perché

30
00:01:36,510 --> 00:01:38,973
‫faremo alcune operazioni sul database.

31
00:01:42,190 --> 00:01:44,913
‫Quindi richiedi, rispondi e poi come

32
00:01:46,000 --> 00:01:49,650
‫sempre, e poi qui è dove creiamo il nuovo utente.

33
00:01:49,650 --> 00:01:52,573
‫E quindi è molto simile a quello che abbiamo fatto prima.

34
00:01:53,460 --> 00:01:55,590
‫Quindi questa volta si chiama newUser,

35
00:01:55,590 --> 00:01:57,070
‫quindi ricorda come

36
00:01:57,070 --> 00:02:00,090
‫creiamo un nuovo documento basato su un modello.

37
00:02:00,090 --> 00:02:02,210
‫Quindi usiamo ovviamente il nome del

38
00:02:02,210 --> 00:02:04,610
‫modello, che in questo caso è Utente, e

39
00:02:04,610 --> 00:02:07,163
‫quindi su quello usiamo il metodo di creazione.

40
00:02:08,740 --> 00:02:10,020
‫E poi tutto ciò

41
00:02:10,020 --> 00:02:12,150
‫che dobbiamo fare è passare un oggetto con

42
00:02:12,150 --> 00:02:14,353
‫i dati da cui dovrebbe essere creato l'utente.

43
00:02:15,380 --> 00:02:20,093
‫E così, proprio come prima, quei dati sono effettivamente richiesti. corpo.

44
00:02:21,070 --> 00:02:23,430
‫E quindi tutto questo restituirà una

45
00:02:23,430 --> 00:02:25,920
‫promessa, quindi dobbiamo aspettarlo, e quindi questo è

46
00:02:25,920 --> 00:02:28,683
‫il motivo per cui questa è una funzione asincrona.

47
00:02:30,150 --> 00:02:32,403
‫E vedo che quassù abbiamo bisogno di esportazioni.

48
00:02:34,374 --> 00:02:36,740
‫E ora, nel passaggio

49
00:02:36,740 --> 00:02:40,310
‫successivo, invieremo effettivamente quel newUser al client.

50
00:02:40,310 --> 00:02:45,283
‫Quindi ris. status, che è 201 per creato, e quindi

51
00:02:46,720 --> 00:02:48,453
‫il nostro oggetto JSON.

52
00:02:52,160 --> 00:02:53,763
‫Quindi questo è di nuovo

53
00:02:55,010 --> 00:02:58,250
‫successo, e poi la nostra proprietà dei dati che

54
00:02:58,250 --> 00:02:59,690
‫è di nuovo

55
00:02:59,690 --> 00:03:03,510
‫chiamata busta qui, quindi una proprietà che conterrà i dati stessi.

56
00:03:03,510 --> 00:03:05,770
‫E i dati ora si chiamano

57
00:03:05,770 --> 00:03:07,723
‫user, quando prima si

58
00:03:09,105 --> 00:03:12,323
‫chiamavano tour, quindi quello che invieremo qui è newUser.

59
00:03:13,890 --> 00:03:16,270
‫Dagli un salvataggio e prima di

60
00:03:16,270 --> 00:03:18,810
‫provarlo, ricorda che questa è una funzione asincrona,

61
00:03:18,810 --> 00:03:21,393
‫quindi dobbiamo pensare alla gestione degli errori qui.

62
00:03:22,500 --> 00:03:24,470
‫Allora cosa dobbiamo fare qui?

63
00:03:24,470 --> 00:03:26,840
‫Bene, dobbiamo racchiudere l'intera funzione che

64
00:03:26,840 --> 00:03:29,770
‫abbiamo appena creato nella funzione catchAsync che abbiamo

65
00:03:29,770 --> 00:03:31,570
‫creato nell'ultima sezione.

66
00:03:32,810 --> 00:03:37,160
‫Quindi ricorda come lo abbiamo fatto nel tourController, dove tutte

67
00:03:37,160 --> 00:03:39,640
‫le funzioni asincrone sono racchiuse

68
00:03:39,640 --> 00:03:42,740
‫in questa funzione catchAsync in modo da

69
00:03:42,740 --> 00:03:43,900
‫non dover

70
00:03:43,900 --> 00:03:47,640
‫scrivere il blocco try catch in ogni funzione qui.

71
00:03:47,640 --> 00:03:49,440
‫Ricordi quello dell'ultima sezione?

72
00:03:50,410 --> 00:03:52,450
‫Quindi in realtà vado

73
00:03:52,450 --> 00:03:55,963
‫avanti e copio questa dichiarazione require qui.

74
00:04:00,190 --> 00:04:02,353
‫Quindi un po' pigro

75
00:04:03,220 --> 00:04:07,253
‫a volte, non mi va di scrivere lo

76
00:04:08,360 --> 00:04:12,570
‫stesso codice più e più volte, quindi catchAsync, e

77
00:04:12,570 --> 00:04:16,303
‫poi dobbiamo chiuderlo proprio qui alla fine.

78
00:04:18,793 --> 00:04:20,220
‫E ora, tutto ciò

79
00:04:20,220 --> 00:04:22,393
‫che dobbiamo fare è implementare effettivamente il percorso

80
00:04:22,393 --> 00:04:25,440
‫in modo che questo gestore di registrazione qui possa essere chiamato.

81
00:04:25,440 --> 00:04:27,650
‫E quindi andiamo al nostro

82
00:04:27,650 --> 00:04:31,400
‫userRoutes, che in realtà abbiamo già creato qualche tempo prima,

83
00:04:31,400 --> 00:04:33,923
‫e abbiamo già alcune rotte qui.

84
00:04:34,930 --> 00:04:37,653
‫Ma in realtà ne creerò uno nuovo qui adesso.

85
00:04:43,990 --> 00:04:46,700
‫E come ho detto proprio all'inizio di questo video, la

86
00:04:46,700 --> 00:04:48,700
‫risorsa utente è un po' diversa da

87
00:04:48,700 --> 00:04:50,290
‫tutte le altre risorse.

88
00:04:50,290 --> 00:04:52,730
‫Di nuovo, perché ha davvero a che fare

89
00:04:52,730 --> 00:04:54,680
‫con tutto ciò che riguarda l'autenticazione.

90
00:04:54,680 --> 00:04:57,010
‫E quindi abbiamo un controller diverso

91
00:04:57,010 --> 00:05:00,410
‫per quello, quindi anche authController, i nomi delle funzioni

92
00:05:00,410 --> 00:05:02,110
‫hanno nomi diversi,

93
00:05:02,110 --> 00:05:05,143
‫e quindi avremo anche un percorso speciale.

94
00:05:08,540 --> 00:05:11,770
‫Diciamo router. post, quindi creeremo

95
00:05:11,770 --> 00:05:15,313
‫un percorso per l'iscrizione, quindi /signup, ed è qui

96
00:05:18,450 --> 00:05:20,270
‫che utilizzeremo quella funzione

97
00:05:20,270 --> 00:05:22,370
‫che abbiamo appena creato prima.

98
00:05:23,260 --> 00:05:24,800
‫E ovviamente prima

99
00:05:24,800 --> 00:05:27,963
‫di poterlo fare, dobbiamo richiedere quel controller di autenticazione.

100
00:05:29,520 --> 00:05:32,040
‫Quindi duplichiamo questa riga qui

101
00:05:32,040 --> 00:05:37,040
‫e sostituiamo user in due posti, quindi qui abbiamo il

102
00:05:37,440 --> 00:05:39,713
‫nostro authController, e quindi

103
00:05:41,416 --> 00:05:42,716
‫usiamolo. Iscriviti.

104
00:05:44,340 --> 00:05:45,173
‫Quindi, come

105
00:05:47,050 --> 00:05:49,790
‫vedi, la registrazione è davvero una specie di endpoint speciale.

106
00:05:49,790 --> 00:05:51,410
‫Non si adatta all'architettura REST di

107
00:05:51,410 --> 00:05:53,560
‫cui abbiamo parlato prima, perché in questo caso

108
00:05:53,560 --> 00:05:55,070
‫non ha molto senso.

109
00:05:55,070 --> 00:05:57,920
‫E quindi ricorda come abbiamo detto che

110
00:05:57,920 --> 00:06:00,030
‫in alcuni casi speciali,

111
00:06:00,030 --> 00:06:02,690
‫possiamo ovviamente creare altri endpoint che non

112
00:06:02,690 --> 00:06:07,690
‫si adattano al 100% alla filosofia REST che è sostanzialmente implementata qui.

113
00:06:07,980 --> 00:06:09,853
‫Quindi questo qui ovviamente segue

114
00:06:10,950 --> 00:06:15,040
‫al 100% la filosofia REST, in cui il nome dell'URL non ha nulla

115
00:06:15,040 --> 00:06:17,790
‫a che fare con l'azione che viene effettivamente eseguita.

116
00:06:17,790 --> 00:06:19,950
‫Mentre quassù, ovviamente, lo ha fatto.

117
00:06:19,950 --> 00:06:22,080
‫Quindi il nome del percorso è

118
00:06:22,080 --> 00:06:23,960
‫iscrizione perché stiamo iscrivendo utenti.

119
00:06:23,960 --> 00:06:25,953
‫E anche quaggiù abbiamo implementato tutti questi

120
00:06:26,880 --> 00:06:28,760
‫diversi warp HTTP ma qui

121
00:06:28,760 --> 00:06:30,940
‫per l'iscrizione, abbiamo davvero solo bisogno di POST.

122
00:06:31,810 --> 00:06:34,773
‫Quindi non possiamo davvero ottenere dati dalla registrazione, o

123
00:06:35,668 --> 00:06:38,520
‫non possiamo patchare una registrazione, quindi non aggiornarla.

124
00:06:38,520 --> 00:06:41,810
‫Non ha molto senso, quindi in questo caso tutto ciò

125
00:06:41,810 --> 00:06:43,170
‫che vogliamo fare

126
00:06:43,170 --> 00:06:45,140
‫è avere un percorso per l'iscrizione,

127
00:06:45,140 --> 00:06:47,160
‫dove possiamo solo POSTARE i dati.

128
00:06:47,160 --> 00:06:48,953
‫Perché, ancora una volta, ha senso

129
00:06:50,170 --> 00:06:52,370
‫solo inviare effettivamente i dati a questo percorso,

130
00:06:52,370 --> 00:06:54,740
‫in modo che venga quindi creato il nuovo utente.

131
00:06:54,740 --> 00:06:57,820
‫E avremo percorsi diversi simili a questo, come

132
00:06:57,820 --> 00:07:00,240
‫per l'accesso o per reimpostare

133
00:07:00,240 --> 00:07:03,820
‫la password e ogni genere di cose del genere.

134
00:07:03,820 --> 00:07:06,003
‫E manterremo anche questi percorsi

135
00:07:07,163 --> 00:07:10,150
‫qui quindi quelli in un formato più REST,

136
00:07:10,150 --> 00:07:12,930
‫perché c'è anche la possibilità che un amministratore

137
00:07:12,930 --> 00:07:15,180
‫di sistema aggiorni o cancelli o

138
00:07:15,180 --> 00:07:18,370
‫ottenga tutti gli utenti in base al loro ID.

139
00:07:18,370 --> 00:07:21,423
‫Ma di questo ci occuperemo in seguito, per ora

140
00:07:22,620 --> 00:07:24,590
‫vogliamo solo implementare tutte le funzioni

141
00:07:24,590 --> 00:07:25,890
‫che riguardano l'autenticazione.

142
00:07:25,890 --> 00:07:28,970
‫Quindi fondamentalmente funzioni che sono rilevanti solo

143
00:07:28,970 --> 00:07:30,620
‫per l'utente stesso.

144
00:07:30,620 --> 00:07:33,340
‫Quindi non è un amministratore che iscriverà un

145
00:07:33,340 --> 00:07:36,180
‫utente, o non è un amministratore che accederà a

146
00:07:36,180 --> 00:07:38,730
‫un utente, ma invece, è il

147
00:07:38,730 --> 00:07:41,580
‫proprio utente che si iscriverà o accederà da solo.

148
00:07:41,580 --> 00:07:45,040
‫Ok, ha senso?

149
00:07:45,040 --> 00:07:46,613
‫Quindi dovremmo avere tutto a posto

150
00:07:47,570 --> 00:07:50,160
‫ora, in modo che ora funzioni quando creiamo il nostro nuovo utente.

151
00:07:50,160 --> 00:07:53,830
‫Quindi, quando ci iscriviamo fondamentalmente, per la nostra applicazione.

152
00:07:53,830 --> 00:07:57,270
‫Quindi proviamolo ora.

153
00:07:57,270 --> 00:07:58,683
‫Copiamo semplicemente questo URL,

154
00:08:01,020 --> 00:08:02,447
‫gli utenti e quindi iscriviti.

155
00:08:06,610 --> 00:08:08,393
‫Quindi dobbiamo specificare il

156
00:08:11,743 --> 00:08:13,710
‫corpo, diciamo raw, e quindi JSON.

157
00:08:14,640 --> 00:08:19,190
‫Oh e anche, ovviamente, non dimenticare di impostare questo

158
00:08:19,190 --> 00:08:20,720
‫su POST.

159
00:08:20,720 --> 00:08:22,223
‫Quindi, di quali dati abbiamo bisogno qui?

160
00:08:25,478 --> 00:08:27,830
‫Ricorda, il primo è

161
00:08:27,830 --> 00:08:30,293
‫il nome, poi l'e-mail, e

162
00:08:34,710 --> 00:08:39,710
‫in realtà metto il mio qui, poi la password, e quindi

163
00:08:46,211 --> 00:08:49,211
‫facciamo qualcosa qui, non importa davvero.

164
00:08:50,360 --> 00:08:52,560
‫E ancora, parleremo della gestione delle password

165
00:08:54,850 --> 00:08:56,330
‫un po' più

166
00:08:56,330 --> 00:08:58,383
‫tardi, e proprio nel prossimo video.

167
00:08:59,290 --> 00:09:01,140
‫Quindi ora questo qui dovrebbe essere lo stesso.

168
00:09:02,420 --> 00:09:04,960
‫Quindi pass1234, solo come test.

169
00:09:04,960 --> 00:09:08,143
‫E il ricordo della foto non è

170
00:09:09,287 --> 00:09:11,820
‫obbligatorio, quindi non lo farò.

171
00:09:11,820 --> 00:09:13,663
‫E quindi vediamo ora.

172
00:09:15,040 --> 00:09:16,133
‫E ora riceviamo questo errore

173
00:09:17,990 --> 00:09:20,180
‫qui, ed è perché ho sbagliato a scrivere la password qui.

174
00:09:20,180 --> 00:09:22,853
‫Ok, questo sarebbe il modo tedesco di scriverlo.

175
00:09:24,150 --> 00:09:27,373
‫E ora è giusto.

176
00:09:28,370 --> 00:09:29,890
‫Ok, e in effetti qui abbiamo il nostro nuovo utente.

177
00:09:29,890 --> 00:09:33,460
‫Perfetto.

178
00:09:33,460 --> 00:09:34,580
‫Ora diciamo che abbiamo provato a farlo con un GET.

179
00:09:34,580 --> 00:09:38,350
‫Cosa otterremmo?

180
00:09:38,350 --> 00:09:39,800
‫Bene, "Questo

181
00:09:39,800 --> 00:09:42,300
‫percorso non è ancora definito",

182
00:09:42,300 --> 00:09:44,350
‫perché in realtà abbiamo già

183
00:09:44,350 --> 00:09:47,620
‫definito questo percorso qui, quindi in pratica questa

184
00:09:47,620 --> 00:09:50,180
‫parte qui del percorso, quindi lascia

185
00:09:50,180 --> 00:09:52,910
‫che te lo mostri rapidamente, quindi non

186
00:09:52,910 --> 00:09:55,970
‫è nel tourController, ma in il controller utente.

187
00:09:55,970 --> 00:09:58,640
‫Quindi fondamentalmente abbiamo getUser qui e

188
00:09:58,640 --> 00:10:01,560
‫poi "Questo percorso non è ancora definito. "Quindi è quello che stiamo ottenendo,

189
00:10:01,560 --> 00:10:04,174
‫ma ovviamente

190
00:10:04,174 --> 00:10:06,024
‫non ci interessa molto.

191
00:10:07,160 --> 00:10:09,860
‫E ora andiamo avanti e salviamo questo qui, su

192
00:10:11,460 --> 00:10:13,630
‫Postman in modo che possiamo riutilizzarlo facilmente.

193
00:10:13,630 --> 00:10:16,613
‫Quindi registrati.

194
00:10:21,520 --> 00:10:22,513
‫E ora

195
00:10:24,700 --> 00:10:26,600
‫solo per confermare velocemente, apriamolo anche

196
00:10:26,600 --> 00:10:29,420
‫in Compass qui, e vediamo che a questo punto

197
00:10:29,420 --> 00:10:32,320
‫abbiamo solo tour, quindi andiamo qui ai natours, proviamo

198
00:10:32,320 --> 00:10:36,433
‫a ricaricare questo, e probabilmente è qui sopra, e quindi infatti, ora otteniamo la

199
00:10:37,490 --> 00:10:38,890
‫nostra raccolta di utenti qui.

200
00:10:41,000 --> 00:10:44,820
‫Quindi apriamolo e, in effetti, ora otteniamo il

201
00:10:44,820 --> 00:10:47,120
‫nostro primo documento qui.

202
00:10:47,120 --> 00:10:49,470
‫Quindi l'utente che abbiamo appena creato.

203
00:10:49,470 --> 00:10:51,640
‫Ora qui puoi vedere la

204
00:10:51,640 --> 00:10:54,430
‫semplice password, e quindi ovviamente non è l'ideale.

205
00:10:54,430 --> 00:10:57,270
‫E, naturalmente, questo non è l'ideale, quindi in

206
00:10:57,270 --> 00:10:59,170
‫un'applicazione web, le password

207
00:10:59,170 --> 00:11:03,090
‫non dovrebbero mai essere archiviate in modo semplice in un database.

208
00:11:03,090 --> 00:11:05,983
‫Quindi c'è molta gestione delle password che deve

209
00:11:07,060 --> 00:11:10,020
‫avvenire dietro le quinte, ed è esattamente ciò che

210
00:11:10,020 --> 00:11:11,750
‫faremo nel prossimo video.

