Authenticatie
Google OAuth en aanmelden met e-mail, plus sessiebeheer.
routess ondersteunt twee aanmeldmethodes, Google OAuth (one-tap) en e-mail + wachtwoord, die beide eindigen in dezelfde JWT-sessiecookie op de API.
Google-flow
- De webapp laadt de Google Identity Services SDK en rendert de aanmeldknop.
- Bij succes geeft Google een ID-token terug aan de browser.
- Web post het ID-token naar
POST /api/v1/auth/google. - De API verifieert de handtekening en audience van het token tegen de JWKS van Google.
- De API upsert de gebruiker (op Google
sub), geeft een eigen JWT uit en zet die als eenHttpOnly,Secure,SameSite=Lax-cookie. - Volgende API-aanroepen bevatten de cookie automatisch.
E-mailflow
POST /api/v1/auth/signup-emailregistreert het account (wachtwoorden zijn minstens 12 tekens, gehasht opgeslagen) en stuurt een verificatielink die 24 uur geldig is.POST /api/v1/auth/verify-emailverbruikt het token uit de link en meldt de gebruiker aan.POST /api/v1/auth/login-emailmeldt aan bij latere bezoeken en geeft dezelfde sessiecookie uit als de Google-flow.POST /api/v1/auth/request-password-resetmailt een resetlink die 30 minuten geldig is;POST /api/v1/auth/reset-passwordverbruikt die.
E-mailbezorging gaat via Resend wanneer RESEND_API_KEY is gezet; anders worden verificatie- en reset-URL's naar stdout gelogd (de dev/self-host console-transport).
Een via Google aangemaakt account kan later een wachtwoord toevoegen (POST /api/v1/users/me/password), zodat beide methodes werken voor dezelfde gebruiker.
Waarom een door de server uitgegeven JWT?
- Laat ons app-specifieke claims toevoegen (gebruikersrol, standaardeenheid)
- Ontkoppelt de sessieduur van het token van Google
- We hoeven Google niet bij elke request aan te roepen
Afmelden
POST /api/v1/auth/logout wist de cookie. De webapp wist ook de Zustand-auth-state.
Sessievernieuwing
JWT's zijn kortlevend (15 minuten). De API vernieuwt stilletjes bij elke geauthenticeerde request en geeft een verse cookie terug. Als de gebruiker te lang weg is, verloopt de cookie en meldt hij zich opnieuw aan via de stille her-authenticatie van Google (in de meeste gevallen zonder interactie van de gebruiker).