FeaturesTemplatesShowcaseTownie
AI
BlogDocsPricing
Log inSign up
olifrah
olifrahlastlogin
Remix of stevekrouse/lastlogin
Public
Like
lastlogin
Home
Code
2
README.md
main.tsx
Branches
1
Pull requests
Remixes
History
Environment variables
Val Town is a collaborative website to build and scale JavaScript apps.
Deploy APIs, crons, & store data – all from the browser, and deployed in milliseconds.
Sign up now
Code
/
Code
/
Search
README.md

LastLogin Authentication

Add user auth to your app via LastLogin. LastLogin is a hosted auth provider that enables login through email, Google, Github, etc.

How to setup

These instructions were written to be easily copy-and-pasteable into LLMs like Townie.

  • import { lastlogin } from "https://esm.town/v/stevekrouse/lastlogin_safe"
  • Wrap the main HTTP handler with lastlogin, exporting it as export default lastlogin(handler).
  • In the HTTP handler, retrieve the user's email from the request headers using const email = request.headers.get("X-LastLogin-Email")
  • Use the email variable to determine if the user is logged in. If present, display user-specific content; if not, show login options.
  • import { LoginWithGoogleButton } from "https://esm.town/v/stevekrouse/LoginWithGoogleButton"
  • Use the React Component, optionally supplying the text attribute
  • Add "via LastLogin" as context underneat the LoginWithGoogleButton, usually centered and less-emphasized, linking to https://lastlogin.io/
  • Include a logout link that redirects to "/auth/logout" when the user is logged in.
  • Pass the email from the server to the client-side code if using React hydration or similar techniques.

Screenshot 2024-08-08 at 08.48.41.gif

Live demo

How it works:

  1. Your users click on a link to /auth/login in your app
  2. This middleware directs them to login via LastLogin
  3. They authenticate to LastLogin
  4. LastLogin redirects them back to your app
  5. This middleware "logs them in" to your app by giving them a session cookie.
  6. In your app, you can read the X-LastLogin-Email header to see which (if any) user is logged in

Notes

  • If you want username & password auth: @stevekrouse/lucia_middleware
  • This middleware stores sessions in the lastlogin_session table in your Val Town SQLite
  • This val has NOT been properly audited for security. I am not a security expert. I would suggest only using it for demos, prototypes, or apps where security is not paramount. If you are a security expert, I would appreciate your help auditing this!

Todos

  • Let the user customize the name of the SQLite table
  • Get a proper security audit for this
Code
README.mdmain.tsx
Go to top
X (Twitter)
Discord community
GitHub discussions
YouTube channel
Bluesky
Product
FeaturesPricing
Developers
DocsStatusAPI ExamplesNPM Package Examples
Explore
ShowcaseTemplatesNewest ValsTrending ValsNewsletter
Company
AboutBlogCareersBrandhi@val.town
Terms of usePrivacy policyAbuse contact
© 2025 Val Town, Inc.