Inloggning och registrering med BankID för Wordpress
Sedan några månader tillbaka har jag byggt på en lösning i Wordpress för Finkontoret som använder sig av BankID för inloggning och registrering. Finkontoret är coworking för distansarbetare och entreprenörer i småstäder och pendlarorter, där många tidigare spenderade mycket tid med att åka in till Stockholm för att jobba och göra affärer. För att kunna öppna enheter på mindre orter är verksamheten helt digital och våra medlemmar kan både registrera sig, betala och få en digital nyckel bara minuter innan de sätter sig i våra lokaler för att jobba. Trots enkelheten behöver våra medlemmar känna sig trygga i att alla som är och jobbar i lokalerna är identifierade och insatta i platsens regler.
Vi startar verksamheten med en första enhet i Trosa, strax söder om Södertälje. Att kunna bo i den vackra staden Trosa och dessutom jobba från ett produktivt och kreativt kontor bara ett stenkast från ån, blir möjligt under första veckorna av 2021.
Alla som besöker oss måste vara identifierade
För att den digitala delen av verksamheten skulle fungera behövde tre delar finnas på plats:
- Inloggning och registrering med BankID
- Möjlighet att betala för prenumerationer med lagrade kontokortsuppgifter
- Integration med låssystemet för att skapa digitala nycklar vid aktiva prenumerationer
Med hjälp av ett otal Wordpress-moduler och en del kod för att klistra ihop det, har vi nu en lösning som fungerar.
Plugins, egen kod och integrationer
En användare loggar in för första gången med hjälp av BankID. Inloggningen sker med hjälp av Auth0 och modulen för BankID som tillhandahålls av Criipto. Vid framgångsrik inloggning skapas användaren automatiskt i Wordpress, med hjälp av integrationen med Auth0.
Eftersom BankID-inloggningen erbjuder två sätt att logga in, antingen via BankID på samma enhet, eller på en annan enhet, skapar dock Auth0 två olika konton i de fall en användare växlar mellan metoderna. Detta på grund av att identitetsleverantören används som en del av användarens unika identitet när den skapas automatiskt. För att komma till rätta med detta behövde vi skapa en regel i Auth0 som ser till att slå ihop användarna i de fall samma person loggar in igen.
Koden för denna regel finns att tillgå för alla på Github.
När användaren väl är inloggad har denne en särskild roll i Wordpress, som gör att ett flöde för registrering av kompletterande uppgifter (e-post och telefonnummer) aktiveras. Telefonnumret verifieras genom ett SMS som skickats ut via Twilio.
För användare som är inloggade i Wordpress (och alltså är legitimerade med BankID) erbjuds möjlighet att köpa både dagpass och medlemskap med månadsbetalning genom WooCommerce Subscriptions. Betalning sker via Stripe. Möjligtvis lägger vi till Swish för dagpass senare, men så länge duger Stripe bra.
Vid varje uppdatering av användarkonton, eller förändring av prenumeration, exekveras en trigger (via WooCommerce och WP Webhooks) som kör en snutt Python-kod som ligger hos Heroku. Koden kontaktar i sin tur Evva AirKey, där en användare skapas och en digital nyckel genereras. Nyckeln skickas ut via SMS och användaren med rätt prenumeration kan öppna dörren med sin mobil.
Från tanke till kaffe
Med hjälp av en del tankearbete, en hel drös olika plugin för Wordpress och framförallt flexibilitet där det behövs, har vi med detta byggt en lösning som fungerar hela vägen. Lösningen ser till att alla som besöker oss är identifierade med sin riktiga identitet samtidigt som den gör det otroligt smidigt att gå från tanken om att testa coworking, till att faktiskt stå innaför dörren och hälla upp sin första kopp kaffe.
Alternativet hade varit att bygga allt från grunden, men det får bli till version 2.0.