﻿1
00:00:01,030 --> 00:00:02,580
‫Istruttore: Bentornato.

2
00:00:02,580 --> 00:00:05,470
‫Quindi, l'autenticazione e l'autorizzazione riguardano gli utenti

3
00:00:05,470 --> 00:00:07,680
‫che si iscrivono, effettuano l'accesso e

4
00:00:07,680 --> 00:00:11,040
‫accedono a pagine o percorsi, che concediamo loro

5
00:00:11,040 --> 00:00:13,190
‫il permesso di farlo.

6
00:00:13,190 --> 00:00:15,570
‫Quindi, è davvero tutto sugli utenti.

7
00:00:15,570 --> 00:00:18,890
‫Quindi dobbiamo iniziare implementando il modello utente in questa

8
00:00:18,890 --> 00:00:21,260
‫lezione, in modo che nella

9
00:00:21,260 --> 00:00:24,383
‫prossima possiamo creare nuovi utenti nel nostro database.

10
00:00:25,990 --> 00:00:28,710
‫Quindi, tornando alla nostra applicazione, andiamo avanti

11
00:00:28,710 --> 00:00:31,740
‫e creiamo un nuovo file per il modello utente.

12
00:00:31,740 --> 00:00:34,373
‫Quindi, ovviamente, nella nostra cartella del modello,

13
00:00:38,571 --> 00:00:40,890
‫New File, userModel. js.

14
00:00:40,890 --> 00:00:42,610
‫E proprio come prima,

15
00:00:42,610 --> 00:00:44,563
‫iniziamo richiedendo il pacchetto Mangusta.

16
00:00:52,430 --> 00:00:53,510
‫Tutto bene.

17
00:00:53,510 --> 00:00:55,920
‫E ora, tutto ciò che dobbiamo fare è creare uno

18
00:00:55,920 --> 00:00:57,890
‫schema e quindi creare un modello da esso.

19
00:00:57,890 --> 00:00:59,670
‫Quindi, proprio come abbiamo fatto con

20
00:00:59,670 --> 00:01:01,750
‫i tour, lo faremo qui ora con gli utenti.

21
00:01:01,750 --> 00:01:04,140
‫E in realtà, visto che l'abbiamo già

22
00:01:04,140 --> 00:01:07,660
‫fatto prima, voglio lasciare questa come una sfida per te, va bene?

23
00:01:07,660 --> 00:01:10,963
‫Quindi voglio che crei uno schema con cinque campi.

24
00:01:12,020 --> 00:01:14,713
‫Quindi, nome, email, poi una foto; che

25
00:01:16,660 --> 00:01:19,380
‫sarà solo una stringa, quindi proprio come

26
00:01:19,380 --> 00:01:21,063
‫nei nostri tour.

27
00:01:22,230 --> 00:01:24,223
‫Voglio anche un campo per una

28
00:01:25,300 --> 00:01:27,283
‫password e per una passwordConfirm.

29
00:01:30,230 --> 00:01:31,063
‫Bene?

30
00:01:31,063 --> 00:01:32,330
‫E un po' di

31
00:01:32,330 --> 00:01:34,190
‫più su questo più avanti, quando

32
00:01:34,190 --> 00:01:36,480
‫risolverò questa sfida per te, ma per ora, voglio

33
00:01:36,480 --> 00:01:38,540
‫davvero che tu ti eserciti a creare questo

34
00:01:38,540 --> 00:01:41,770
‫schema da solo e poi crei anche un modello da quello schema, ok?

35
00:01:41,770 --> 00:01:44,090
‫E poi, alla fine, puoi anche esportarlo.

36
00:01:44,090 --> 00:01:46,350
‫Quindi, per favore, metti in pausa il video a

37
00:01:46,350 --> 00:01:48,250
‫questo punto e tornerò tra un secondo qui

38
00:01:48,250 --> 00:01:49,973
‫per risolvere questa sfida per te.

39
00:01:52,590 --> 00:01:53,480
‫Tutto bene.

40
00:01:53,480 --> 00:01:55,030
‫Spero che tu abbia completato quella sfida.

41
00:01:55,030 --> 00:01:56,690
‫E quindi ora lo risolvo.

42
00:01:56,690 --> 00:01:59,330
‫E non preoccuparti se non sembra esattamente lo stesso.

43
00:01:59,330 --> 00:02:02,150
‫Puoi semplicemente adattarlo mentre guardiamo questo video.

44
00:02:02,150 --> 00:02:03,563
‫Quindi, attraverso questa soluzione.

45
00:02:05,430 --> 00:02:07,730
‫Quindi, chiamerò questo userSchema.

46
00:02:09,310 --> 00:02:13,107
‫E proprio come prima, creiamo una nuova mangusta. Schema.

47
00:02:15,270 --> 00:02:18,010
‫E poi in quello, passiamo il nostro oggetto schema

48
00:02:18,010 --> 00:02:20,410
‫e iniziamo a definire i nostri campi.

49
00:02:20,410 --> 00:02:24,773
‫Quindi, voglio un nome con il tipo, ovviamente, di String.

50
00:02:28,430 --> 00:02:31,023
‫E voglio anche che sia richiesto.

51
00:02:32,440 --> 00:02:34,310
‫Quindi, ogni volta che viene creato

52
00:02:34,310 --> 00:02:37,113
‫un nuovo utente, deve dirci sostanzialmente il suo nome.

53
00:02:37,980 --> 00:02:40,623
‫Quindi, impostiamo anche qui un messaggio di errore.

54
00:02:41,617 --> 00:02:44,447
‫"Per favore dicci il tuo nome! " Tutto

55
00:02:45,890 --> 00:02:46,960
‫ok?

56
00:02:46,960 --> 00:02:48,400
‫Quindi questo è il nome.

57
00:02:48,400 --> 00:02:50,373
‫Successivamente, vogliamo l'e-mail.

58
00:02:51,680 --> 00:02:52,630
‫Tutto ok?

59
00:02:52,630 --> 00:02:55,310
‫Quindi questo verrà utilizzato per l'accesso dell'utente

60
00:02:55,310 --> 00:02:58,630
‫e non creeremo una proprietà nome utente qui, ok?

61
00:02:58,630 --> 00:03:01,920
‫Quindi in alcune applicazioni vedrai un nome utente in

62
00:03:01,920 --> 00:03:04,500
‫uso, ma in questo caso, vogliamo

63
00:03:04,500 --> 00:03:08,030
‫mantenerlo semplice qui e identificare semplicemente gli utenti tramite e-mail.

64
00:03:08,030 --> 00:03:10,803
‫E così di nuovo, questo è del tipo String.

65
00:03:13,150 --> 00:03:14,873
‫È anche un campo obbligatorio.

66
00:03:22,030 --> 00:03:23,883
‫Quindi solo qualche messaggio di errore di nuovo.

67
00:03:24,780 --> 00:03:28,873
‫Successivamente, voglio che anche le email siano uniche, ok?

68
00:03:30,360 --> 00:03:33,320
‫Quindi, unico impostato su vero.

69
00:03:33,320 --> 00:03:35,960
‫E questo è fondamentalmente perché questa

70
00:03:35,960 --> 00:03:39,450
‫e-mail è, ovviamente, l'identificatore univoco di ciascun utente, ok?

71
00:03:39,450 --> 00:03:42,920
‫Ora per impostazione predefinita, le e-mail dovrebbero essere univoche, giusto?

72
00:03:42,920 --> 00:03:45,570
‫Ma siamo sicuri al 100% che

73
00:03:45,570 --> 00:03:47,000
‫non ci saranno

74
00:03:47,000 --> 00:03:49,740
‫account con lo stesso indirizzo email, ok?

75
00:03:49,740 --> 00:03:52,770
‫Ora possiamo anche specificare un'altra opzione di tipo schema

76
00:03:52,770 --> 00:03:54,373
‫qui, che è minuscola.

77
00:03:56,150 --> 00:03:57,100
‫Quindi questo è nuovo.

78
00:03:57,100 --> 00:03:58,410
‫E non è un validatore.

79
00:03:58,410 --> 00:04:00,410
‫Tutto ciò che farà

80
00:04:00,410 --> 00:04:03,150
‫è trasformare fondamentalmente l'e-mail in minuscolo.

81
00:04:03,150 --> 00:04:08,140
‫Quindi, se qualcuno dice come Jonas@Gmail o altro, allora

82
00:04:08,140 --> 00:04:11,260
‫verrà convertito tutto in minuscolo.

83
00:04:11,260 --> 00:04:12,210
‫Bene?

84
00:04:12,210 --> 00:04:15,380
‫E ora, finalmente, vogliamo anche convalidare effettivamente

85
00:04:15,380 --> 00:04:16,780
‫l'indirizzo e-mail.

86
00:04:16,780 --> 00:04:19,300
‫Quindi, in pratica, testare se

87
00:04:19,300 --> 00:04:23,070
‫l'e-mail fornita corrisponde al formato e-mail comune, va bene?

88
00:04:23,070 --> 00:04:27,710
‫Quindi, ad esempio, di nuovo jonas@gmail. com sarebbe un'e-mail valida, ma

89
00:04:27,710 --> 00:04:29,250
‫ad esempio,

90
00:04:29,250 --> 00:04:32,270
‫in questo modo, non lo sarebbe.

91
00:04:32,270 --> 00:04:33,860
‫O così.

92
00:04:33,860 --> 00:04:36,290
‫E quindi per questo, fondamentalmente dobbiamo creare

93
00:04:36,290 --> 00:04:37,603
‫il nostro validatore.

94
00:04:38,650 --> 00:04:41,350
‫Ora non creeremo il nostro validatore

95
00:04:41,350 --> 00:04:44,480
‫per quello, ma useremo invece quel pacchetto di

96
00:04:44,480 --> 00:04:47,730
‫validazione che ti ho mostrato prima da npm, giusto?

97
00:04:47,730 --> 00:04:50,520
‫Quindi ricorda qui nel tourModel, in realtà ti ho

98
00:04:50,520 --> 00:04:52,770
‫mostrato questo modulo qui, ma poi non

99
00:04:52,770 --> 00:04:54,620
‫abbiamo finito per usarlo

100
00:04:54,620 --> 00:04:57,270
‫perché non era davvero utile nel nostro caso.

101
00:04:57,270 --> 00:04:59,810
‫Ma ora sarà piuttosto utile,

102
00:04:59,810 --> 00:05:02,933
‫quindi vado avanti e lo copio qui,

103
00:05:05,620 --> 00:05:09,180
‫ok, così possiamo usarlo proprio nel nostro schema.

104
00:05:09,180 --> 00:05:12,653
‫Quindi, per creare ora il nostro validatore

105
00:05:13,730 --> 00:05:16,550
‫personalizzato, usiamo validate, ricordi?

106
00:05:16,550 --> 00:05:18,870
‫E poi passiamo il messaggio anti-errore della

107
00:05:18,870 --> 00:05:21,380
‫funzione, proprio come con i nostri altri validatori.

108
00:05:21,380 --> 00:05:23,980
‫E per verificare se un'e-mail è

109
00:05:23,980 --> 00:05:28,330
‫valida, tutto ciò che dobbiamo fare è chiamare il metodo

110
00:05:29,810 --> 00:05:32,030
‫isEmail sull'oggetto validatore, ok?

111
00:05:32,030 --> 00:05:34,380
‫Quindi, ancora una volta, deriva dalla documentazione, che

112
00:05:34,380 --> 00:05:38,160
‫ti ho mostrato prima quando abbiamo usato per la prima volta questo modulo.

113
00:05:38,160 --> 00:05:40,600
‫E così ogni volta che hai bisogno di un

114
00:05:40,600 --> 00:05:42,960
‫validatore personalizzato, puoi andare avanti e controllare la

115
00:05:42,960 --> 00:05:46,540
‫documentazione e trovare se c'è una buona funzione per il tuo caso d'uso.

116
00:05:46,540 --> 00:05:49,340
‫Quindi in questo caso, questo è il validatore. E-mail e

117
00:05:49,340 --> 00:05:51,230
‫il nostro messaggio di

118
00:05:55,174 --> 00:05:57,540
‫errore sarà "un'e-mail valida", ok?

119
00:05:57,540 --> 00:05:59,800
‫E nel prossimo video, quando creeremo

120
00:05:59,800 --> 00:06:02,980
‫utenti da questo modello, proveremo ovviamente tutto questo per

121
00:06:02,980 --> 00:06:04,463
‫vedere se funziona.

122
00:06:05,470 --> 00:06:08,420
‫Successivamente, voglio anche che l'utente sia in

123
00:06:08,420 --> 00:06:11,210
‫grado di caricare sostanzialmente una foto.

124
00:06:11,210 --> 00:06:13,490
‫E lo memorizzeremo semplicemente in una stringa.

125
00:06:13,490 --> 00:06:15,600
‫Ma non è obbligatorio, ok?

126
00:06:15,600 --> 00:06:20,030
‫Quindi una foto è solitamente facoltativa nella maggior parte delle applicazioni web,

127
00:06:20,030 --> 00:06:22,050
‫quindi faremo lo stesso qui.

128
00:06:22,050 --> 00:06:24,420
‫Quindi, se l'utente desidera caricare una

129
00:06:24,420 --> 00:06:27,580
‫foto, questa verrà archiviata da qualche parte nel nostro

130
00:06:27,580 --> 00:06:30,380
‫file system e il percorso di quella foto

131
00:06:30,380 --> 00:06:32,910
‫verrà archiviato in questo campo foto, ok?

132
00:06:32,910 --> 00:06:34,740
‫Quindi è simile a quello che abbiamo avuto qui.

133
00:06:34,740 --> 00:06:36,373
‫Ricorda, abbiamo, sì,

134
00:06:38,490 --> 00:06:40,340
‫abbiamo imageCover, e quindi

135
00:06:40,340 --> 00:06:42,850
‫anche questo è semplicemente il percorso

136
00:06:42,850 --> 00:06:45,100
‫del punto nel nostro file system

137
00:06:45,100 --> 00:06:47,343
‫in cui l'immagine viene effettivamente caricata.

138
00:06:49,020 --> 00:06:50,300
‫Tutto ok?

139
00:06:50,300 --> 00:06:51,570
‫Quindi questa è la foto.

140
00:06:51,570 --> 00:06:52,973
‫E ora abbiamo bisogno della password.

141
00:06:57,065 --> 00:07:01,120
‫E la password dovrebbe essere, di nuovo, del tipo String.

142
00:07:02,410 --> 00:07:03,963
‫Non è corretto.

143
00:07:04,850 --> 00:07:08,723
‫E la password ovviamente è richiesta, giusto?

144
00:07:09,690 --> 00:07:10,723
‫Così vero.

145
00:07:15,347 --> 00:07:16,737
‫"Fornire una password. "

146
00:07:17,750 --> 00:07:20,900
‫E imporremo anche una regola per le password molto

147
00:07:20,900 --> 00:07:23,420
‫semplice, ovvero che una password dovrebbe avere

148
00:07:23,420 --> 00:07:24,640
‫almeno otto caratteri.

149
00:07:24,640 --> 00:07:25,933
‫Allora, come lo facciamo?

150
00:07:26,840 --> 00:07:28,920
‫Bene, è abbastanza facile.

151
00:07:28,920 --> 00:07:31,003
‫Tutto ciò che dobbiamo fare è

152
00:07:32,480 --> 00:07:34,880
‫minlength e in questo caso impostarlo su otto.

153
00:07:34,880 --> 00:07:37,070
‫E questa è in realtà l'unica regola

154
00:07:37,070 --> 00:07:38,650
‫per le password che imporremo.

155
00:07:38,650 --> 00:07:41,270
‫E molte app hanno tutte queste regole

156
00:07:41,270 --> 00:07:45,300
‫folli come almeno un numero, un carattere e un simbolo, ma non

157
00:07:45,300 --> 00:07:47,450
‫implementeremo nulla di tutto ciò qui

158
00:07:47,450 --> 00:07:49,250
‫perché in realtà è

159
00:07:49,250 --> 00:07:52,140
‫stato scoperto che non è davvero efficace, ok?

160
00:07:52,140 --> 00:07:53,750
‫Di solito le password più

161
00:07:53,750 --> 00:07:55,530
‫sicure sono quelle più lunghe, okay,

162
00:07:55,530 --> 00:07:58,550
‫e non quelle con simboli e caratteri folli e tutto

163
00:07:58,550 --> 00:07:59,513
‫il resto.

164
00:08:00,580 --> 00:08:03,610
‫Per ora è abbastanza per la password,

165
00:08:03,610 --> 00:08:06,340
‫ma creeremo alcuni campi più specifici

166
00:08:06,340 --> 00:08:10,190
‫qui per la password quando inizieremo a gestire le

167
00:08:10,190 --> 00:08:12,020
‫password nel database, ok?

168
00:08:12,020 --> 00:08:14,403
‫Ma per ora qui basta.

169
00:08:16,160 --> 00:08:18,407
‫E quindi ora è passwordConfirm.

170
00:08:19,390 --> 00:08:22,230
‫Quindi sai come di solito quando crei un nuovo

171
00:08:22,230 --> 00:08:24,450
‫account su qualche applicazione web, devi

172
00:08:24,450 --> 00:08:28,260
‫sempre inserire la tua password e poi confermarla solo per essere sicuro

173
00:08:28,260 --> 00:08:29,480
‫che siano uguali.

174
00:08:29,480 --> 00:08:31,523
‫E quindi è a questo che serve questo campo.

175
00:08:32,410 --> 00:08:35,573
‫Quindi ovviamente è anche di tipo String.

176
00:08:36,720 --> 00:08:38,723
‫E ovviamente è anche richiesto.

177
00:08:45,081 --> 00:08:45,914
‫Bene.

178
00:08:45,914 --> 00:08:48,860
‫E ancora, creeremo altre proprietà qui

179
00:08:48,860 --> 00:08:52,210
‫nell'opzione schema-type un po' più tardi, ok?

180
00:08:52,210 --> 00:08:56,130
‫In particolare, i validatori per vedere se la password

181
00:08:56,130 --> 00:09:00,600
‫di conferma è effettivamente la stessa della password principale, va bene?

182
00:09:00,600 --> 00:09:03,220
‫Ma per ora, questo schema è effettivamente sufficiente,

183
00:09:03,220 --> 00:09:06,300
‫quindi ha questi campi che ti ho chiesto di

184
00:09:07,179 --> 00:09:08,529
‫creare nella sfida.

185
00:09:09,980 --> 00:09:12,360
‫E ora, in realtà, tutto ciò che dobbiamo fare è

186
00:09:12,360 --> 00:09:14,703
‫andare avanti e creare il modello fuori dallo schema.

187
00:09:16,410 --> 00:09:18,930
‫Quindi l'Utente, con la U maiuscola, giusto

188
00:09:18,930 --> 00:09:22,090
‫per seguire quella convenzione che le variabili del

189
00:09:22,090 --> 00:09:24,393
‫modello di solito sono sempre

190
00:09:25,490 --> 00:09:30,490
‫con la lettera maiuscola, quindi mangusta. model, quindi passare il nome del

191
00:09:31,400 --> 00:09:33,850
‫modello e, naturalmente, vogliamo che

192
00:09:34,910 --> 00:09:39,150
‫questo venga chiamato User e creato dall'userSchema che abbiamo creato prima.

193
00:09:39,150 --> 00:09:44,150
‫E poi modulo. esportazioni impostate su Utente.

194
00:09:45,300 --> 00:09:46,260
‫E questo è tutto.

195
00:09:46,260 --> 00:09:49,230
‫Questo è il nostro semplice schema utente che

196
00:09:49,230 --> 00:09:51,720
‫ci consentirà di iniziare a creare

197
00:09:51,720 --> 00:09:53,570
‫utenti nel prossimo video.

198
00:09:53,570 --> 00:09:54,963
‫Allora, ci vediamo per allora.

