Files
gooseek/CONTINUE.md
home a0e3748dde feat: auth service + security audit fixes + cleanup legacy services
Major changes:
- Add auth-svc: JWT auth, register/login/refresh, password reset
- Add auth UI: modals, pages (/login, /register, /forgot-password)
- Add usage tracking (usage_metrics table, daily limits)
- Add tiered rate limiting (free/pro/business)
- Add LLM usage limits per tier

Security fixes:
- All repos now require userID for Update/Delete operations
- JWT middleware in chat-svc, llm-svc, agent-svc, discover-svc
- ErrNotFound/ErrForbidden errors for proper access control

Cleanup:
- Remove legacy TypeScript services/ directory
- Remove computer-svc (to be reimplemented)
- Remove old deploy/docker configs

New files:
- backend/cmd/auth-svc/main.go
- backend/internal/auth/{types,repository}.go
- backend/internal/usage/{types,repository}.go
- backend/pkg/middleware/{llm_limits,ratelimit_tiered}.go
- backend/webui/src/components/auth/*
- backend/webui/src/app/(auth)/*

Made-with: Cursor
2026-02-28 01:33:49 +03:00

5.9 KiB
Raw Blame History

Недоделки — начать отсюда

Последнее изменение (28.02.2026)

Создан полный UI для авторизации:

  • Модальные окна login/register
  • Страницы /login, /register, /forgot-password, /reset-password
  • UserMenu в сайдбаре
  • AuthContext для управления состоянием

Сделано (полностью)

1. Auth UI (NEW)

Новые файлы:

API клиент:

  • backend/webui/src/lib/auth.ts — функции для работы с auth API, хранение токенов

Контекст:

  • backend/webui/src/lib/contexts/AuthContext.tsx — React контекст для auth состояния

Компоненты:

  • backend/webui/src/components/auth/AuthModal.tsx — модальное окно
  • backend/webui/src/components/auth/LoginForm.tsx — форма входа
  • backend/webui/src/components/auth/RegisterForm.tsx — форма регистрации
  • backend/webui/src/components/auth/ForgotPasswordForm.tsxсброс пароля
  • backend/webui/src/components/auth/UserMenu.tsx — меню пользователя
  • backend/webui/src/components/auth/index.ts — экспорты

Страницы:

  • backend/webui/src/app/(auth)/login/page.tsx
  • backend/webui/src/app/(auth)/register/page.tsx
  • backend/webui/src/app/(auth)/forgot-password/page.tsx
  • backend/webui/src/app/(auth)/reset-password/page.tsx
  • backend/webui/src/app/(auth)/layout.tsx

Интеграция:

  • providers.tsx — добавлен AuthProvider и AuthModal
  • Sidebar.tsx — кнопки входа/регистрации для гостей, профиль для авторизованных

Функционал:

  • Модальные окна для быстрого входа без перехода на страницу
  • Отдельные страницы для полноценного входа
  • Валидация паролей в реальном времени
  • Показ/скрытие пароля
  • Запоминание пользователя
  • Сброс пароля по email
  • Автоматический refresh токенов
  • Отображение tier (Free/Pro/Business)

2. Auth Service (Backend)

Файлы:

  • backend/internal/auth/types.go
  • backend/internal/auth/repository.go
  • backend/cmd/auth-svc/main.go

Эндпоинты:

Method Path Описание
POST /api/v1/auth/register Регистрация
POST /api/v1/auth/login Вход
POST /api/v1/auth/refresh Обновление токена
POST /api/v1/auth/logout Выход
POST /api/v1/auth/logout-all Выход со всех устройств
GET /api/v1/auth/validate Валидация токена
GET /api/v1/auth/me Профиль
PUT /api/v1/auth/me Обновить профиль
POST /api/v1/auth/change-password Смена пароля
POST /api/v1/auth/forgot-password Запрос сброса
POST /api/v1/auth/reset-password Сброс пароля

3. Ранее — Аудит безопасности

  • Репозитории с фильтрацией по user_id
  • JWT middleware во всех сервисах
  • Tiered rate limiting (free/pro/business)
  • Usage tracking
  • LLM limits

Осталось сделать

Высокий приоритет:

  1. Проверить компиляциюcd backend && go build ./...
  2. Протестировать auth flow — регистрация → логин → refresh → logout
  3. Добавить billing-svc — интеграция с ЮKassa

Средний приоритет:

  1. OAuth провайдеры — Google, GitHub, Yandex
  2. Email уведомления — подтверждение email, сброс пароля
  3. Страница настроек профиля — редактирование name, avatar
  4. Страница подписки — /settings/billing с выбором тарифа

Низкий приоритет:

  1. 2FA — TOTP аутентификация
  2. Session management — список активных сессий
  3. Account deletion — удаление аккаунта

Контекст

Новые файлы UI:

backend/webui/src/
├── lib/
│   ├── auth.ts (NEW)
│   └── contexts/
│       └── AuthContext.tsx (NEW)
├── components/
│   └── auth/
│       ├── AuthModal.tsx (NEW)
│       ├── LoginForm.tsx (NEW)
│       ├── RegisterForm.tsx (NEW)
│       ├── ForgotPasswordForm.tsx (NEW)
│       ├── UserMenu.tsx (NEW)
│       └── index.ts (NEW)
└── app/
    └── (auth)/
        ├── layout.tsx (NEW)
        ├── login/page.tsx (NEW)
        ├── register/page.tsx (NEW)
        ├── forgot-password/page.tsx (NEW)
        └── reset-password/page.tsx (NEW)

Обновлённые файлы:

backend/webui/src/app/providers.tsx    — AuthProvider + AuthModal
backend/webui/src/components/Sidebar.tsx — кнопки auth + профиль

Хранение токенов:

localStorage:
- token: JWT access token
- refreshToken: refresh token
- user: JSON с данными пользователя

Auth flow:

  1. Гость видит кнопки "Войти" / "Регистрация" в сайдбаре
  2. Клик открывает модальное окно (или переход на страницу)
  3. После успешного входа — сохранение токенов, обновление UI
  4. При истечении access token — автоматический refresh
  5. При logout — очистка localStorage