Marketplace authentication-logic

Guide to using Better Auth for client and server-side authentication.

install
source · Clone the upstream repo
git clone https://github.com/aiskillstore/marketplace
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/aiskillstore/marketplace "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/abdulsamad94/authentication-logic" ~/.claude/skills/aiskillstore-marketplace-authentication-logic && rm -rf "$T"
manifest: skills/abdulsamad94/authentication-logic/SKILL.md
source content

Authentication Logic

Overview

We use Better Auth (

better-auth
) for identifying users.

Config

  • Client:
    lib/auth-client.ts
    exports
    authClient
    .
  • Server:
    lib/auth.ts
    exports
    auth
    .

Client-Side Usage

Use

authClient
for signing in, signing out, and checking session state in Client Components.

import { authClient } from "@/lib/auth-client";

// Sign In
await authClient.signIn.email({
  email,
  password,
});

// Social Sign In
await authClient.signIn.social({
  provider: "google",
  callbackURL: "/onboarding", 
});

// Sign Out
await authClient.signOut();

Server-Side Usage

Use

auth.api.getSession
for protecting API routes or Server Actions.

import { auth } from "@/lib/auth";
import { headers } from "next/headers";

const session = await auth.api.getSession({
  headers: await headers()
});

if (!session) {
  return new Response("Unauthorized", { status: 401 });
}

AuthBar Component

  • Located at
    textbook/src/components/AuthBar/index.tsx
    .
  • Displays user avatar or login button.
  • Fetches session from
    /api/auth/session
    (Next.js API route proxying Better Auth).