Documentation

Guides and references

Authentication

Authentication Overview

Authentication in NextBento with Supabase Auth.

Overview

NextBento uses Supabase Auth for authentication. Sessions are managed via HTTP-only cookies with the Supabase SSR package, providing secure, server-side session validation.

Auth Methods

MethodDescriptionComponents
Email/PasswordTraditional signup and loginlogin-form-*, signup-form-*
Magic LinkPasswordless — email a linklogin-form-* (magic link tab)
Google OAuthSign in with GoogleOAuth flow via /api/auth/oauth
GitHub OAuthSign in with GitHubOAuth flow via /api/auth/oauth
Login page (split layout) — OAuth, magic link, and email

File Structure

app/(auth)/
  login/page.tsx, login-2/page.tsx, login-3/page.tsx
  signup/page.tsx, signup-2/page.tsx, signup-3/page.tsx
  forgot-password/page.tsx, forgot-password-2/page.tsx, forgot-password-3/page.tsx
  reset-password/page.tsx, reset-password-2/page.tsx, reset-password-3/page.tsx

components/auth/
  login-form.tsx, login-form-minimal.tsx, login-form-split.tsx
  signup-form.tsx, signup-form-minimal.tsx, signup-form-split.tsx
  forgot-password-form-*.tsx, reset-password-form-*.tsx
  accept-invitation-form.tsx
  auth-split-layout.tsx

lib/auth/
  use-auth-actions.ts  — Client-side auth actions
  errors.ts            — Auth error handling

lib/supabase/
  client.ts   — Browser client
  server.ts   — Server client (cookies)
  service.ts  — Service role (admin)
  middleware.ts — Session refresh, protected routes

Session Flow

  1. User signs in via form or OAuth
  2. Supabase sets HTTP-only cookies
  3. lib/supabase/middleware.ts runs on each request — refreshes session if needed
  4. Protected routes check for user — redirect to /login if unauthenticated

Protected Routes

Middleware protects these paths when no user is logged in:

  • /dashboard and all dashboard sub-routes
  • /admin
  • /settings
  • /api-keys
  • /activity
  • /team

Unauthenticated users are redirected to /login.

Onboarding

New users are guided through /onboarding until profiles.onboarding_completed is true (profile → workspace → optional invite → billing CTA). Existing users are backfilled as completed so they are not redirected into onboarding. See app/(auth)/onboarding and app/api/onboarding.

API Routes

EndpointMethodDescription
/api/auth/loginPOSTEmail/password or magic-link login
/api/auth/signupPOSTEmail/password or magic-link signup
/api/auth/forgot-passwordPOSTSend reset email
/api/auth/reset-passwordPOSTReset password with token
/api/auth/change-passwordPOSTChange password (authenticated)
/api/auth/magic-linkPOSTSend magic link
/api/auth/oauthGET/POSTOAuth (Google, GitHub)
/api/onboardingGET/POSTOnboarding status and completion

Auth Layouts

NextBento supports three layout variants: centered, split, and minimal. See Auth Layouts for details.

Next Steps