‫Erzähler: Wir sind also
‫gerade dabei, unserer API den letzten Schliff zu geben,
‫und eine der Dinge, die wir jetzt
‫tun müssen, ist, einen Teil der
‫Authentifizierung und Autorisierung in all unseren Ressourcen zu korrigieren.
‫Und wir beginnen hier mit unserer Tour-Ressource.
‫Und da der ganze
‫Authentifizierungs- und Autorisierungskram immer in den
‫Routendeklarationen definiert
‫ist, werden wir hier an der Tourrouten-Datei arbeiten.
‫Diese Tour-API, die wir hier haben, ist also
‫im Grunde das, was wir der Welt vorstellen möchten.
‫So möchten wir beispielsweise
‫anderen Reise-Websites erlauben, unsere Touren in ihre
‫eigene Website einzubetten.
‫Und dafür ist diese API im Grunde da.
‫Aus diesem Grund haben wir keine Genehmigung
‫zum Abrufen von Touranfragen.
‫Rechts?
‫Und so sollten wir eigentlich das, was wir
‫derzeit haben, loswerden.
‫Rechts?
‫Also dieser.
‫Nachdem wir alle
‫Touren erhalten haben, müssen wir
‫sie jetzt schützen, und nur authentifizierte Benutzer können sie verwenden.
‫Okay?
‫Aber auch das macht
‫nicht viel Sinn, da Sie
‫diesen Teil der API jedem zugänglich machen möchten.
‫Also, lass uns das loswerden.
‫Die Aktionen zum Erstellen oder Bearbeiten von Touren möchten
‫wir jedoch nur leitenden
‫Guides und Administratoren ermöglichen, diese Aktionen durchzuführen.
‫Also natürlich keine normalen User und
‫auch keine normalen Guides.
‫Also nur Admins und Lead Guides.
‫Und so lassen Sie uns das hier eigentlich setzen.
‫Authentifizierungscontroller. schützen
‫und autorcontroller. beschränkt auf.
‫Administrator
‫und leitender Guide.
‫Sparen Sie
‫hier, und das sieht gut aus.
‫Und als nächstes wollen wir dasselbe mit der Bearbeitung machen.
‫Rechts?
‫Wir haben das also bereits in der Hauptsache gemacht,
‫also kopieren wir einfach, was wir hier haben, um es auch zu patchen.
‫Speichern Sie es, und jetzt sieht das tatsächlich perfekt aus.
‫Okay?
‫Also alles andere,
‫auch nur eine einzige Tour hier
‫zu bekommen, ist natürlich für alle kostenlos, okay?
‫Das gleiche gilt für das Abrufen der Top-Touren und
‫auch für das Abrufen der Tour-Statistiken.
‫Nun, hier, zum monatlichen Plan,
‫möchten wir das vielleicht auch einschränken.
‫Nur zum Beispiel für alle außer normalen Benutzern.
‫Okay?
‫Also auch diese hier
‫kopieren, speichern und dann auch die normalen Hilfslinien hinzufügen.
‫In Ordung?
‫Und so sieht das an dieser Stelle perfekt aus, denke ich.
‫Okay?
‫Im Grunde ist unser Tourrouter nun fertig.
‫Perfekt.
‫Und ich werde das alles
‫nicht testen, weil wir bereits wissen, dass es funktioniert.
‫In Ordung?
‫Also, schließen wir
‫dieses und gehen direkt zum nächsten über.
‫Diese ersten Routen
‫hier stehen also natürlich jedem offen.
‫Also anmelden, einloggen,
‫Passwort vergessen und Passwort zurücksetzen.
‫Für keines davon müssen Sie eingeloggt sein.
‫Rechts?
‫Sie müssen jedoch eingeloggt sein,
‫um sich zu authentifizieren, um Ihr Passwort zu aktualisieren, Ihre eigenen
‫Informationen zu erhalten, Ihr
‫eigenes Konto zu aktualisieren oder zu löschen und wirklich
‫auch für all diese anderen
‫Vorgänge hier.
‫Wir möchten also nicht, dass die Öffentlichkeit grundsätzlich Informationen
‫über alle Benutzer erhält.
‫Wir möchten auch nicht, dass jemand
‫Benutzer löscht oder Benutzer aktualisiert, und wirklich keine dieser
‫Operationen hier sollte für die Öffentlichkeit kostenlos sein.
‫Okay?
‫Für alle diese
‫Routen hier müssen Sie sich
‫also ab diesem Punkt immer authentifizieren.
‫In Ordung?
‫Und so könnten wir jetzt fortfahren
‫und diesen Authentifizierungscontroller hinzufügen. auf all diesen Routen schützen,
‫aber eigentlich können wir es besser machen, oder?
‫Denken wir
‫also daran, dass diese Schutzfunktion hier wirklich
‫nur eine Middleware ist.
‫Und denken Sie auch daran,
‫dass Middleware immer nacheinander ausgeführt wird, oder?
‫Mit diesem Router, den wir hier
‫haben, den wir am Anfang
‫erstellt haben, ist er eine Art Mini-Anwendung.
‫Erinnere dich daran?
‫Und so können wir wie bei
‫der regulären App auch auf diesem Router Middleware verwenden.
‫Okay?
‫Und so können wir so etwas tun.
‫Router. verwenden,
‫und jetzt Authcontroller. schützen, und das
‫war's.
‫Und damit
‫werden im Grunde alle Routen, die
‫nach diesem Punkt kommen, geschützt.
‫Okay?
‫Das liegt wiederum daran, dass
‫Middleware nacheinander ausgeführt wird.
‫Und so, nach diesen vier Middleware-Funktionen, denn
‫denken Sie daran, dass dies
‫technisch immer noch Middleware
‫ist, dann ist die nächste Middleware im Stack dieser Schutz.
‫Und diese ruft dann nur die nächste Middleware
‫auf, wenn der Benutzer authentifiziert ist.
‫Und die nächste Middleware ist in diesem Fall dieser Patch hier.
‫Okay?
‫Dies bedeutet wiederum, dass
‫alle diese
‫Routen zu all diesen Middlewares,
‫die technisch nach dieser kommen, jetzt geschützt sind.
‫Und so können wir fortfahren und diesen Schutz
‫von allen entfernen.
‫Okay?
‫Und nur um Ihnen zu beweisen, dass
‫dies jetzt noch funktioniert, holen wir uns einfach die Informationen von mir.
‫Also im Grunde der aktuelle Benutzer.
‫Wenn ich das jetzt
‫ausführe, werden Sie sehen, dass es immer noch funktioniert.
‫Und wenn ich die Authentifizierung
‫wegnehme, heißt es, wir sind nicht eingeloggt.
‫Und genau das macht diese Protect-Middleware.
‫Rechts?
‫So, jetzt wird es wieder funktionieren.
‫So perfekt!
‫Das ist ein netter kleiner Trick, um
‫alle Routen gleichzeitig zu schützen, normalerweise
‫durch die Verwendung einer Middleware,
‫die vor all diesen anderen Routen steht.
‫Okay?
‫Und wenn wir das
‫jetzt zum Beispiel ein wenig nach oben verschieben, wie
‫zum Beispiel hier, dann müssten wir
‫auch eingeloggt sein, um Passwort vergessen zu verwenden.
‫Rechts?
‫Lassen Sie mich Ihnen das nur beweisen.
‫Okay?
‫Und so müssen wir natürlich normalerweise nicht eingeloggt sein,
‫um unser Passwort zu
‫vergessen, denn das würde doch keinen Sinn machen, oder?
‫Aber jetzt, da wir diese Middleware etwas
‫nach oben verschoben haben, heißt es "Sie sind nicht eingeloggt".
‫Okay?
‫Und das beweist wirklich, dass dieser Authentifizierungscontroller hier seinen
‫Job macht.
‫Schützen Sie also alle Routen – nach
‫dieser Middleware.
‫Okay.
‫Denken Sie jetzt auch daran, wie
‫wir gesagt haben, dass alle diese Aktionen hier
‫nur von Administratoren ausgeführt
‫werden sollten, und wir können jetzt genau dieselbe Technik verwenden,
‫die wir hier zum Schutz all dieser Routen verwendet haben.
‫Also Router.
‫verwenden, Autorisierung. restriktiv, admin.
‫Okay?
‫Daher können jetzt nur Administratoren alle
‫Benutzer abrufen, neue Benutzer erstellen, Benutzer erneut abrufen
‫und Benutzer patchen und löschen.
‫In Ordung?
‫Und so sind ab
‫diesem Zeitpunkt alle Routen nicht nur geschützt,
‫sondern auch nur auf den Admin beschränkt.
‫Aber natürlich können diejenigen, die vor
‫jedem eingeloggten Benutzer kommen, darauf zugreifen, okay?
‫Also lass es mich dir nur beweisen.
‫Also melde ich mich nicht mit admin, sondern
‫mit testuser an.
‫Okay?
‫Und so haben wir uns
‫erfolgreich eingeloggt. Versuchen wir nun, alle Benutzer zu sehen.
‫Und jetzt heißt es, du bist nicht eingeloggt.
‫Nun, wir sind tatsächlich eingeloggt,
‫haben aber vergessen, die Berechtigung hier hinzuzufügen.
‫Also, Inhaber-Token, senden Sie es erneut, und jetzt sehen wir,
‫dass Sie keine Berechtigung zum Ausführen haben.
‫Aber jetzt, wenn wir das in den Administrator ändern,
‫also jetzt als Admin
‫einloggen und jetzt alle Benutzer bekommen, dann funktioniert
‫es natürlich.
‫So perfekt!
‫Und damit ist die Authentifizierung
‫und Autorisierung auch für diese Benutzer tatsächlich abgeschlossen.
‫Aber um dies
‫in Postman widerzuspiegeln, gehen wir zurück und setzen die
‫Autorisierung im Grunde überall hier.
‫Okay?
‫Das liegt wiederum daran,
‫dass wir später eine API-Dokumentation basierend auf
‫der Sammlung erstellen werden, die wir hier erstellt haben.
‫Und dann ist es wichtig, dass wir diesen
‫hier tatsächlich als geschützt markieren.
‫Speichern Sie es.
‫Speichern Sie auch dieses.
‫Und das gleiche für Benutzer aktualisieren und löschen.
‫Also, Inhaber-Token, speichern und dasselbe
‫für die Aktualisierung.
‫Okay, und da wir das tatsächlich tun, machen wir
‫dasselbe mit allen anderen.
‫Also nicht die Bewertungen, die
‫sind für etwas
‫später, sondern wirklich für die Touren.
‫Hier brauchen wir also keine Authentifizierung mehr, also
‫speichern wir das.
‫Vergessen wir auch keine Berechtigung,
‫aber zum Erstellen brauchen wir jetzt das Bearer-Token.
‫Okay?
‫Auch zum Aktualisieren, und daher ist
‫es sinnvoll, sie auch hier in Postman zu schützen.
‫Nun, dieser hatte ihn bereits,
‫denn wir haben ihn tatsächlich zum
‫Testen verwendet.
‫Dieser hatte es also nicht, aber den monatlichen Plan haben wir
‫auch für diesen geschützt.
‫Fügen Sie hier auch den
‫Inhaber-Token hinzu, und
‫ich glaube, damit sind wir jetzt wirklich fertig, auch damit.
‫Was wir also tun müssen, um diesen Teil
‫jetzt fertigzustellen, ist hier, das Gleiche gilt auch für die Bewertungen.
‫Und das erste, was ich
‫tun möchte, ist, grundsätzlich alle Routen zu
‫schützen, die mit Bewertungen zu tun haben.
‫Wir möchten also, dass niemand,
‫der nicht authentifiziert ist, Bewertungen erhält, postet oder ändert oder löscht.
‫Okay?
‫Wir sagen Router.
‫verwenden, Authentifizierungscontroller. beschützen.
‫Okay?
‫Das bedeutet, dass ab diesem Zeitpunkt
‫niemand mehr auf diese Route zugreifen kann,
‫ohne authentifiziert zu sein.
‫Aber wir können diesen Teil hier entfernen, okay?
‫Und nun, da die Authentifizierung aus dem Weg geräumt
‫ist, denken wir über die Autorisierung nach.
‫Daher sollten zunächst nur Benutzer
‫Bewertungen abgeben können.
‫Keine Guides und auch keine Administratoren.
‫Und diesen Teil haben wir hier eigentlich schon.
‫Okay?
‫Dann sollten Admins wie normale Benutzer
‫Bewertungen aktualisieren oder löschen können, um dann
‫ihre eigenen Bewertungen bearbeiten oder
‫löschen zu können.
‫Und schließlich können Guides keine Bewertungen hinzufügen, bearbeiten oder löschen.
‫Da die Guides diejenigen sind, die die Arbeit ausführen, wäre
‫es seltsam, wenn sie selbst Bewertungen
‫veröffentlichen oder die Bewertungen anderer Personen bearbeiten könnten, oder?
‫Also lassen Sie uns das, was wir gerade beschrieben haben, in Code setzen.
‫Patchen und Löschen sind also
‫grundsätzlich auf Benutzer
‫oder
‫eigentlich nur Benutzer und Admin beschränkt.
‫Und dann das gleiche zum Löschen.
‫Okay?
‫Und so sehen Sie, dass Guides und Lead
‫Guides jetzt überhaupt nichts mehr mit Bewertungen zu tun haben.
‫Alles, was sie tun können, ist, wirklich Bewertungen
‫zu erhalten, aber sie überhaupt nicht zu ändern oder zu veröffentlichen, okay?
‫Also, schnell jetzt in Postman, lasst uns
‫das auch hier setzen.
‫Also neue Bewertungen erstellen hat schon die Berechtigung, alle Bewertungen
‫bekommen braucht es auch jetzt.
‫Also, mit dem Inhaber-Token, speichern Sie hier
‫auch den Inhaber-Token.
‫Schreiben Sie jetzt und erhalten Sie auch eine einzige Bewertung.
‫Lassen Sie uns dies auch schön
‫anordnen, damit alle in der gleichen Reihenfolge sind.
‫Und nun zu diesen beiden hier,
‫sie sind tatsächlich auch geschützt.
‫Rechts?
‫Denn letztendlich sind es die
‫Review-Handler, die eigentlich für beide gefragt sind.
‫Hier müssen wir also auch dieses Inhaber-Token hinzufügen.
‫Okay?
‫Die einzige Möglichkeit, auf Daten
‫über Bewertungen zuzugreifen, besteht jetzt im Grunde darin, alle Touren aufzurufen.
‫Rechts?
‫Zumindest für Leute, die nicht authentifiziert sind.
‫Okay?
‫Also, lass uns das alles abschließen, und ich
‫denke, wir können jetzt loslegen, und wir haben
‫auch diesen Teil tatsächlich abgeschlossen.
‫Lass uns hier einfach ein bisschen aufräumen.
‫Und ja, ich denke, das ist es.
‫Damit haben wir also die Authentifizierungs-
‫und Autorisierungsteile aller unserer drei Ressourcen abgeschlossen, also sind wir
‫wirklich kurz davor, unsere API hier fertigzustellen.
‫Es gibt nur noch wenige Dinge zu tun, und
‫das alles werden wir im
‫Rest dieses Abschnitts tun.