Документация

Аутентификация

Встроенная система аутентификации на базе better-auth с поддержкой email/password, OAuth, email verification и captcha

GolOps использует better-auth как фреймворк аутентификации, а данные сессий хранятся в PostgreSQL. Аутентификация необязательна: если не настроены DATABASE_URL и BETTER_AUTH_SECRET, приложение будет работать в статическом режиме без пользовательского входа.

Предварительные условия

Перед настройкой аутентификации убедитесь, что уже готовы:

  1. База данных PostgreSQL — см. настройку базы данных
  2. Почтовый сервис — нужен для email verification (рекомендуется Resend, см. переменные окружения)

Быстрый старт

Задайте секрет аутентификации

Добавьте в .env:

BETTER_AUTH_SECRET=your-secret-key

Секрет можно сгенерировать на сайте better-auth или с помощью кнопки ниже:

Настройте базу данных

Убедитесь, что в .env задан DATABASE_URL:

DATABASE_URL="postgresql://user:password@host:port/database"

Настройте почту

Email verification по умолчанию выключен. Чтобы пользователи могли подтверждать аккаунт, настройте почтовый сервис:

EMAIL_VERIFICATION_ENABLED=false
EMAIL_PROVIDER=resend
EMAIL_FROM="YourApp <noreply@yourdomain.com>"
RESEND_API_KEY=re_xxx

Или настройте собственный SMTP:

EMAIL_PROVIDER=custom
EMAIL_FROM="YourApp <noreply@yourdomain.com>"
EMAIL_HOST=smtp.example.com
EMAIL_ADDRESS=noreply@example.com
EMAIL_USER=your-username
EMAIL_PASSWORD=your-password

Запустите миграции

Сгенерируйте и примените схему базы данных:

pnpm db:generate
pnpm db:migrate

Проверьте

Запустите dev-сервер и откройте страницу входа. Вы должны увидеть форму регистрации по email/password.

Email/password authentication

Вход по email/password включен по умолчанию:

  1. Пользователь регистрируется с email и паролем
  2. Система автоматически отправляет письмо подтверждения
  3. Пользователь переходит по ссылке подтверждения
  4. Аккаунт подтверждается и выполняется автоматический вход

Подсказка

Подтверждение email обязательно - до его завершения пользователь не сможет войти.

OAuth social login

GolOps поддерживает GitHub и Google как OAuth-провайдеров. После задания соответствующих переменных окружения они включаются автоматически.

GitHub

Создайте OAuth-приложение

Перейдите в GitHub Developer SettingsOAuth AppsNew OAuth App.

Callback URL:

https://your-domain.com/api/auth/callback/github

Для локальной разработки:

http://localhost:3377/api/auth/callback/github

Задайте переменные окружения

Скопируйте Client ID и Client Secret в .env:

GITHUB_CLIENT_ID=your-client-id
GITHUB_CLIENT_SECRET=your-client-secret

Google

Создайте OAuth credentials

Перейдите в Google Cloud ConsoleCreate CredentialsOAuth client ID.

Выберите тип приложения Web application и добавьте authorized redirect URI:

https://your-domain.com/api/auth/callback/google

Для локальной разработки:

http://localhost:3377/api/auth/callback/google

Задайте переменные окружения

Скопируйте Client ID и Client Secret в .env:

GOOGLE_CLIENT_ID=your-client-id
GOOGLE_CLIENT_SECRET=your-client-secret

Подсказка

OAuth login необязателен. Страница входа автоматически покажет или скроет кнопки соцлогина в зависимости от заданных переменных окружения.

Защита captcha

GolOps поддерживает Cloudflare Turnstile для защиты входа, регистрации и OAuth-процессов от ботов.

Создайте widget Turnstile Перейдите в [Cloudflare

Dashboard](https://dash.cloudflare.com/) → TurnstileAdd widget. Добавьте домен и получите Site Key и Secret Key.

Доступ администратора

Администраторы могут открывать админ-панель для управления пользователями, платежами, кредитами и конфигурацией.

Добавьте email пользователя в переменную ADMIN_EMAILS, чтобы выдать права администратора:

ADMIN_EMAILS=admin@example.com,another-admin@example.com

Несколько email разделяются запятой.

Справка по конфигурации

Переменная окруженияОбязательнаОписание
BETTER_AUTH_SECRETДаСекретный ключ для шифрования аутентификации
DATABASE_URLДаАдрес подключения к PostgreSQL
ADMIN_EMAILSНетEmail администраторов, через запятую
GITHUB_CLIENT_IDНетGitHub OAuth Client ID
GITHUB_CLIENT_SECRETНетGitHub OAuth Client Secret
GOOGLE_CLIENT_IDНетGoogle OAuth Client ID
GOOGLE_CLIENT_SECRETНетGoogle OAuth Client Secret
VITE_TURNSTILE_CAPTCHA_ENABLEDНетВключить Turnstile captcha (true/false)
VITE_TURNSTILE_SITE_KEYНетTurnstile Site Key
TURNSTILE_SECRET_KEYНетTurnstile Secret Key

Таблицы базы данных

Система аутентификации автоматически создаст следующие таблицы:

ТаблицаОписание
userИнформация о пользователях (имя, email, аватар и т. д.)
sessionАктивные сессии с токеном и временем истечения
accountСвязанные способы аутентификации (email/password, GitHub, Google)
verificationТокены подтверждения email

Содержание