Inloggningslänkar + inbjudningar — Zkrinet-plugin
På Zkrinet: lägg till blocket under Byggblock i panelen — ett klick, din egen kod rörs inte och en ögonblicksbild tas först. Installationsstegen nedan gäller om du kör PocketBase själv, till exempel efter en export.
Logga in med en länk i mejlet i stället för lösenord, och bjud in folk med en länk som skapar kontot åt dem. Testat mot PocketBase 0.40.4. Kräver pluginet mejl (för inbjudningarna).
#Ärligt om vad som är vad
Själva inloggningen med engångskod är PocketBase egen (OTP). Pluginet slår på den, gör mejlet svenskt med en knapp, förlänger giltighetstiden till 15 minuter och lägger till en landningssida. Inbjudningarna är vårt eget tillägg.
#Installera
Kopiera pb_hooks/ och pb_migrations/ (och pluginet mejl) in i projektet och starta om. Sätt Application URL under Settings — länkarna i mejlen byggs från den.
#Logga in med länk
Från din app (PocketBase JS SDK):
await pb.collection("users").requestOTP("anna@exempel.se")
Användaren får ett mejl med en knapp. Länken leder till en sida med knappen Logga in; när den trycks loggas hen in och skickas till startsidan (/). Inloggningen sparas där PocketBase JS SDK letar (pocketbase_auth), så din app är inloggad direkt om den ligger på samma adress som PocketBase. Ligger din frontend någon annanstans: låt användaren skriva in koden från mejlet och anropa pb.collection("users").authWithOTP(otpId, kod).
#Bjud in
Från din server (kräver superuser):
POST /api/zk/inbjudan {"epost": "nisse@exempel.se", "namn": "Nisse", "dagar": 7}
Nisse får ett mejl. När han trycker Gå med skapas kontot (verifierat) om det inte finns, och han loggas in. Finns kontot redan loggas han bara in — lösenordet ändras inte.
#Säkerhet
- Skannerskydd: länkarna loggar aldrig in direkt. Mejlskannrar (t.ex. Outlooks länkskydd) öppnar länkar men trycker inte på knappar.
- Engångskoden fungerar en gång och i 15 minuter. Inbjudningar fungerar en gång och i 1–30 dagar (standard 7).
- Inbjudningskoden sparas bara som SHA-256-hash. Den som läser databasen kan inte använda den.
- Landningssidorna skickas med
Cache-Control: no-storeochReferrer-Policy: no-referrer.
#Begränsningar
- Bara samlingen
users. - Efter inloggning skickas användaren till
/.