cebce0ae3b
Фаза 7, AGENT.md 7.1: провайдеры включаются переменными окружения OAUTH_<PROVIDER>_CLIENT_ID/SECRET, привязка внешнего аккаунта идёт по подтверждённому провайдером email через blind index, вход забаненному на инстансе запрещён, все входы и привязки попадают в события безопасности, привязка — ещё и в аудит инстанса. Внешний идентификатор (subject) хранится только индексом HMAC-SHA-256, токены провайдеров не сохраняются вовсе; state подписывается ключом сессий и ограничен по времени, редирект после входа — только внутренний путь. Если провайдер не настроен, ручка отвечает oauth.provider_not_configured, а клиент показывает человеческий текст вместо кнопки. Клиент: кнопки входа по списку включённых провайдеров на экране входа и раздел «Вход через внешние сервисы» в настройках безопасности; адрес возврата для настроек приложения виден в GET /auth/oauth/providers. Миграция 00019 добавляет таблицу oauth_accounts. Установщик и .env.example знают про OAUTH_* и сохраняют значения при --reconfigure. Тесты: Go — выключенный провайдер, подписанный state (подмена и чужой провайдер), создание и повторный вход, привязка к существующему аккаунту, неподтверждённый email, выключенная регистрация, бан инстанса, mocked провайдер (httptest) для обмена кода; web — кнопки провайдеров и ошибка возврата; серверная ручка отдаёт понятный отказ без настроек.
58 lines
4.4 KiB
Plaintext
58 lines
4.4 KiB
Plaintext
# NOTICE — атрибуция и сторонние компоненты
|
|
|
|
glchat — self-hosted платформа общения.
|
|
Copyright (C) 2026 glchat contributors.
|
|
Лицензия проекта: **AGPL-3.0-or-later** (полный текст — `LICENSE`).
|
|
|
|
## Архитектурные референсы
|
|
|
|
Проект использует **архитектурные идеи** следующих проектов. Их исходный код
|
|
в glchat не переносился; любые прямые заимствования фрагментов (включая схемы
|
|
и тексты) обязаны фиксироваться в этом файле с указанием источника и лицензии.
|
|
|
|
| Проект | Лицензия | Что используется |
|
|
|---|---|---|
|
|
| [Spacebar server](https://github.com/spacebarchat/server) | AGPL-3.0 | Архитектурный референс: структура API/Gateway/CDN/voice, сущности, модель прав |
|
|
| [Fermo](https://git.sovrahi.com/oh64/Fermo) | AGPL-3.0 | **Только UX/UI-референс.** Код не используется и не форкается (по просьбе автора) |
|
|
|
|
## Сторонние компоненты
|
|
|
|
| Компонент | Лицензия | Использование |
|
|
|---|---|---|
|
|
| [LiveKit](https://github.com/livekit/livekit) (`livekit/livekit-server`) | Apache-2.0 | SFU для голоса, видео и шаринга экрана (Docker-образ) |
|
|
| [LiveKit server SDK for Go](https://github.com/livekit/server-sdk-go) | Apache-2.0 | Выдача токенов, RoomService API (фаза 3) |
|
|
| [LiveKit Components](https://github.com/livekit/components-js) | Apache-2.0 | UI голосовых комнат в веб-клиенте (фаза 3) |
|
|
| [Caddy](https://github.com/caddyserver/caddy) | Apache-2.0 | TLS/Let's Encrypt, reverse proxy (Docker-образ) |
|
|
| [chi](https://github.com/go-chi/chi) | MIT | HTTP-роутер (фаза 1) |
|
|
| [huma](https://github.com/danielgtaylor/huma) | MIT | Типизированные хендлеры и OpenAPI 3.1 (фаза 1) |
|
|
| [goose](https://github.com/pressly/goose) | MIT | Миграции SQLite (embedded) |
|
|
| [sqlc](https://sqlc.dev) | MIT | Генерация кода доступа к БД |
|
|
| [mattn/go-sqlite3](https://github.com/mattn/go-sqlite3) | MIT | Драйвер SQLite (CGO) |
|
|
| [coder/websocket](https://github.com/coder/websocket) | MIT | WebSocket Gateway (фаза 1) |
|
|
| [React](https://react.dev) | MIT | Веб-клиент |
|
|
| [Vite](https://vite.dev) | MIT | Сборка веб-клиента |
|
|
| [Tailwind CSS](https://tailwindcss.com) | MIT | Стили веб-клиента |
|
|
| [Radix UI](https://www.radix-ui.com) | MIT | Доступные UI-примитивы |
|
|
| [TanStack Query](https://tanstack.com/query) | MIT | Серверное состояние клиента |
|
|
| [i18next](https://www.i18next.com) | MIT | Локализация ru/en |
|
|
| [age](https://age-encryption.org) (filippo.io/age) | BSD-3-Clause | Шифрование бэкапов |
|
|
| [go-webauthn/webauthn](https://github.com/go-webauthn/webauthn) | BSD-3-Clause | Passkeys (WebAuthn): регистрация и вход по ключу (Фаза 7) |
|
|
| [golang.org/x/oauth2](https://pkg.go.dev/golang.org/x/oauth2) | BSD-3-Clause | OAuth2-провайдеры входа: GitHub, Google, Discord (Фаза 7) |
|
|
| [fxamacker/cbor](https://github.com/fxamacker/cbor) | MIT | CBOR для WebAuthn (транзитивная зависимость go-webauthn) |
|
|
|
|
Полный список Go-зависимостей с версиями — `go.mod`/`go.sum`; JS-зависимостей —
|
|
`web/package.json`/`web/package-lock.json`. Совместимость лицензий с AGPL-3.0
|
|
проверяется при добавлении каждой зависимости (AGENT.md §15).
|
|
|
|
## Данные
|
|
|
|
| Файл | Источник | Лицензия |
|
|
|---|---|---|
|
|
| `internal/auth/data/leaked-passwords.txt` | [SecLists](https://github.com/danielmiessler/SecLists) `Passwords/Common-Credentials/10k-most-common.txt` | MIT |
|
|
|
|
## Ассеты
|
|
|
|
Встроенные звуки, иконки и изображения — только CC0, собственные или
|
|
сгенерированные, с фиксацией происхождения в этом файле. Сторонние ассеты
|
|
без явной лицензии не используются.
|