Authentication
User authentication and authorization
Overview
EasyStarter uses Better Auth for authentication, providing a complete solution for user management.
Supported Methods
| Method | Description |
|---|---|
| Email/Password | Traditional registration with email verification |
| GitHub OAuth | One-click login with GitHub account |
| Google OAuth | One-click login with Google account |
Configuration
Environment Variables
# Required
AUTH_SECRET=your-secret-key
# OAuth (optional)
GITHUB_CLIENT_ID=your-github-client-id
GITHUB_CLIENT_SECRET=your-github-client-secret
GOOGLE_CLIENT_ID=your-google-client-id
GOOGLE_CLIENT_SECRET=your-google-client-secret
# Email (for verification)
RESEND_API_KEY=your-resend-api-keyFrontend Usage
Sign In
import { authClient } from "@/lib/auth-client";
// Email/Password
await authClient.signIn.email({
email: "user@example.com",
password: "password123",
});
// OAuth
await authClient.signIn.social({ provider: "github" });
await authClient.signIn.social({ provider: "google" });Sign Out
await authClient.signOut();Get Current User
const { data: session } = authClient.useSession();
const user = session?.user;Session Management
Sessions are automatically managed by Better Auth:
- Cookie-based session storage
- Automatic refresh before expiration
- Cross-tab synchronization
Protected Routes
Use the authentication middleware to protect routes:
// In your route component
import { createFileRoute, redirect } from "@tanstack/react-router";
export const Route = createFileRoute("/dashboard")({
beforeLoad: async ({ context }) => {
if (!context.user) {
throw redirect({ to: "/sign-in" });
}
},
});