‫Istruttore: Bentornato.
‫Quindi, l'autenticazione e l'autorizzazione riguardano gli utenti
‫che si iscrivono, effettuano l'accesso e
‫accedono a pagine o percorsi, che concediamo loro
‫il permesso di farlo.
‫Quindi, è davvero tutto sugli utenti.
‫Quindi dobbiamo iniziare implementando il modello utente in questa
‫lezione, in modo che nella
‫prossima possiamo creare nuovi utenti nel nostro database.
‫Quindi, tornando alla nostra applicazione, andiamo avanti
‫e creiamo un nuovo file per il modello utente.
‫Quindi, ovviamente, nella nostra cartella del modello,
‫New File, userModel. js.
‫E proprio come prima,
‫iniziamo richiedendo il pacchetto Mangusta.
‫Tutto bene.
‫E ora, tutto ciò che dobbiamo fare è creare uno
‫schema e quindi creare un modello da esso.
‫Quindi, proprio come abbiamo fatto con
‫i tour, lo faremo qui ora con gli utenti.
‫E in realtà, visto che l'abbiamo già
‫fatto prima, voglio lasciare questa come una sfida per te, va bene?
‫Quindi voglio che crei uno schema con cinque campi.
‫Quindi, nome, email, poi una foto; che
‫sarà solo una stringa, quindi proprio come
‫nei nostri tour.
‫Voglio anche un campo per una
‫password e per una passwordConfirm.
‫Bene?
‫E un po' di
‫più su questo più avanti, quando
‫risolverò questa sfida per te, ma per ora, voglio
‫davvero che tu ti eserciti a creare questo
‫schema da solo e poi crei anche un modello da quello schema, ok?
‫E poi, alla fine, puoi anche esportarlo.
‫Quindi, per favore, metti in pausa il video a
‫questo punto e tornerò tra un secondo qui
‫per risolvere questa sfida per te.
‫Tutto bene.
‫Spero che tu abbia completato quella sfida.
‫E quindi ora lo risolvo.
‫E non preoccuparti se non sembra esattamente lo stesso.
‫Puoi semplicemente adattarlo mentre guardiamo questo video.
‫Quindi, attraverso questa soluzione.
‫Quindi, chiamerò questo userSchema.
‫E proprio come prima, creiamo una nuova mangusta. Schema.
‫E poi in quello, passiamo il nostro oggetto schema
‫e iniziamo a definire i nostri campi.
‫Quindi, voglio un nome con il tipo, ovviamente, di String.
‫E voglio anche che sia richiesto.
‫Quindi, ogni volta che viene creato
‫un nuovo utente, deve dirci sostanzialmente il suo nome.
‫Quindi, impostiamo anche qui un messaggio di errore.
‫"Per favore dicci il tuo nome! " Tutto
‫ok?
‫Quindi questo è il nome.
‫Successivamente, vogliamo l'e-mail.
‫Tutto ok?
‫Quindi questo verrà utilizzato per l'accesso dell'utente
‫e non creeremo una proprietà nome utente qui, ok?
‫Quindi in alcune applicazioni vedrai un nome utente in
‫uso, ma in questo caso, vogliamo
‫mantenerlo semplice qui e identificare semplicemente gli utenti tramite e-mail.
‫E così di nuovo, questo è del tipo String.
‫È anche un campo obbligatorio.
‫Quindi solo qualche messaggio di errore di nuovo.
‫Successivamente, voglio che anche le email siano uniche, ok?
‫Quindi, unico impostato su vero.
‫E questo è fondamentalmente perché questa
‫e-mail è, ovviamente, l'identificatore univoco di ciascun utente, ok?
‫Ora per impostazione predefinita, le e-mail dovrebbero essere univoche, giusto?
‫Ma siamo sicuri al 100% che
‫non ci saranno
‫account con lo stesso indirizzo email, ok?
‫Ora possiamo anche specificare un'altra opzione di tipo schema
‫qui, che è minuscola.
‫Quindi questo è nuovo.
‫E non è un validatore.
‫Tutto ciò che farà
‫è trasformare fondamentalmente l'e-mail in minuscolo.
‫Quindi, se qualcuno dice come Jonas@Gmail o altro, allora
‫verrà convertito tutto in minuscolo.
‫Bene?
‫E ora, finalmente, vogliamo anche convalidare effettivamente
‫l'indirizzo e-mail.
‫Quindi, in pratica, testare se
‫l'e-mail fornita corrisponde al formato e-mail comune, va bene?
‫Quindi, ad esempio, di nuovo jonas@gmail. com sarebbe un'e-mail valida, ma
‫ad esempio,
‫in questo modo, non lo sarebbe.
‫O così.
‫E quindi per questo, fondamentalmente dobbiamo creare
‫il nostro validatore.
‫Ora non creeremo il nostro validatore
‫per quello, ma useremo invece quel pacchetto di
‫validazione che ti ho mostrato prima da npm, giusto?
‫Quindi ricorda qui nel tourModel, in realtà ti ho
‫mostrato questo modulo qui, ma poi non
‫abbiamo finito per usarlo
‫perché non era davvero utile nel nostro caso.
‫Ma ora sarà piuttosto utile,
‫quindi vado avanti e lo copio qui,
‫ok, così possiamo usarlo proprio nel nostro schema.
‫Quindi, per creare ora il nostro validatore
‫personalizzato, usiamo validate, ricordi?
‫E poi passiamo il messaggio anti-errore della
‫funzione, proprio come con i nostri altri validatori.
‫E per verificare se un'e-mail è
‫valida, tutto ciò che dobbiamo fare è chiamare il metodo
‫isEmail sull'oggetto validatore, ok?
‫Quindi, ancora una volta, deriva dalla documentazione, che
‫ti ho mostrato prima quando abbiamo usato per la prima volta questo modulo.
‫E così ogni volta che hai bisogno di un
‫validatore personalizzato, puoi andare avanti e controllare la
‫documentazione e trovare se c'è una buona funzione per il tuo caso d'uso.
‫Quindi in questo caso, questo è il validatore. E-mail e
‫il nostro messaggio di
‫errore sarà "un'e-mail valida", ok?
‫E nel prossimo video, quando creeremo
‫utenti da questo modello, proveremo ovviamente tutto questo per
‫vedere se funziona.
‫Successivamente, voglio anche che l'utente sia in
‫grado di caricare sostanzialmente una foto.
‫E lo memorizzeremo semplicemente in una stringa.
‫Ma non è obbligatorio, ok?
‫Quindi una foto è solitamente facoltativa nella maggior parte delle applicazioni web,
‫quindi faremo lo stesso qui.
‫Quindi, se l'utente desidera caricare una
‫foto, questa verrà archiviata da qualche parte nel nostro
‫file system e il percorso di quella foto
‫verrà archiviato in questo campo foto, ok?
‫Quindi è simile a quello che abbiamo avuto qui.
‫Ricorda, abbiamo, sì,
‫abbiamo imageCover, e quindi
‫anche questo è semplicemente il percorso
‫del punto nel nostro file system
‫in cui l'immagine viene effettivamente caricata.
‫Tutto ok?
‫Quindi questa è la foto.
‫E ora abbiamo bisogno della password.
‫E la password dovrebbe essere, di nuovo, del tipo String.
‫Non è corretto.
‫E la password ovviamente è richiesta, giusto?
‫Così vero.
‫"Fornire una password. "
‫E imporremo anche una regola per le password molto
‫semplice, ovvero che una password dovrebbe avere
‫almeno otto caratteri.
‫Allora, come lo facciamo?
‫Bene, è abbastanza facile.
‫Tutto ciò che dobbiamo fare è
‫minlength e in questo caso impostarlo su otto.
‫E questa è in realtà l'unica regola
‫per le password che imporremo.
‫E molte app hanno tutte queste regole
‫folli come almeno un numero, un carattere e un simbolo, ma non
‫implementeremo nulla di tutto ciò qui
‫perché in realtà è
‫stato scoperto che non è davvero efficace, ok?
‫Di solito le password più
‫sicure sono quelle più lunghe, okay,
‫e non quelle con simboli e caratteri folli e tutto
‫il resto.
‫Per ora è abbastanza per la password,
‫ma creeremo alcuni campi più specifici
‫qui per la password quando inizieremo a gestire le
‫password nel database, ok?
‫Ma per ora qui basta.
‫E quindi ora è passwordConfirm.
‫Quindi sai come di solito quando crei un nuovo
‫account su qualche applicazione web, devi
‫sempre inserire la tua password e poi confermarla solo per essere sicuro
‫che siano uguali.
‫E quindi è a questo che serve questo campo.
‫Quindi ovviamente è anche di tipo String.
‫E ovviamente è anche richiesto.
‫Bene.
‫E ancora, creeremo altre proprietà qui
‫nell'opzione schema-type un po' più tardi, ok?
‫In particolare, i validatori per vedere se la password
‫di conferma è effettivamente la stessa della password principale, va bene?
‫Ma per ora, questo schema è effettivamente sufficiente,
‫quindi ha questi campi che ti ho chiesto di
‫creare nella sfida.
‫E ora, in realtà, tutto ciò che dobbiamo fare è
‫andare avanti e creare il modello fuori dallo schema.
‫Quindi l'Utente, con la U maiuscola, giusto
‫per seguire quella convenzione che le variabili del
‫modello di solito sono sempre
‫con la lettera maiuscola, quindi mangusta. model, quindi passare il nome del
‫modello e, naturalmente, vogliamo che
‫questo venga chiamato User e creato dall'userSchema che abbiamo creato prima.
‫E poi modulo. esportazioni impostate su Utente.
‫E questo è tutto.
‫Questo è il nostro semplice schema utente che
‫ci consentirà di iniziare a creare
‫utenti nel prossimo video.
‫Allora, ci vediamo per allora.