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
5.9 KiB
5.9 KiB
Недоделки — начать отсюда
Последнее изменение (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.tsxbackend/webui/src/app/(auth)/register/page.tsxbackend/webui/src/app/(auth)/forgot-password/page.tsxbackend/webui/src/app/(auth)/reset-password/page.tsxbackend/webui/src/app/(auth)/layout.tsx
Интеграция:
providers.tsx— добавлен AuthProvider и AuthModalSidebar.tsx— кнопки входа/регистрации для гостей, профиль для авторизованных
Функционал:
- Модальные окна для быстрого входа без перехода на страницу
- Отдельные страницы для полноценного входа
- Валидация паролей в реальном времени
- Показ/скрытие пароля
- Запоминание пользователя
- Сброс пароля по email
- Автоматический refresh токенов
- Отображение tier (Free/Pro/Business)
2. Auth Service (Backend)
Файлы:
backend/internal/auth/types.gobackend/internal/auth/repository.gobackend/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
Осталось сделать
Высокий приоритет:
- Проверить компиляцию —
cd backend && go build ./... - Протестировать auth flow — регистрация → логин → refresh → logout
- Добавить billing-svc — интеграция с ЮKassa
Средний приоритет:
- OAuth провайдеры — Google, GitHub, Yandex
- Email уведомления — подтверждение email, сброс пароля
- Страница настроек профиля — редактирование name, avatar
- Страница подписки — /settings/billing с выбором тарифа
Низкий приоритет:
- 2FA — TOTP аутентификация
- Session management — список активных сессий
- 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:
- Гость видит кнопки "Войти" / "Регистрация" в сайдбаре
- Клик открывает модальное окно (или переход на страницу)
- После успешного входа — сохранение токенов, обновление UI
- При истечении access token — автоматический refresh
- При logout — очистка localStorage