Password-based Authentication
Password-based authentication block for React Router
Installation
Folder structure
This block includes the Supabase client. If you already have one installed, you can skip overwriting it.
1import { type RouteConfig } from '@react-router/dev/routes'
2import { flatRoutes } from '@react-router/fs-routes'
3
4export default flatRoutes() satisfies RouteConfigUsage
Once you install the block in your React Router project, you'll get all the necessary pages and components to set up a password-based authentication flow.
Getting started
After installing the block, you'll have the following environment variables in your .env.local file:
VITE_SUPABASE_URL=
VITE_SUPABASE_PUBLISHABLE_OR_ANON_KEY=-
If you're using supabase.com, you can find these values in the Connect modal under App Frameworks or in your project's API settings.
-
If you're using a local instance of Supabase, you can find these values by running
supabase startorsupabase status(if you already have it running).
Adding email templates
-
Add an email template for sign-up to the Supabase project. Your signup email template should contain at least the following HTML:
<h2>Confirm your signup</h2> <p>Follow this link to confirm your user:</p> <p> <a href="{{ .SiteURL }}/auth/confirm?token_hash={{ .TokenHash }}&type=email&next={{ .RedirectTo }}" >Confirm your email</a > </p>For detailed instructions on how to configure your email templates, including the use of variables like
{{ .SiteURL }},{{ .TokenHash }}, and{{ .RedirectTo }}, refer to our Email Templates guide. -
Add an email template for reset password to the Supabase project. Your reset password email template should contain at least the following HTML:
<h2>Reset Password</h2> <p>Follow this link to reset the password for your user:</p> <p> <a href="{{ .SiteURL }}/auth/confirm?token_hash={{ .TokenHash }}&type=recovery&next={{ .RedirectTo }}" >Reset Password</a > </p>
Setting up routes and redirect URLs
- Set the site URL in the URL Configuration settings in the Supabase Dashboard.
- Set up the route users will visit to reset or update their password. Go to the URL Configuration settings and add the
forgot-passwordroute to the list of Redirect URLs. It should look something like:http://example.com/auth/forgot-password. - Update the redirect paths in
login.tsxandupdate-password.tsxcomponents to point to the logged-in routes in your app. Our examples use/protected, but you can set this to whatever fits your app.