Compare commits

...

2 Commits

Author SHA1 Message Date
estorozhenko 30121869f2 openspec: archive fix-apex-webfinger-and-registration 2026-09-07 05:51:35 +00:00
estorozhenko cd7e279bb6 feat(registration): open signups, 10/day limit; openspec: fix-apex-webfinger-and-registration
- docker-compose.yml: GTS_ACCOUNTS_REGISTRATION_OPEN=true, GTS_ACCOUNTS_REGISTRATION_DAILY_LIMIT=10
- openspec: proposal/specs/design/tasks for dynamic apex webfinger + registration + SMTP verify
- verified: /api/v1/instance → registrations:true; apex webfinger → acct:kpa39l@dedinit.ru; SMTP test OK
2026-09-07 05:48:46 +00:00
2 changed files with 54 additions and 0 deletions
+3
View File
@@ -30,6 +30,9 @@ services:
GTS_INSTANCE_TITLE: "dedinit()"
GTS_INSTANCE_DESCRIPTION: "Нода для обычных людей"
GTS_INSTANCE_CONTACT_EMAIL: "kpa39l@yandex.ru"
# Регистрация открыта: 10 новых аккаунтов в сутки (лимит очереди одобрения — дефолт 20)
GTS_ACCOUNTS_REGISTRATION_OPEN: "true"
GTS_ACCOUNTS_REGISTRATION_DAILY_LIMIT: "10"
# SMTP (Jino) — пароль из .env (GTS_SMTP_PASSWORD)
GTS_SMTP_HOST: "smtp.jino.ru"
GTS_SMTP_PORT: "587"
@@ -0,0 +1,51 @@
# gotosocial/webfinger-and-registration Specification
## Purpose
TBD - created by archiving change fix-apex-webfinger-and-registration. Update Purpose after archive.
## Requirements
### Requirement: Apex WebFinger резолвит любой аккаунт
- **MUST**: `https://dedinit.ru/.well-known/webfinger?resource=acct:USER@dedinit.ru`
возвращает (после 301) JSON от GtS с `subject: acct:USER@dedinit.ru` для
любого существующего локального пользователя, а не статический ответ
с захардкоженным пользователем.
- **MUST**: редирект реализован через `mod_alias RedirectMatch` в `.htaccess`
(Apache на Jino; mod_rewrite/PHP недоступны).
- **SHOULD**: `/.well-known/nodeinfo` на apex также редиректит на GtS.
#### Scenario: Резолв короткого адреса клиентом
- **GIVEN** локальный пользователь `kpa39l` на инстансе social.dedinit.ru
(account-domain dedinit.ru)
- **WHEN** клиент запрашивает `dedinit.ru/.well-known/webfinger?resource=acct:kpa39l@dedinit.ru`
- **THEN** ответ (после 301) содержит `subject: acct:kpa39l@dedinit.ru`
и aliases/links на `social.dedinit.ru/users/kpa39l`
- **THEN** Tusky/Mastodon отображают короткий `@kpa39l@dedinit.ru`
### Requirement: Регистрация открыта с лимитом 10/день
- **MUST**: `GTS_ACCOUNTS_REGISTRATION_OPEN=true` — страница `/signup` доступна,
`/api/v1/instance` → `registrations: true`.
- **MUST**: `GTS_ACCOUNTS_REGISTRATION_DAILY_LIMIT=10` — максимум 10
зарегистрированных/одобренных аккаунтов за 24 часа.
- **SHOULD**: SMTP работает (письма подтверждения/уведомления доставляются).
#### Scenario: Регистрация нового пользователя
- **GIVEN** инстанс с открытой регистрацией
- **WHEN** пользователь открывает `https://social.dedinit.ru/signup` и заполняет форму
- **THEN** заявка создаётся, попадает в очередь одобрения (approval_required)
- **THEN** при превышении 10 заявок за 24ч регистрация временно закрывается
### Requirement: SMTP-доставка писем
- **MUST**: SMTP (smtp.jino.ru:587 STARTTLS, social@dedinit.ru) отправляет
тестовое письмо без ошибок.
#### Scenario: Отправка тестового письма
- **GIVEN** SMTP-конфиг в docker-compose.yml + пароль в .env
- **WHEN** отправляется письмо на kpa39l@yandex.ru
- **THEN** сервер SMTP принимает сообщение (250), письмо доставляется