Authentication

02-05-2023

Et af de store features til den nye hjemmeside, er et kommentarsystem hvor brugere kan tilføje fortolkninger og give feedback til bibelteksten. Det var derfor meget relevant med et login system, så man kunne have styr på hvem der skriver kommentarerne. I starten arbejdede jeg med Next-Auth pakken til Next.js, men det viste sig hurtigt at være bloated og for kompliceret til mig. Jeg gik derfor også til at lave mig eget system. På den måde viste jeg præcist hvordan det virkede, og havde et overblik over arkitekturen.

Først og fremmest skulle der være en login side. Jeg havde tidligere arbejdet med forms, så det var relativt nemt at lave en login side. Jeg tilføjede også nogle tags til tekstfelterne, så LastPass kunne genkende dem (På den måde kunne jeg nemt og hurtigt indtaste login oplysninger).


Det er også lagt op til, at alle og enhver skal kunne lave en bruger. Så der skulle også laves en registreringsside, hvor brugeren kan indtaste sine oplysninger. I fremtiden kunne det måske være relevant med et form for "bekræft identitet" system, så man ikke kan udgive sig for at være andre personer. Dog er det først relevant senere.

Det var også en kunst at tilføje nogle passende krav til de forskellige felter. F.eks. er der begrænsning på længden af input, så man ikke kan fylde databasen op med data. Derudover læste jeg f.eks. også op på klassiske krav til adgangskoden, mest så brugeren ikke indtaster en alt for usikker kode. Jeg tilføjede også nogle råd i bunden af siden, da det ikke er alle, som ved at adgangskoder skal være sikre.


Når brugeren så er logget ind, vil det blive vist oppe i højre hjørne, sammen med en log ud knap. Der kunne sagtens tilføjes flere muligheder (f.eks. notifikationer), men disse features vil først komme senere.

Brugeren kan så klikke på sit navn, og blive ført ind til en side, hvor de kan behandle deres konto/bruger. Pt. er der ikke meget funktionalitet i knapperne, men det vil blive tilføjet senere. Tanken er også, at andre brugere skal kunne se hinandens sider (lidt ligesom facebook). På siden vil man også kunne se en liste over alle de fortolkninger, som man har givet en stjerne.


Loginet virker ved at clienten sender en request til API'en. Her bliver den sendte adgangskode sammenlignet med den gemte hashed adgangskode. Hvis de stemmer overens, bliver der lavet en session. Denne session gemmes til senere authentication, og bliver derefter sendt tilbage til clienten.


I fremtiden hvis brugeren så åbner siden, bliver der sendt en authentication request, hvor brugerens session token (cookie), bliver sammenlignet med resten databasen. Hvis der findes et sådan session-token, bliver brugeren returneret.


Hvis brugeren så vil logge ud, bliver cookien så bare slettet.