EasyStarter logoEasyStarter

Authentication

User authentication and authorization

Overview

EasyStarter uses Better Auth for authentication, providing a complete solution for user management.

Supported Methods

MethodDescription
Email/PasswordTraditional registration with email verification
GitHub OAuthOne-click login with GitHub account
Google OAuthOne-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-key

Frontend 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" });
		}
	},
});

On this page