refactor: убрать вход через внешние провайдеры (OAuth) полностью
Решение владельца 27.09.2026 (D-084): сервис ставится на сервер конкретного человека, и ему всё равно нужен свой OAuth у провайдера — поддержка общего входа только создаёт трение (регистрация приложений, redirect URI, модерация, чужие ключи в конфиге). Способы входа остаются: пароль + 2FA и ключи доступа (WebAuthn). Удалено: - сервер: internal/auth/oauth.go, internal/server/oauth.go, internal/store/oauth.go и их тесты; поля и методы конфига OAuth*; oauthLimiter и регистрация ручек; отображение ошибок oauth.*; features.oauth_enabled/oauth_providers в /meta; - клиент: web/src/api/oauth.ts, раздел «Вход через внешние сервисы», кнопки провайдеров на странице входа, ключи i18n (ru/en), тесты и фикстуры; - установщик: переменные OAUTH_* из .env, .env.example и шаблона (хелпер чтения существующих значений переименован в existing_value — он остался нужен для VAPID_SUBJECT); - зависимость golang.org/x/oauth2 (go mod tidy). Схема: миграция 00027 удаляет таблицу oauth_accounts (00019 не переписываем — она применена на стендах). Откат миграции возвращает структуру; тест TestOAuthRemovalMigration проверяет накат, откат и повторный накат. AGENT.md (локальный) помечает пункты про OAuth как отменённые.
This commit is contained in:
@@ -71,10 +71,9 @@ type Server struct {
|
||||
uploadDailyLimiter *httpx.RateLimiter
|
||||
// reactionLimiter — 20 реакций в минуту на пользователя.
|
||||
reactionLimiter *httpx.RateLimiter
|
||||
// passkeyLimiter и oauthLimiter ограничивают новые ручки входа (Фаза 7):
|
||||
// passkeyLimiter ограничивает ручки входа по ключу доступа (Фаза 7):
|
||||
// 10 запросов в минуту на IP — с запасом на пару begin/finish.
|
||||
passkeyLimiter *httpx.RateLimiter
|
||||
oauthLimiter *httpx.RateLimiter
|
||||
// pushLimiter ограничивает подписки на Web Push, pushNotifyLimiter — сами
|
||||
// уведомления на получателя (Фаза 7, AGENT.md 7.16, 8.6).
|
||||
pushLimiter *httpx.RateLimiter
|
||||
@@ -147,7 +146,6 @@ func New(cfg config.Config, db *database.DB, logger *slog.Logger, deps Deps) *Se
|
||||
uploadDailyLimiter: httpx.NewRateLimiterWindow(100, 24*time.Hour, 100),
|
||||
reactionLimiter: httpx.NewRateLimiter(20, 20),
|
||||
passkeyLimiter: httpx.NewRateLimiterWindow(10, time.Minute, 10),
|
||||
oauthLimiter: httpx.NewRateLimiterWindow(10, time.Minute, 10),
|
||||
pushLimiter: httpx.NewRateLimiterWindow(10, time.Minute, 10),
|
||||
// Новые превью ссылок: 20 в минуту на пользователя (кэшированные
|
||||
// ответы лимит не тратят).
|
||||
@@ -203,7 +201,6 @@ func New(cfg config.Config, db *database.DB, logger *slog.Logger, deps Deps) *Se
|
||||
s.registerAuthRoutes(apiRouter)
|
||||
if deps.Auth != nil {
|
||||
s.registerPasskeyRoutes(apiRouter)
|
||||
s.registerOAuthRoutes(apiRouter)
|
||||
}
|
||||
if deps.Store != nil {
|
||||
s.registerUserRoutes(s.api)
|
||||
|
||||
Reference in New Issue
Block a user