import { requireAuth } from '../lib/auth.server'; import type { Route } from './+types/dashboard'; export function meta({}: Route.MetaArgs) { return [{ title: 'Dashboard | The Biergarten App' }]; } export async function loader({ request }: Route.LoaderArgs) { const auth = await requireAuth(request); return { username: auth.username, userAccountId: auth.userAccountId, }; } export default function Dashboard({ loaderData }: Route.ComponentProps) { const { username, userAccountId } = loaderData; return (
You are successfully authenticated. This is a protected page that requires a valid session.
Session Info
This demo showcases the following authentication features:
Login
POST to /api/auth/login with
username & password
Register
POST to /api/auth/register with
full user details
Session
JWT access & refresh tokens stored in an HTTP-only cookie
Protected Routes
This dashboard requires authentication via{' '}
requireAuth()
Token Refresh
POST to /api/auth/refresh with
refresh token