‫Narratore: Quindi, stiamo
‫attualmente apportando alcuni ritocchi finali alla nostra API
‫e una delle cose che dobbiamo
‫fare ora è correggere parte
‫dell'autenticazione e dell'autorizzazione in tutte le nostre risorse.
‫E inizieremo qui con la nostra risorsa per il tour.
‫E poiché tutte le cose
‫di autenticazione e autorizzazione sono sempre definite
‫nelle dichiarazioni di
‫percorso, lavoreremo qui sul file delle rotte del tour.
‫Quindi, questa API per tour che abbiamo
‫qui è fondamentalmente ciò che vogliamo esporre al mondo.
‫Quindi, ad esempio, potremmo voler consentire
‫ad altri siti di viaggi di incorporare i nostri
‫tour nel loro sito web.
‫Ed ecco a cosa serve fondamentalmente questa API.
‫E quindi, non avremo alcuna autorizzazione sulle
‫richieste di tour get.
‫Destra?
‫E quindi dovremmo effettivamente sbarazzarci di quello
‫che abbiamo attualmente.
‫Destra?
‫Quindi, questo.
‫Quindi, per ottenere
‫tutti i tour, in questo
‫momento dobbiamo proteggerlo, quindi solo gli utenti autenticati possono usarlo.
‫Va bene?
‫Ma ancora una volta,
‫questo non ha molto senso,
‫perché vuoi esporre questa parte dell'API a tutti.
‫Quindi, liberiamoci di quello.
‫Tuttavia, le azioni di creazione o modifica dei tour, vogliamo
‫solo consentire alle guide
‫principali e agli amministratori di eseguire queste azioni.
‫Quindi, ovviamente, nessun utente normale e
‫nemmeno guide normali.
‫Quindi, solo amministratori e guide principali.
‫E quindi mettiamolo qui in realtà.
‫Controllore autenticazione. proteggere
‫e authcontroller. restrizione.
‫Amministratore
‫e guida principale.
‫Salvalo qui
‫e sembra a posto.
‫E poi vogliamo fare lo stesso con l'editing.
‫Destra?
‫Quindi lo abbiamo già fatto in
‫realtà all'inizio, quindi copiamo anche quello che abbiamo qui per correggere.
‫Salvalo e ora sembra davvero perfetto.
‫Va bene?
‫Quindi tutto
‫il resto, anche fare un solo
‫tour qui, è ovviamente gratuito per tutti, ok?
‫E lo stesso vale per ottenere i migliori tour e
‫anche per ottenere le statistiche del tour.
‫Ora qui, riguardo al
‫piano mensile, potremmo anche volerlo limitare.
‫Solo, ad esempio, a tutti tranne che agli utenti normali.
‫Va bene?
‫Quindi copia anche questo
‫qui, salvalo e poi aggiungi anche le guide normali.
‫Bene?
‫E quindi, a questo punto sembra perfetto, penso.
‫Va bene?
‫Quindi, in pratica, il nostro router del tour è ora completato.
‫Perfetto.
‫E non ho intenzione
‫di testare tutto questo perché sappiamo già che funziona.
‫Bene?
‫Quindi chiudiamo
‫questo e passiamo direttamente al successivo.
‫Quindi, questi primi percorsi
‫qui sono ovviamente aperti a tutti.
‫Quindi, registrarsi, accedere,
‫dimenticare la password e reimpostare la password.
‫Per nessuno di questi devi essere loggato.
‫Destra?
‫Ma devi essere loggato in
‫modo da essere autenticato per aggiornare la tua password, per
‫ottenere le tue informazioni,
‫per aggiornare o cancellare il tuo account, e davvero
‫anche per tutte queste altre
‫operazioni qui.
‫Quindi non vogliamo che il pubblico fondamentalmente ottenga informazioni
‫su tutti gli utenti.
‫Inoltre, non vogliamo che nessuno cancelli gli
‫utenti o aggiorni gli utenti, e in realtà nessuna di
‫queste operazioni qui dovrebbe essere gratuita per il pubblico.
‫Va bene?
‫Quindi per tutti
‫questi percorsi qui, a partire
‫da questo punto, dovrai sempre essere autenticato.
‫Bene?
‫E così, ora potremmo andare avanti
‫e aggiungere questo authcontroller. proteggere a tutte queste rotte,
‫ma in realtà possiamo fare di meglio, giusto?
‫Quindi, per farlo,
‫teniamo presente che questa funzione di protezione qui è
‫in realtà solo un middleware.
‫E ricorda anche che il
‫middleware viene eseguito sempre in sequenza, giusto?
‫Ora, con questo router che abbiamo
‫qui, che abbiamo creato
‫all'inizio, è una specie di mini applicazione.
‫Ricordati che?
‫E così, proprio come con l'app
‫normale, possiamo usare il middleware anche su questo router.
‫Va bene?
‫E così, possiamo fare qualcosa del genere.
‫router. use
‫e ora authcontroller. proteggere e basta.
‫E ciò
‫che farà questo sarà fondamentalmente proteggere tutte
‫le rotte che verranno dopo questo punto.
‫Va bene?
‫E ancora, questo perché il middleware
‫viene eseguito in sequenza.
‫E così dopo queste quattro funzioni middleware,
‫perché ricorda che tecnicamente anche
‫questo è ancora
‫middleware, il prossimo middleware nello stack è questo protect.
‫E questo chiamerà il middleware successivo solo
‫se l'utente è autenticato.
‫E il prossimo middleware in questo caso è questa patch qui.
‫Va bene?
‫E quindi, di nuovo,
‫ciò significa che
‫tutti questi percorsi verso tutti questi
‫middleware, tecnicamente, che vengono dopo questo ora sono protetti.
‫E così, possiamo andare avanti e rimuovere questa protezione
‫da tutti loro.
‫Va bene?
‫E solo per dimostrarti che ora
‫funziona ancora, andiamo avanti e prendiamo le informazioni per me.
‫Quindi sostanzialmente l'utente attuale.
‫Quindi, se ora
‫eseguo questo, vedrai che funziona ancora.
‫E se tolgo l'autenticazione,
‫dice che non abbiamo effettuato l'accesso.
‫E questo è esattamente ciò che fa il middleware di protezione.
‫Destra?
‫Quindi, ora tornerà a funzionare.
‫Così perfetta!
‫Questo è un piccolo trucco per proteggere
‫tutte le rotte contemporaneamente, in genere
‫utilizzando un middleware che
‫viene prima di tutte queste altre rotte.
‫Va bene?
‫E ad esempio, se
‫ora lo spostiamo un po' verso l'alto, in questo
‫modo, ad esempio, allora dovremmo anche
‫essere registrati per utilizzare la password dimenticata.
‫Destra?
‫Quindi, lascia che te lo dimostri.
‫Va bene?
‫E quindi di solito, ovviamente, non abbiamo bisogno di
‫essere registrati per dimenticare
‫la nostra password, perché non avrebbe alcun senso, giusto?
‫Ma in questo momento, dal momento che
‫spostiamo un po' quel middleware, dice "non sei loggato".
‫Va bene?
‫E quindi, davvero, questo dimostra che questo authcontroller qui sta facendo
‫il suo lavoro.
‫Quindi, proteggi tutti i percorsi, dopo
‫questo middleware.
‫Va bene.
‫Ora ricorda anche come abbiamo detto
‫che tutte queste azioni qui dovrebbero essere eseguite
‫solo dagli amministratori, e
‫quindi ora possiamo effettivamente usare la stessa identica tecnica
‫che abbiamo usato qui per proteggere tutte queste rotte.
‫Quindi, router. uso,
‫controller di autenticazione. restrittivo, admin.
‫Va bene?
‫E così ora, solo gli amministratori saranno in grado
‫di ottenere tutti gli utenti, creare nuovi utenti, ottenere di nuovo
‫utenti e applicare patch ed eliminare utenti.
‫Bene?
‫E così da questo
‫punto in poi, tutti i percorsi non
‫sono solo protetti, ma anche riservati solo all'amministratore.
‫Ma ovviamente, quelli che vengono prima
‫di chiunque abbia effettuato l'accesso possono accedervi, ok?
‫Quindi lascia che te lo dimostri.
‫Quindi, ho intenzione di accedere, non con admin,
‫ma con testuser.
‫Va bene?
‫E così abbiamo effettuato l'accesso
‫con successo, ora proviamo a vedere tutti gli utenti.
‫E ora dice che non sei loggato.
‫Bene, in realtà abbiamo effettuato l'accesso,
‫ma abbiamo dimenticato di aggiungere l'autorizzazione qui.
‫Quindi, token al portatore, invialo di nuovo e ora vediamo
‫che non hai il permesso di esibirti.
‫Ma ora, quando lo cambiamo in amministratore, quindi accediamo
‫come amministratore ora, e
‫ora come otteniamo tutti gli utenti, ovviamente
‫funziona.
‫Così perfetta!
‫E questo in realtà
‫completa anche l'autenticazione e l'autorizzazione per questi utenti.
‫Ma solo per
‫riflettere su questo in Postman, torniamo indietro e quindi
‫fondamentalmente mettiamo l'autorizzazione qui, ovunque.
‫Va bene?
‫E ancora, questo perché
‫in seguito creeremo una documentazione
‫API basata sulla raccolta che abbiamo creato qui.
‫E poi, è importante che effettivamente contrassegniamo
‫questo qui come protetto.
‫Salvarlo.
‫Salva anche questo.
‫E lo stesso per aggiornare ed eliminare l'utente.
‫Quindi, token al portatore, salvataggio e
‫lo stesso per l'aggiornamento.
‫Va bene, e in realtà, visto che lo stiamo facendo, facciamo
‫lo stesso con tutti gli altri.
‫Quindi, non le recensioni, quella
‫è per un po'
‫più tardi, ma davvero per i tour.
‫Quindi qui non abbiamo più bisogno di alcuna
‫autenticazione, quindi salviamola.
‫Dimenticando, inoltre, non abbiamo bisogno di alcuna
‫autorizzazione, ma per la creazione ora abbiamo bisogno del token al portatore.
‫Va bene?
‫Anche per l'aggiornamento, quindi ha
‫senso proteggerli anche qui in Postman.
‫Ora questo ce l'aveva già, perché
‫in realtà l'abbiamo usato per testarlo in
‫primo luogo.
‫Quindi questo non ce l'aveva, ma il piano mensile get,
‫abbiamo protetto anche questo.
‫Aggiungi anche qui il token al
‫portatore, e quindi
‫credo che con questo siamo davvero completati ora, anche con questi.
‫E quindi quello che dobbiamo fare per finire ora
‫che questa parte è qui, correggere la stessa cosa anche sulle recensioni.
‫E la prima cosa che
‫voglio fare è proteggere sostanzialmente tutti i percorsi
‫che hanno a che fare con le recensioni.
‫Quindi, non vogliamo che nessuno
‫che non sia autenticato ottenga, pubblichi, modifichi o cancelli alcuna recensione.
‫Va bene?
‫Diciamo router. uso,
‫controller di autenticazione. proteggere.
‫Va bene?
‫E quindi ciò significa che da questo
‫punto nessuno può accedere a nessuno di
‫questo percorso senza essere autenticato.
‫Ma possiamo rimuovere questa parte qui, ok?
‫E così ora con l'autenticazione
‫fuori mano, pensiamo all'autorizzazione.
‫Quindi, prima di tutto, solo gli utenti dovrebbero essere
‫in grado di pubblicare recensioni.
‫Nessuna guida e nemmeno amministratori.
‫E quindi questa parte, in realtà l'abbiamo già qui.
‫Va bene?
‫Quindi, gli amministratori dovrebbero essere in grado di
‫aggiornare o eliminare le recensioni, proprio come gli utenti
‫normali, naturalmente, in modo che possano modificare
‫o eliminare le proprie recensioni.
‫E infine, le guide non possono aggiungere, modificare o eliminare recensioni.
‫Dal momento che le guide sono quelle che svolgono il lavoro,
‫sarebbe strano se potessero pubblicare recensioni
‫da sole o modificare le recensioni di altre persone, giusto?
‫E quindi mettiamo in codice ciò che abbiamo appena descritto.
‫Quindi, in pratica, la patch e
‫l'eliminazione sono limitate
‫agli utenti,
‫o in realtà solo all'utente e all'amministratore.
‫E poi la stessa cosa per l'eliminazione.
‫Va bene?
‫E così vedi che ora le guide e le
‫guide principali non hanno nulla a che fare con le recensioni.
‫Tutto ciò che possono fare è
‫ottenere recensioni davvero, ma non modificarle o pubblicarle affatto, ok?
‫E così, velocemente ora in Postman, mettiamo
‫anche questo qui.
‫Quindi creare nuove recensioni ha già l'autorizzazione, anche per ottenere tutte
‫le recensioni ne ha bisogno ora.
‫Quindi, con il token al portatore, salva quello, qui,
‫anche il token al portatore.
‫Ora scrivi e ottieni anche una singola recensione.
‫In realtà ordiniamo bene anche questo,
‫in modo che siano tutti nello stesso ordine.
‫E ora riguardo a questi due qui,
‫in realtà sono anche protetti.
‫Destra?
‫Perché alla fine sono i revisori
‫delle recensioni che vengono effettivamente chiamati per entrambi.
‫E quindi qui dobbiamo anche aggiungere quel token al portatore.
‫Va bene?
‫Quindi ora, in pratica, l'unico
‫modo per accedere ai dati sulle recensioni è chiamare tutti i tour.
‫Destra?
‫Almeno per le persone non autenticate.
‫Va bene?
‫Quindi, chiudiamo tutto questo, e quindi penso
‫che ora siamo a posto, e in realtà
‫abbiamo finito anche questa parte.
‫Ripuliamolo un po' qui.
‫E sì, penso che sia così.
‫Quindi con questo abbiamo effettivamente terminato le parti
‫di autenticazione e autorizzazione di tutte e tre le nostre risorse, quindi
‫siamo davvero vicini alla fine della nostra API qui.
‫C'è solo una piccola quantità di cose da fare,
‫quindi faremo tutto questo nel
‫resto di questa sezione.