Концепции, ценность и типичные сценарии клонирования — меньше кода.
Концепции, ценность и типичные сценарии клонирования — меньше кода.
Preparing Ring content
Preparing Ring content
Preparing Ring content
Ring Platform использует Auth.js v5 (NextAuth) с JWT стратегией сессий. Адаптер (PostgreSQL или Firebase) выбирается по DB_BACKEND_MODE.
Используйте вкладки Основатель / Разработчик в боковой панели документации для фильтрации по аудитории.
| Провайдер | Поток | Auth.js провайдер |
|---|---|---|
| Google OAuth | Полный OAuth 2.0 redirect + Google Identity Services (GIS) One Tap | GoogleProvider + CredentialsProvider("google-one-tap") |
| Apple Sign-In | OAuth redirect, нативный iOS/macOS | AppleProvider |
| Magic Links | Email через Ring Mailer, 24-часовой срок действия токена | Resend |
| Крипто-кошелек | Nonce-подпись верификация (MetaMask, WalletConnect) | CredentialsProvider("crypto-wallet") |
Конфигурация находится в auth.ts и auth.config.ts в корне проекта. Auth.js v5 разделяет edge-безопасную конфигурацию (auth.config.ts — без провайдеров, минимальные callbacks) от полной серверной конфигурации (auth.ts — все провайдеры, адаптеры базы данных).
Auth.js v5 управляет всем потоком аутентификации — платформа не использует Firebase Auth напрямую. Firebase Admin SDK используется только для серверной верификации токенов и поиска документов пользователей в режиме firebase-full.
Поток сессии:
DB_BACKEND_MODE основан на PostgreSQLDB_BACKEND_MODE=firebase-fullКлючевые дизайн-решения:
users.id), никогда Google sub или Apple subRing Platform использует Auth.js v5 (NextAuth) с JWT стратегией сессий. Адаптер (PostgreSQL или Firebase) выбирается по DB_BACKEND_MODE.
Используйте вкладки Основатель / Разработчик в боковой панели документации для фильтрации по аудитории.
| Провайдер | Поток | Auth.js провайдер |
|---|---|---|
| Google OAuth | Полный OAuth 2.0 redirect + Google Identity Services (GIS) One Tap | GoogleProvider + CredentialsProvider("google-one-tap") |
| Apple Sign-In | OAuth redirect, нативный iOS/macOS | AppleProvider |
| Magic Links | Email через Ring Mailer, 24-часовой срок действия токена | Resend |
| Крипто-кошелек | Nonce-подпись верификация (MetaMask, WalletConnect) | CredentialsProvider("crypto-wallet") |
Конфигурация находится в auth.ts и auth.config.ts в корне проекта. Auth.js v5 разделяет edge-безопасную конфигурацию (auth.config.ts — без провайдеров, минимальные callbacks) от полной серверной конфигурации (auth.ts — все провайдеры, адаптеры базы данных).
Auth.js v5 управляет всем потоком аутентификации — платформа не использует Firebase Auth напрямую. Firebase Admin SDK используется только для серверной верификации токенов и поиска документов пользователей в режиме firebase-full.
Поток сессии:
DB_BACKEND_MODE основан на PostgreSQLDB_BACKEND_MODE=firebase-fullКлючевые дизайн-решения:
users.id), никогда Google sub или Apple subRing Platform использует Auth.js v5 (NextAuth) с JWT стратегией сессий. Адаптер (PostgreSQL или Firebase) выбирается по DB_BACKEND_MODE.
Используйте вкладки Основатель / Разработчик в боковой панели документации для фильтрации по аудитории.
| Провайдер | Поток | Auth.js провайдер |
|---|---|---|
| Google OAuth | Полный OAuth 2.0 redirect + Google Identity Services (GIS) One Tap | GoogleProvider + CredentialsProvider("google-one-tap") |
| Apple Sign-In | OAuth redirect, нативный iOS/macOS | AppleProvider |
| Magic Links | Email через Ring Mailer, 24-часовой срок действия токена | Resend |
| Крипто-кошелек | Nonce-подпись верификация (MetaMask, WalletConnect) | CredentialsProvider("crypto-wallet") |
Конфигурация находится в auth.ts и auth.config.ts в корне проекта. Auth.js v5 разделяет edge-безопасную конфигурацию (auth.config.ts — без провайдеров, минимальные callbacks) от полной серверной конфигурации (auth.ts — все провайдеры, адаптеры базы данных).
Auth.js v5 управляет всем потоком аутентификации — платформа не использует Firebase Auth напрямую. Firebase Admin SDK используется только для серверной верификации токенов и поиска документов пользователей в режиме firebase-full.
Поток сессии:
DB_BACKEND_MODE основан на PostgreSQLDB_BACKEND_MODE=firebase-fullКлючевые дизайн-решения:
users.id), никогда Google sub или Apple subPostgreSQLAdapter |
lib/auth/postgres-adapter.ts |
firebase-full | FirestoreAdapter из @auth/firebase-adapter | через getAdminDb() |
supabase-fcm | PostgreSQLAdapter | Тот же PostgreSQL путь |
Firebase Admin SDK используется в двух контекстах:
firebase-full режим): FirestoreAdapter читает/записывает документы пользователейfirebase-full режим): getAdminDb().collection("users") для поиска nonceВ режимах k8s-postgres-fcm и supabase-fcm, getAdminDb() возвращает mock Firestore — никакой реальной инициализации Firebase не происходит. FCM push уведомления все еще используют Firebase Admin через firebase-admin.server.ts (отдельно от auth пути).
auth.config.ts — Edge-совместимая конфигурация (пустые провайдеры, authorized callback, redirects)
auth.ts — Полная серверная конфигурация (все провайдеры, адаптер БД, JWT/сессионные callbacks)
lib/auth-adapter-singleton.ts — Кешированный адаптер: PostgreSQLAdapter или FirestoreAdapter
lib/auth/postgres-adapter.ts — Специализированный PostgreSQL адаптер для Auth.js v5
lib/firebase-admin.server.ts — Firebase Admin SDK экземпляр (getAdminAuth, getAdminDb)
app/api/auth/[...nextauth]/route.ts — Auth.js API route handler
# Auth.js core
AUTH_SECRET=your_auth_secret
AUTH_TRUST_HOST=true
# Google OAuth
AUTH_GOOGLE_ID=your_google_client_id
AUTH_GOOGLE_SECRET=your_google_client_secret
# Apple Sign-In
AUTH_APPLE_ID=your_apple_client_id
AUTH_APPLE_SECRET=your_apple_private_key
# Magic Links
# Ring Mailer: EMAIL_MODE=ethereal or SMTP_HOST / SMTP_USER / SMTP_PASSWORD
# OTP_HMAC_SECRET=
# Firebase (только для firebase-full режима)
AUTH_FIREBASE_PROJECT_ID=your_firebase_project_id
AUTH_FIREBASE_CLIENT_EMAIL=your_firebase_client_email
AUTH_FIREBASE_PRIVATE_KEY=your_firebase_private_key
# WalletConnect
NEXT_PUBLIC_WALLETCONNECT_PROJECT_ID=your_project_idPostgreSQLAdapter |
lib/auth/postgres-adapter.ts |
firebase-full | FirestoreAdapter из @auth/firebase-adapter | через getAdminDb() |
supabase-fcm | PostgreSQLAdapter | Тот же PostgreSQL путь |
Firebase Admin SDK используется в двух контекстах:
firebase-full режим): FirestoreAdapter читает/записывает документы пользователейfirebase-full режим): getAdminDb().collection("users") для поиска nonceВ режимах k8s-postgres-fcm и supabase-fcm, getAdminDb() возвращает mock Firestore — никакой реальной инициализации Firebase не происходит. FCM push уведомления все еще используют Firebase Admin через firebase-admin.server.ts (отдельно от auth пути).
auth.config.ts — Edge-совместимая конфигурация (пустые провайдеры, authorized callback, redirects)
auth.ts — Полная серверная конфигурация (все провайдеры, адаптер БД, JWT/сессионные callbacks)
lib/auth-adapter-singleton.ts — Кешированный адаптер: PostgreSQLAdapter или FirestoreAdapter
lib/auth/postgres-adapter.ts — Специализированный PostgreSQL адаптер для Auth.js v5
lib/firebase-admin.server.ts — Firebase Admin SDK экземпляр (getAdminAuth, getAdminDb)
app/api/auth/[...nextauth]/route.ts — Auth.js API route handler
# Auth.js core
AUTH_SECRET=your_auth_secret
AUTH_TRUST_HOST=true
# Google OAuth
AUTH_GOOGLE_ID=your_google_client_id
AUTH_GOOGLE_SECRET=your_google_client_secret
# Apple Sign-In
AUTH_APPLE_ID=your_apple_client_id
AUTH_APPLE_SECRET=your_apple_private_key
# Magic Links
# Ring Mailer: EMAIL_MODE=ethereal or SMTP_HOST / SMTP_USER / SMTP_PASSWORD
# OTP_HMAC_SECRET=
# Firebase (только для firebase-full режима)
AUTH_FIREBASE_PROJECT_ID=your_firebase_project_id
AUTH_FIREBASE_CLIENT_EMAIL=your_firebase_client_email
AUTH_FIREBASE_PRIVATE_KEY=your_firebase_private_key
# WalletConnect
NEXT_PUBLIC_WALLETCONNECT_PROJECT_ID=your_project_idPostgreSQLAdapter |
lib/auth/postgres-adapter.ts |
firebase-full | FirestoreAdapter из @auth/firebase-adapter | через getAdminDb() |
supabase-fcm | PostgreSQLAdapter | Тот же PostgreSQL путь |
Firebase Admin SDK используется в двух контекстах:
firebase-full режим): FirestoreAdapter читает/записывает документы пользователейfirebase-full режим): getAdminDb().collection("users") для поиска nonceВ режимах k8s-postgres-fcm и supabase-fcm, getAdminDb() возвращает mock Firestore — никакой реальной инициализации Firebase не происходит. FCM push уведомления все еще используют Firebase Admin через firebase-admin.server.ts (отдельно от auth пути).
auth.config.ts — Edge-совместимая конфигурация (пустые провайдеры, authorized callback, redirects)
auth.ts — Полная серверная конфигурация (все провайдеры, адаптер БД, JWT/сессионные callbacks)
lib/auth-adapter-singleton.ts — Кешированный адаптер: PostgreSQLAdapter или FirestoreAdapter
lib/auth/postgres-adapter.ts — Специализированный PostgreSQL адаптер для Auth.js v5
lib/firebase-admin.server.ts — Firebase Admin SDK экземпляр (getAdminAuth, getAdminDb)
app/api/auth/[...nextauth]/route.ts — Auth.js API route handler
# Auth.js core
AUTH_SECRET=your_auth_secret
AUTH_TRUST_HOST=true
# Google OAuth
AUTH_GOOGLE_ID=your_google_client_id
AUTH_GOOGLE_SECRET=your_google_client_secret
# Apple Sign-In
AUTH_APPLE_ID=your_apple_client_id
AUTH_APPLE_SECRET=your_apple_private_key
# Magic Links
# Ring Mailer: EMAIL_MODE=ethereal or SMTP_HOST / SMTP_USER / SMTP_PASSWORD
# OTP_HMAC_SECRET=
# Firebase (только для firebase-full режима)
AUTH_FIREBASE_PROJECT_ID=your_firebase_project_id
AUTH_FIREBASE_CLIENT_EMAIL=your_firebase_client_email
AUTH_FIREBASE_PRIVATE_KEY=your_firebase_private_key
# WalletConnect
NEXT_PUBLIC_WALLETCONNECT_PROJECT_ID=your_project_id