Аутентификация
Встроенная система аутентификации на базе better-auth с поддержкой email/password, OAuth, email verification и captcha
GolOps использует better-auth как фреймворк аутентификации, а данные сессий хранятся в PostgreSQL. Аутентификация необязательна: если не настроены DATABASE_URL и BETTER_AUTH_SECRET, приложение будет работать в статическом режиме без пользовательского входа.
Предварительные условия
Перед настройкой аутентификации убедитесь, что уже готовы:
- База данных PostgreSQL — см. настройку базы данных
- Почтовый сервис — нужен для 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Проверьте
Запустите dev-сервер и откройте страницу входа. Вы должны увидеть форму регистрации по email/password.
Email/password authentication
Вход по email/password включен по умолчанию:
- Пользователь регистрируется с email и паролем
- Система автоматически отправляет письмо подтверждения
- Пользователь переходит по ссылке подтверждения
- Аккаунт подтверждается и выполняется автоматический вход
Подсказка
Подтверждение email обязательно - до его завершения пользователь не сможет войти.
OAuth social login
GolOps поддерживает GitHub и Google как OAuth-провайдеров. После задания соответствующих переменных окружения они включаются автоматически.
GitHub
Создайте OAuth-приложение
Перейдите в GitHub Developer Settings → OAuth Apps → New 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Создайте OAuth credentials
Перейдите в Google Cloud Console → Create Credentials → OAuth 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/) → Turnstile → Add widget.
Добавьте домен и получите Site Key и Secret Key.
Задайте переменные окружения ```bash VITE_TURNSTILE_CAPTCHA_ENABLED=true
VITE_TURNSTILE_SITE_KEY=0x4xxx TURNSTILE_SECRET_KEY=0x4xxx ```
Доступ администратора
Администраторы могут открывать админ-панель для управления пользователями, платежами, кредитами и конфигурацией.
Добавьте 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 |