Back-end

Inleiding

Dit is puur voor feedback en ik weet dat ik al goed op weg ben maar nog niet alles kan. Ik heb met Laravel gewerkt omdat dat mij werd aangeraden door Gertjan en Rik. Aangezien Rik mijn maatje is, is het wel handig als ik hem om hulp vraag dat hij mij ook kan helpen. Ik denk wel dat ik door Laravel het een stuk beter snap als ik dat niet had gebruikt. Er zijn veel filmpjes over Laravel dus daar heb ik veel van geleerd. 

Na het gesprek leek het allemaal niet zo moeilijk meer. Alle dingen die ik heb aangepast staan dikgedrukt dat is wel zo overzichtelijk.

Ik heb daarbij geprobeerd om mijn site online te krijgen alleen is dat niet gelukt. Normaal bij Laravel in de mappen structuur als je op de public klikt ga je naar de site. Alleen nu staat er geen map public dus dat is vreemd. In plaats daarvan heb ik screenrecords gemaakt van de functionaliteiten. 

 

Ontwerp

Je hebt vooraf nagedacht over technische keuzes en dit heb je inzichtelijk gemaakt. Je kan je project technisch documenteren middels minimaal twee diagrammen (bijv. ERD, klassendiagram en/of flow chart). Je hebt een bestaande library/API toegevoegd (server side) aan je project om functionaliteiten toe te voegen of om het programmeren makkelijker te maken. Je kunt toelichten waarom dit nuttig is.

Een diagram is handig om te maken om het overzicht te zien. Ook helpt het om te zien hoe de tabelen zich tot elkaar verhouden. Je kan ook snel zien of je een koppel tabel nodig hebt. 

Ik heb mijn ERD aangepast en de juiste PK en FK er in gezet. Deze heb ik ook aangepast in mijn eigen database. Door middel van deze query ALTER TABLE `reserveringen` ADD FOREIGN KEY (`user_id`) REFERENCES 

`users`(`id`) ON DELETE RESTRICT ON UPDATE RESTRICT;

Als library heb ik Laravel gebruikt. Laravel is een framework voor PHP dat het programmeren makkelijker en sneller maakt. Ik heb voor Laravel gekozen omdat dit mij werd aangeraden door Rik en Gertjan. Hun konden mij dan ook helpen als ik ergens mee vast liep. Aangezien ik er nog niet zo veel van wist was dit ideaal. De standaard dingen zoals een html pagina doet hij al. Daarna moet ik het alleen nog even @include en @session. Verder vond ik ook handig omdat ik er een plugin in kon zetten voor de login. Ook via de route map kan je dan makkelijk aangeven welke pagina’s je mag bekijken zonder in te loggen en welke niet. 

 

Data

Je hebt een webapplicatie gebouwd op de server die gevoed wordt door een database. De database inhoud kan gelezen, bewerkt en verwijderd worden.

Ik heb een ‘account’ pagina gemaakt waar je kan zien welke reserveringen je gemaakt heb. Daarbij kan je hem(nog niet) verwijderen. Ook kan je hem (nog niet) bewerken. Ik weet de bijbehoorde queries” DELETE * FROM reservering WHERE id = ‘$_GET[‘id’]’ en voor het bewerken is het UPDATE * FROM reservering SET start TO ‘$_GET[‘start’]’, end TO ‘$_GET[‘end’]’ enzo

Het verwijderen van de reserveringen wilde ik met Laravel doen maar dat werkte op een of andere manier niet dus heb ik het met SQL gedaan. Met de query: DELETE FROM `reserveringen` WHERE `id`= $id.

Bewerken: Rik en ik hebben vrijdag letterlijk 2 uur hier aangezeten. Het is eindelijk gelukt. Het was nog even een probleem dat ‘end’ ook een sql taal is. Dit heb ik opgelost door er backtiks ervoor en achter gezet. 

Beveiliging

Een deel van je website is niet toegankelijk zonder in te loggen. Je form invoer wordt op de server gevalideerd en is beveiligd tegen xss en sql injecties. Wachtwoorden worden veilig opgeslagen.

De indexpagina kan iedereen zien maar zodra je naar een andere pagina wilt moet je eerst inloggen (plaatje 1) Dit heb ik door middel van een controller gedaan in Laravel (plaatje 2). Wat ik hier heb gedaan is bij elke url/account /reserveren stuurt hij je eerst langs de controller ->middelware(‘auth’). Als je ingelogd bent laat hij de juiste pagina zien. Zo niet dan krijg je het inlog scherm te zien.  de Laravel plugin die ik gebrukt heb heeft standaard dat hij als je een nieuwe gebruiker aanmaakt dat de wachtwoorden gehashed worden (plaatje 3). Wachtwoord hash is een soort formule waarbij je wachtwoord niet meer terug is te herleiden. 

Als je in Laravel een form maakt zonder {{csrf_field()}} onder de form tag te zetten doet hij het niet. (Dit heb ik uit ervaring geleerd ). Wat dit doet is het beschermd je tegen cross-site request forgery. Cross-site verzoekvervalsingen zijn een soort kwaadaardig misbruik waarbij ongeautoriseerde opdrachten worden uitgevoerd door een geverifieerde gebruiker.

Laravel is van zichzelf al beschermd tegen SQL injecties. Als je dubbel zeker wilt zijn kan je ook gebruik maken van de functie Eloquent in Laravel.