Witamy z powrotem w tej lekcji będziemy widzieć zabawić nowego materiału.
Zamierzamy połączyć nasz model użytkownika uwierzytelniania, które omówiliśmy z campingów, aby upewnić się, że użytkownik nie może usuwać campingu że on lub ona nie tworzyła ani użytkownik nie może edytować campingu, że on lub ona nie stworzył.
I to jest coś, co nazywa autoryzacji.
Więc uwierzytelnianie i autoryzacja istnieją różne Uwierzytelnianie odnosi się do dowiedzieć się, czy ktoś jest którzy mówią, że są.
Dobrze zezwolenie jest gdy wiesz, kto jest kimś.
Dowiedzieć się, co oni mogą zrobić.
Więc pomyśl o tym jak o uprawnieniach.
Co może ktoś, co to, co ktoś upoważniony do czynienia z ich poświadczenia bezpieczeństwa w naszej aplikacji.
Więc jeśli nie jesteś właścicielem campingu jeśli nie mają takiego samego numeru identyfikacji jako autor campingów, że nie będzie w stanie zaktualizować lub usunąć.
Więc zacznijmy proste i niech z nim pracować, tak że nie może dać Ci formularz edycji, chyba że jesteś właścicielem campingu.
Więc chodźmy do naszych dróg campingu tutaj.
A to, co chcemy zrobić, to jeśli spróbujesz i idź do drogi campingu lub aktualizacji i ostatecznie także usunąć wszystkie trzy z nich musimy mieć tę samą logikę, gdzie po prostu sprawdzić.
Czy numeru identyfikacji bieżącego użytkownika dopasować identyfikator autora o tym campingu.
Więc pamiętać, że to, co nasza struktura danych wygląda gdzie podciągnąć model pole kempingowe.
Mamy autora dla każdego campingu i nie jest to średnica wewnętrzna że zamierza być średnica wewnętrzna dla użytkownika odwołuje obiektu numeru identyfikacji konkretnego użytkownika a następnie mamy użytkownikowi oczywiście, że ma numeru identyfikacji obiektów To nie podano tutaj, ale każdy użytkownik posiada numeru identyfikacji i zamierzamy porównać aktualnie zalogowanych użytkowników średnica wewnętrzna na campingu autor dot ID więc możemy to zrobić dość łatwo, jeśli idziemy do naszego w nim.
Zaczniemy tam.
A pierwszą rzeczą, którą chcesz zrobić, to sprawdzić, to ktoś, kto jest zalogowany użytkownik w ogóle.
A potem, jeśli nie będziemy przekierowywać lato.
Jeśli użytkownik jest zalogowany użytkownik robi właścicielem campingu.
A jeśli tak będziemy pozwolić użytkownikowi uruchomić ten kod znaleźć moje ID i usuń wszystko.
W przeciwnym razie będziemy również przekierować.
Warto więc wypełnić tę aby rozpocząć, aby zobaczyć, czy ktoś jest zalogowany.
Możemy po prostu napisz na żądanie jest uwierzytelniane.
Możemy również skorzystać z pola, gdzie mamy już zdefiniowany tutaj jest zalogowany.
Pokażę ci za chwilę, dlaczego nie zamierzamy tego robić.
Krótka odpowiedź jest taka, że ​​mamy do definiowania własnej middleware i tylko trochę.
Więc mamy zamiar połączyć tę funkcjonalność, zamiast tego pośredniczącego.
Więc jeżeli wniosek został uwierzytelniony jeśli jest, to jesteśmy dobrze iść.
Jeśli to nie jest przypadek zróbmy stałą dziennik, aby rozpocząć.
Musisz być zalogowany, aby to zrobić, a potem zrobimy odpowiedzi.
I niech po prostu zrobić, aby rozpocząć reakcję send out wysyłania i będziemy to wysyłać rzeczywistości.
Więc jeśli widzimy, że my wiemy, że nie jesteś zalogowany, a pierwszą rzeczą, jaką będzie pracował.
Warto więc skopiować ten kod wewnątrz if i wcięte prawidłowo.
OK.
Więc musimy być zalogowany.
Która nie jest niczym nowym, że już napisany kod, aby to zrobić.
Więc może być myślenie, dokąd idę o tym w dziwny sposób, który my niby jesteśmy.
Ale zobaczysz za chwilę dlaczego.
Załóżmy, przetestować go jednak.
Zapisz uruchomić serwer w górę.
A kiedy zacznę się nie jestem zalogowany.
Nikt nie jest zalogowany.
Więc jeśli spróbuję przejść ciąć na to, że mówi mi, musisz być zalogowany, aby to zrobić.
Tak więc nasza pierwsza część pracuje dobrze.
Potem raz mamy zablokowane będziemy mieć kolejne oświadczenie, w którym znajduje się tu, gdzie będzie to sprawdzić.
Czy użytkownik jest właścicielem campingu.
I sposób, że zrobimy to całkiem proste.
Pierwszą rzeczą, jaką musimy zrobić, to znaleźć na campingu, który mamy już zrobione tutaj.
A potem kiedy już go znaleźć musimy sprawdzić, czy identyfikator autora na tym campingu mecze bieżącego użytkownika, który jest żądać tego użytkownika.
Wtedy jesteśmy dobrze iść.
Więc wewnątrz tutaj jest miejsce, gdzie faktycznie królice użytkownika na campingu.
Będziemy pierwszy bit do sprawdzenia, czy jest to błąd, jeśli nie ma błędu wtedy będziemy sprawdzać.
Czy użytkownikowi na campingu, bo to oznacza, znaleziono istnieje campingu i wtedy będziemy mieć if i B, jeśli campingu dot autor ID jak mogłoby się wydawać, że możemy to zrobić.
Równa równa równych.
Zażądać dot użytkownika podkreślenia tożsamości.
Więc niech mi tylko pokazać, co mam na myśli zróbmy dziennik kontakt campingu autor myślał identyfikator, a następnie poniżej to zrobi anulować tę prośbę dziennika użytkownik nie podkreślają ID.
Więc komentarz out if.
Więc zobaczymy, te dwie linie.
Będę musiał się zalogować, oczywiście jeśli tylko spróbować odświeżyć teraz bez logowania mamy błąd.
Ale jeśli nie ma teraz zalogować Potato Head w dzienniku, a potem wrócić do kopalni granitu slash na niego.
Mamy problem.
Wygląda na to, zobaczmy.
Dobrze, że to głupie i próbuje odwołać się jak campingu w Arthur campingu nie istnieje.
Można go znaleźć campingu.
Więc spróbuję ponownie zrestartować serwer.
Pierwszy raz jesteśmy świeże.
Wiesz, mówią nam, musisz być zalogowany nadal.
Więc znowu zalogować Potato Head.
Hasło.
OK.
Teraz, gdy próbuję i zrobić to spojrzeć na to, co widzimy tutaj.
Pierwszą rzeczą, którą możemy wydrukować wygląda następująco.
Więc to jest znaleźć campingu Arthur ID, a następnie mamy żądania danych użytkownika średnica wewnętrzna i wyglądają jak są one identyczne.
A kiedy są one drukowane są one identyczne.
Ale za kulisami rzeczywistości nie są takie same, więc wnosi user id jej podkreślenia Identyfikator jest ciągiem znaleźć campingu autor dot ID obiekt jest obiektem Mangusta.
I to jest właśnie podchwytliwe.
I zapomnij o tym od czasu do czasu to naprawdę frustrujące, bo wyglądają tak samo, gdy starasz się debugowania, ale prawda jest pierwszą w rzeczywistości nie jest ciągiem to obiekt Mangusta.
To jeden możemy wydrukować.
Widzimy ciąg ale to tylko wersja dwóch znaków.
Za kulisami nie jest ciągiem.
I to jest ciąg.
Więc kiedy ich porównanie to nie będzie działać.
Więc zamiast porównując je z potrójnymi równych lub podwójne równa co możemy zrobić, to zamiast tego użyć metody, która daje nam mangusta do tego celu.
Więc co możemy zrobić, to napisać oświadczenie, jeśli trafi zamiast sprawdzać kempingów.
Autor Dodd ID potrójne równi zgłosić przy identyfikatora użytkownika.
Używamy dot równa.
No to jedziemy.
A teraz nasze oświadczenie IF powinna pracować z wyjątkiem faktu, że należy znaleźć campingu jeszcze raz, co wraca do bazy, że jesteśmy ze znalezieniem za pomocą tego identyfikatora.
Tak więc okazuje się, że z ID w oparciu off trasie wtedy sprawdzić, czy identyfikator autora na danym znalezionego campingu wynosi aktualnie zalogowanych użytkowników ID.
Jeśli tak jest w przypadku zrobimy jedno.
W przeciwnym razie będziemy robić coś innego.
Więc jeśli tak jest w przypadku zrobimy to tu renderowanie strony campingu strony campingu edycji znajdując campingu.
W przeciwnym razie będziemy robić reszta będzie wysyłać.
Nie masz uprawnień do tego oczywiście będzie to zmienić w końcu czy to nie będzie tylko czerwona kropka centów, ale będziemy mieć rzeczywisty komunikat, który wyświetla.
Więc spróbujmy, aby przejść do naszej aplikacji przejść do Pokaż stronę pierwszą rzeczą, gdy próbuję go edytować i teraz muszę być zalogowany.
Teraz, jeśli mogę się zalogować lub zarejestrować się za kogoś innego niż Potato Head tak zrobi głowę pomidorowy i staram i edytować, że zobaczysz nadzieją.
Nie idziemy mogę nie masz uprawnień do tego.
Teraz, jeśli chcemy wrócić i się wylogować i zalogować ponownie jako Potato Head i spróbuj to wszystko jeszcze raz spróbować i edycji.
I masz uprawnień.
I kończy się tutaj.
Tak to działa.
Który jest świetny.
I co teraz zrobimy faktycznie byłaby to w osobnej funkcji.
Większość tej logiki będzie nazwać to coś podobnego.
Sprawdź campingu użytkownika lub zapewnienia campingu użytkownika coś dokąd w zasadzie sprawdzanie czy aktualnie zalogowanego użytkownika meczu tej konkretnej campingu.
A powodem, że przeniesiemy się middleware jest to, że będziemy go używać podczas edycji.
Chcemy także, aby używać go na aktualizację.
Nie chcemy, aby ktoś mógł wysłać wniosek, jeśli oni nie zalogowany.
Więc nawet jeśli ponownie tylko przy użyciu przeglądarki.
Jedynym sposobem na to faktycznie wizualnie dostać się do aktualizacji do wysyłania danych jest za pomocą tego formularza.
Można użyć listonosza można wysłać żądanie od listonosza, a nie być uwierzytelnione.
Dlatego chcemy tę samą logikę tu i chcemy zrobić to samo dla usunięcia.
Więc nie chcemy, aby móc usunąć coś campingu jeśli nie jesteś zalogowany.
A jeśli nie jest ich właścicielem.
Więc co zrobimy to napisać middleware będziemy skopiować ten kod do teraz.
Ja go tam zostawić, ale mamy zamiar zejść na razie tylko z naszej drugiej warstwy pośredniej.
Dobrze ostateczna jeden nazywa kontrola własności campingu tak po prostu.
A potem będziemy wklej ten kod, a my mamy trochę pracy do zrobienia.
Ale ostatecznym celem jest to, że na naszej edycji powinniśmy móc dodać naszą middleware tutaj sprawdzić własności pole kempingowe.
Powinniśmy być w stanie zrobić to zaktualizować.
A także na usunięcie, ale zaczniemy na niego i to, co chcemy zrobić, to sprawdzić.
Najpierw trzeba dodać w odpowiedzi na żądanie, a następnie pamiętać, że tak middleware jest skonfigurowana odpowiedź żądania następnego.
Więc jeśli użytkownik jest aktualnie zalogowany.
Ruszaj się, jeśli nie jesteś zalogowany, a nie robi resztę nam wysłać.
Na razie mamy zamiar zrobić przekierowanie restauracji i nie widziałem tego jeszcze.
Możemy to zrobić redstart przekierowanie z powrotem i że zajmie użytkownika z powrotem skąd pochodzą najbardziej.
Poprzedniej strony, które były na bardzo szybko i są zamiar pokazać, w jaki sposób możemy wysłać wiadomość.
Dobrze komunikat chcemy wysłać coś takiego jak Ty nie jesteś zalogowany, albo musi mieć możliwość, aby to zrobić, ale wyjeżdżamy to tak do teraz.
Następnie, jeśli jesteś zalogowany mamy zamiar znaleźć campingu.
Jeśli wystąpi błąd musimy po prostu przekierować z powrotem także.
Znowu ten błąd by było, gdyby na campingu nie można znaleźć jakiegoś powodu lub jeśli baza danych nie jest podłączony lub jest trochę dziwne, że zazwyczaj nie będzie faktycznie zobaczyć else if campingu mecze identyfikator żądania użytkownika.
Więc jeśli użytkownik, który jak się posiada to wtedy zamiast renderowania campingów zmienił, bo nie zawsze chcą tego middleware do renderowania zmienił to, co chcemy zrobić, to przejść do pozostałej części kodu w usunięciu lub przeniesieniu się do kodu aktualizacja lub edytować.
Więc to gdzie mamy dalej robić.
W przeciwnym razie, jeśli nie są właścicielami to zrobimy przekierowanie rez powrotem.
Wspaniały.
Więc spróbujmy się go zapisać, a my go an aktualizować nasze edycji trasy tutaj.
Możemy to przyciąć dół dużo, więc nie musimy robić nic z tego naprawdę wyjątkiem chcemy znaleźć campingu i wszystko to zrobimy to, jeśli znajdziemy campingu nie musimy sprawdzić, czy to mecze ponieważ już robimy, że w środku, gdzie więc wszystko chcemy zrobić, to znaleźć campingu można pozbyć się tego wszystkiego.
Prawie wszyscy Format Biuro to poprawnie więc się trochę.
No to jedziemy.
Tak, ponieważ dodaliśmy campingu stopy własności Scheck tu wszystko, co robimy teraz, gdy mamy do tego punktu oznacza to, że mamy już sprawdzone własności campingu i że my zrobiliśmy to przez.
W przeciwnym razie istnieje problem mielibyśmy przekierowany że widzieli błędu dostaję to mamy mały błąd tutaj składni, która jest jakoś usunięte moją deklarację funkcji tu i widać to narzekają, że nie jesteśmy obsługi błędu, który możemy obsłużyć.
Ale chodzi o to, czy mamy do tego momentu nie powinno być błąd w znalezieniu PI identyfikator, ponieważ zrobiliśmy to tutaj.
A jeśli tu pracuje wtedy powinniśmy być dobrze iść tak.
Więc spróbujmy go jednak sprawdzić, czy nie mamy żadnych problemów.
Zasadniczo po prostu przeniósł się nasz kod w osobnej funkcji.
I pamiętaj, middleware nazywa Zanim przejdziemy do właściwej obsługi.
OK.
Więc dajmy mu szansę.
Pierwszą rzeczą, wróćmy i powiedzmy spróbować i kliknij Edytuj.
Nie jestem zalogowany.