Welkom terug in deze les gaan we een aantal leuke nieuwe materiaal te zien.
We gaan combineren onze user model de authenticatie die we hebben bedekt met campings om ervoor te zorgen dat een gebruiker niet camping dat hij of zij niet kan aanmaken verwijderen of een gebruiker kan een camping niet bewerken, dat hij of zij niet creëren.
En dit is iets genaamd vergunning.
Dus authenticatie en autorisatie zijn er verschillende authenticatie verwijst naar uit te vinden of iemand is wie ze zeggen te zijn.
Nou vergunning is als je eenmaal weet wie iemand is.
Je erachter te komen wat ze mogen doen.
Dus denk aan het als toestemmingen.
Wat kan iemand wat wat is iemand bevoegd te maken met hun veiligheidsmachtiging in onze applicatie.
Dus als je niet beschikt over een camping eigenaar als je niet dezelfde I.D. hebben als de campings auteur dat u niet in staat zijn om te werken of te verwijderen.
Dus laten we beginnen met eenvoudige en laten we ermee werken, zodat je je niet het bewerken vorm kan geven, tenzij u de eigenaar van de camping.
Dus laten we naar onze camping routes hier.
En wat we willen doen is als je probeert en ga naar de camping route of bij te werken en uiteindelijk te verwijderen alsook alle drie van hen moeten we dezelfde logica waar we gewoon controleren hebben.
Heeft binnendiameter van de huidige gebruiker overeenkomen met de ID van de auteur van die camping.
Dus vergeet niet dat dit is wat onze datastructuur eruit ziet waar we trek de camping model.
We hebben auteur voor elke camping en er is een I.D. dat gaat om een ​​binnendiameter te zijn van een gebruiker verwijst naar een bepaalde gebruiker object I.D. en dan hebben we een gebruiker natuurlijk dat een object heeft I.D. Het is hier niet vermeld, maar iedere gebruiker heeft een binnendiameter en we gaan vergelijken met de momenteel ingelogde gebruikers I.D. naar de camping auteur dot ID, zodat we dat kunnen doen vrij gemakkelijk, als we omhoog gaan in ons ernaar.
We zullen daar beginnen.
En het eerste wat we willen doen is controle is iemand die de gebruiker ingelogd at all.
En dan, als niet zullen we de zomer buigen.
Als een gebruiker is ingelogd doet gebruiker eigenaar van de camping.
En zo ja, laten we de gebruiker lopen deze code vind mijn ID en alles te verwijderen.
Anders zullen we ook omleiden.
Dus laten we vul deze in te gaan om te zien of iemand is ingelogd.
We kunnen gewoon schrijven indien gewenst is geverifieerd.
We kunnen ook het midden, waar we hier al gedefinieerd is aangemeld gebruiken.
Ik zal je laten zien in een moment waarom we niet van plan om dat te doen.
Het korte antwoord is dat we het definiëren van onze eigen middleware en maar een klein beetje.
Dus we gaan naar die functionaliteit combineren in plaats van deze middleware.
Dus als er een verzoek is geverifieerd als dat het geval is dan zijn we goed om te gaan.
Als dat niet het geval laten we een constante log om te beginnen.
Je moet ingelogd zijn om dat te doen en dan zullen we een antwoord te doen.
En laten we gewoon een send om respons te beginnen sturen en wij zullen dit ook daadwerkelijk te sturen.
Dus als we zien dat we weten dat we niet bent aangemeld en het eerste wat zal werken.
Dus laten we kopieer deze code in de if en correct ingesprongen.
OK.
Dus we moeten ingelogd zijn.
Dat is niets nieuws hebben we al geschreven code om dit te doen.
Dus je zou kunnen denken waar ik ga over dit op een vreemde manier waarop we soort zijn.
Maar je zult zien in slechts een moment waarom.
Laten we eens testen het uit hoor.
Save start de server op.
En als ik opstart ik niet ingelogd.
Niemand is ingelogd.
Dus als ik probeer en ga naar slash ernaar vertelt het me moet je ingelogd zijn om dat te doen.
Dus onze eerste deel werkt prima.
Dan zodra we vergrendeld gaan we naar een andere verklaring hebben hier dat is waar het zal controleren.
Heeft de gebruiker eigenaar van de camping.
En de manier waarop we dat zullen doen is vrij eenvoudig.
Het eerste wat we moeten doen is het vinden van de camping die we al hier heb gedaan.
En toen we eenmaal vinden dat we nodig hebben om te controleren of de ID van de auteur op die camping overeenkomt met de huidige gebruiker, dat is vragen dat de gebruiker.
Dan zijn we goed om te gaan.
Dus de binnenkant van hier is waar we eigenlijk doen het doet de gebruiker op de camping.
We zullen de eerste bit te houden om te controleren of er een fout als er geen fout was, dan zullen we controleren.
Heeft een gebruiker op de camping, want dat betekent gevonden camping bestaat en dan zullen we moeten een if-statement en B als camping dot auteur ID als je zou denken dat we dit konden doen.
Equals gelijk gelijken.
Vraag die gebruiker dot onderstrepen ID.
Dus laat me gewoon laten zien wat ik bedoel laten we een contact log camping auteur dacht id en dan onder het zal doen annuleren dat log verzoek dat de gebruiker doet onderstrepen ID.
Dus een reactie uit de if statement.
Dus we zullen die twee lijnen te zien.
Ik zal aangemeld zijn natuurlijk als ik gewoon proberen en te vernieuwen op dit moment zonder ingelogd te zijn hebben we een fout hebben.
Maar als ik meld heeft nu Potato Head log in en dan ga ik terug naar graniet mijne slash in.
We hebben een probleem.
Het lijkt erop dat laten we eens kijken.
Nou dat was dom en proberen te annuleren als camping aan Arthur camping bestaat niet.
Het is gevonden camping.
Dus ik probeer het opnieuw de server opnieuw op te starten.
Eerste keer dat we zijn vers.
Je weet vertellen ons te plaatsen moet je ingelogd zijn nog steeds.
Dus nogmaals we inloggen Potato Head.
Wachtwoord.
OK.
Nu als ik probeer en krijgen een kijkje nemen op wat we hier te zien.
Eerste ding dat drukken we er zo uitziet.
Dus dat is gevonden camping Arthur ID en dan hebben we verzoeken die gebruikersgegevens I.D. en ze zien eruit als ze identiek zijn.
En als ze uitgeprint ze zijn identiek.
Maar achter de schermen zijn eigenlijk niet hetzelfde, dus verzoekt user id haar underscore ID is een string gevonden camping auteur dot-ID wordt een object is het een mangoest object.
En dit is slechts een lastige.
Ik vergeet het van tijd tot tijd het is echt frustrerend, want ze zien er hetzelfde uit als je probeert te debuggen, maar de waarheid is dat de eerste is niet echt een string is het een mangoest object.
Die ene we uitgeprint.
We zien een string, maar dat is nog maar de twee snaar versie.
Achter de schermen is het niet een string.
En dit is een string.
Dus als we ze vergelijken zal het niet werken.
Dus in plaats van ze te vergelijken met triple gelijken of dubbele gelijk wat kunnen we doen in plaats daarvan is het gebruik van een methode die mangoest geeft ons voor dit doel.
Dus wat we doen is schrijven een if-statement in plaats zetten dan het controleren van campings.
Auteur Dodd ID triple gelijken vragen bij gebruikers-ID.
We maken gebruik van dot gelijk.
Daar gaan we.
En nu onze IF statement zou moeten werken, met uitzondering van het feit dat dit moet worden gevonden camping weer wat terug te komen naar de database die we vinden met behulp van die ID.
Zo vinden we dat met het ID gebaseerd off van de route dan controleren we of de auteur ID op die gevonden camping is gelijk aan de op dat moment ingelogde gebruikers ID.
Als dat het geval is zullen we één ding te doen.
Anders zullen we iets anders doen.
Dus als dat het geval is zullen we dit doen hier geef camping pagina van het bewerken van camping pagina met gevonden camping.
Anders zullen we doen een rust heeft te sturen.
Je hebt geen toestemming om dat te doen natuurlijk zal dit uiteindelijk veranderen of het zal niet alleen een rode stip cent zijn, maar we zullen een echte boodschap die wordt weergegeven te hebben.
Dus laten we proberen om naar onze applicatie naar een show pagina eerste wat als ik probeer en bewerk het nu moet ik dan ingelogd zijn.
Nu als ik inloggen of meld ik me aan als iemand anders dan Potato Head zo zal tomaat hoofd doen en ik probeer en bewerken die u ziet hopelijk.
Daar gaan we Ik krijg je geen toestemming om dat te doen.
Nu als we terug te gaan en uit te loggen en meld terug als Potato Head en probeer het allemaal weer probeer ik en bewerken.
Ik heb wel toestemming.
En ik uiteindelijk hier.
Dus het werkt.
Wat geweldig is.
Nu, wat we zullen doen is eigenlijk dit refactorizar in een aparte functie.
De meeste van deze logica zal iets noemen.
Controleer gebruiker camping of ervoor te zorgen camping gebruiker iets waar we in principe de controle heeft de op dit moment ingelogde gebruiker wedstrijd deze bijzondere camping.
En de reden dat we zullen verhuizen, die in middleware is dat we het zullen gebruiken op te bewerken.
Ook willen we het te gebruiken op-update.
We willen niet dat iemand in staat zijn om een ​​verzoek te sturen als ze niet ingelogd.
Dus ook al weer gewoon via de browser.
De enige manier om te doen eigenlijk visueel te krijgen om de update om gegevens te verzenden wordt met behulp van dit formulier.
Je zou kunnen gebruiken postbode kon je een verzoek van postbode en niet worden geverifieerd.
Daarom willen we dezelfde logica hier en we willen hetzelfde doen om te verwijderen.
Dus we willen niet dat je in staat zijn om iets een camping verwijderen als u niet bent ingelogd.
En als je niet de eigenaar van het.
Dus wat we doen is schrijven een middleware we deze code nu te kopiëren.
Ik zal het er maar we gaan naar beneden te gaan voor nu alleen met onze andere middleware.
Nou, de laatste een zogenaamde check camping eigendom zomaar.
En dan zullen we deze code te plakken en we zullen we een beetje werk te doen hier hebben.
Maar het einddoel is dat op ons te bewerken moeten we in staat om onze middleware hier toevoegen controleren camping ownership.
We moeten in staat zijn om het te doen werken.
En ook op te verwijderen, maar we beginnen met het en wat we willen doen is te controleren.
Eerst moet u toe te voegen in het verzoek van reactie en de volgende niet vergeten dat zo middleware is ingesteld verzoek response volgende.
Dus als de gebruiker die momenteel is aangemeld.
Blijf in beweging als ze je niet eerder ingelogd dan het doen van een rust ons te sturen.
Voor nu gaan we naar een restaurant redirect doen en we hebben nog niet gezien.
We kunnen doen roodstaart redirect terug en dat zal de gebruiker terug naar waar ze vandaan kwamen uit de meest nemen.
De vorige pagina dat ze op en al snel gaan om u te laten zien hoe we een bericht kunnen sturen.
Nou, de boodschap die we willen sturen is zoiets als Je bent niet ingelogd, of je moet worden toegestaan ​​om dat te doen, maar we zijn er vertrekken als dat voor nu.
Dan, als ze ingelogd bent gaan we naar de camping te vinden.
Als er een fout zullen we net redirect ook terug.
Ook dit fout zou gebeuren als de camping niet kon worden gevonden om wat voor reden of als de database niet is aangesloten of is een rare ding meestal dat we eigenlijk niet zouden zien anders als de camping overeenkomt met de verzoeken gebruikers-ID.
Dus als de gebruiker die is net als in bezit dit dan in plaats van rendering campings bewerken omdat we niet altijd willen deze middleware te bewerken maken wat we willen doen is door naar de rest van de code in het verwijderen of verplaatsen naar de code een update of een bewerking.
Dus dat is waar we gaan doen.
Anders als ze niet zelf het zal we een rez redirect terug te doen.
Grote.
Dus laten we proberen dit uit te slaan en we zullen een update gaan onze bewerken route hier.
We kunnen dit trim van veel dus we hebben geen behoefte aan een van dit te doen echt, behalve voor we willen naar de camping en alles wat we doen is als we een camping vinden we niet nodig om te controleren of het te vinden wedstrijden meer, omdat we dat doen in het midden, waar dus alles wat we willen doen is het vinden van een camping kan ontdoen van dit alles.
Bijna alle Office-formaat dit juist zo zal een klein beetje.
Daar gaan we.
Dus omdat we Scheck's camping eigendom tarief hier toegevoegd alles wat we nu doen is als we op dit punt betekent dat we al camping eigendom gecontroleerd en dat we het door.
Anders als er een probleem is dat we zouden hebben omgeleid dat zien met de fout die ik krijg is dat we hebben een klein syntax fout hier dat ik een of andere manier verwijderd mijn functie verklaring hier en je kunt zien dat het klagen dat we niet de fout bent hanteren die we kunnen omgaan.
Maar het ding is als we op dit punt is er geen fout bij het vinden van PI ID, omdat we deden het hier beneden zou moeten zijn.
En als het hier werkt dan moeten we goed zijn om toch te gaan.
Dus laten we proberen het toch uit te zien als we nog problemen.
In principe we net verhuisd onze code uit in een aparte functie.
En vergeet niet een middleware heet Voordat we naar de juiste handler.
OK.
Dus laten we geven het een schot.
Het eerste wat laten we teruggaan en laten we zeggen te proberen en klik op Bewerken.
Ik ben niet ingelogd.