Labb3
- Inlämningsdatum Inget inlämningsdatum
- Poäng 18
En inloggnings-sekvens med databas
Bas-uppgift
Översikt
I den här labben ska du skapa en webserver samt en simpel webbsida där nya användare kan registrera sig, samt registrerade användare kan logga in. Webbsidan skall bestå av en inloggnings/registrerings-sida, samt en profilsida för lyckade inloggningar. Ni kommer förses med simpla kopior av båda dessa sidor som del av labb-skelettet.
Labb-skelett
Labb-skelettet består bland annat av dessa filer (om en fil inte nämns här, så behöver ni inte förstå den, men den skall inte tas bort):
-
README.md
Den här filen förväntas ni läsa då den innehåller information om hur du får skelettet att köra. -
package.json
Den här filen berättar förnpm
att mappen innehåller ett javascript project, vilka beroenden projektet har, samt hur projektet startas. -
base_version/server.js
Den här filen är är webbserverns ingångs punkt och kommer vara den filen som körs först. -
base_version/database.js
Den här filen innehåller exempel kod för hur ni använder SQLite (vilket är ett krav för labben). -
base_version/public/login.html
Den här filen innehåller inloggningssidan för er webbsida och kommer serveras avserver.js
.
Specifika krav
-
use strict
skall användas i alla javascript filer. - ESLint skall användas. Samt de ESLint regler som inkluderas i labb skelettet skall vid redovisning köras UTAN NÅGRA VARNINGAR ELLER FEL.
- Databasen SQLite skall användas, samt alla queries skall vara säkra mot SQL injections. Skelettet kommer med ett exempel skrivet i
sqlite3
Links to an external site. som använder prepared statements. Se till att ni förstår exemplet innan ni går vidare. - Er databas ska checkas in i ert repo.
- UTF-8 ska användas i hela stacken (frontend, backend, databas, osv); testa genom att använda ÅÄÖ i användarnamnet.
- Registrerade användare skall sparas i databasen.
- Inloggning skall enbart tillåtas om det angivna användarnamnet och lösenordet finns registrerat i databasen.
- Registrering av ett upptaget användarnamn skall inte vara tillåtet.
- Användarnamn samt lösenord måste vara minst 5 tecken långa samt innehålla minst en bokstav och en siffra.
- Lyckade inloggningar skall automatisk omdirigera Links to an external site. användaren till dess profil sidan, medans misslyckade inloggningar skall visa inloggningssidan igen fast med ett felmeddelande.
- Lyckade samt misslyckade registreringar skall visa inloggningssidan med ett status meddelande som förklarar om registreringen vart lyckad eller inte.
Hash:ning samt saltning av lösenord är INTE ett krav i den här labben. Dvs lösenord får skickas i klartext.
* Node.js lägger till use strict
automatiskt.
Referenser
Nodejs: https://nodejs.org/en/ Links to an external site.
Express: https://expressjs.com/ Links to an external site.
SQLite3: https://www.npmjs.com/package/sqlite3 Links to an external site.
Bonus-uppgift 3X
Du skall nu implementera två middleware till express:
-
Ett som hindrar ej inloggade användare från få tillgång till profil sidan.
-
Samt ett som ser till att användare som redan loggat in sedan innan automatisk skippar login och landar direkt på profil när dem laddar webbsidan.
Båda dessa middleware skall implementeras med hjälp av Cookies, samt en lokal "session store".
(Du behöver INTE lagra sessions i databasen)
Matris
Kriterier | Bedömningar | Poäng |
---|---|---|
Description of criterion
tröskel:
poäng
|
poäng
--
|