Концепції, цінність і типові сценарії
Концепції, цінність і типові сценарії
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 subPostgreSQLAdapterlib/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_idPostgreSQLAdapterlib/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_idPostgreSQLAdapterlib/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