# Настройка системы авторизации ## Что добавлено 1. **Система авторизации** - вход и регистрация пользователей 2. **Роли пользователей** - администраторы и обычные пользователи 3. **Управление доступом** - админы могут выдавать доступ к серверам 4. **JWT токены** - безопасная авторизация ## Первый запуск ### 1. Установите новые зависимости ```bash cd backend pip install -r requirements.txt ``` Новые библиотеки: - `passlib[bcrypt]` - хеширование паролей - `python-jose[cryptography]` - JWT токены ### 2. Переименуйте файл бэкенда **ВАЖНО:** Удалите старый `backend/main.py` и переименуйте `backend/main_new.py` в `backend/main.py` ```bash cd backend del main.py ren main_new.py main.py ``` Или вручную в проводнике Windows. ### 3. Запустите бэкенд ```bash cd backend python main.py ``` При первом запуске создастся пользователь по умолчанию: - **Логин:** admin - **Пароль:** admin ### 4. Запустите фронтенд ```bash cd frontend npm run dev ``` ## Использование ### Первый вход 1. Откройте http://localhost:3000 2. Войдите как `admin` / `admin` 3. **ВАЖНО:** Смените пароль администратора! ### Создание пользователей 1. Нажмите кнопку **"Пользователи"** в шапке 2. Новые пользователи могут зарегистрироваться самостоятельно 3. По умолчанию новые пользователи получают роль "Пользователь" ### Управление доступом к серверам 1. Перейдите в **"Пользователи"** 2. Найдите нужного пользователя 3. Нажмите на названия серверов чтобы выдать/забрать доступ 4. Зеленые кнопки = доступ есть 5. Серые кнопки = доступа нет ### Роли пользователей **Администратор:** - Видит все серверы - Может создавать/удалять серверы - Может управлять пользователями - Может изменять настройки серверов **Пользователь:** - Видит только серверы с доступом - Может запускать/останавливать свои серверы - Может управлять файлами своих серверов - Не может создавать серверы - Не может изменять настройки ### Изменение роли 1. Перейдите в **"Пользователи"** 2. Нажмите **"Сделать админом"** или **"Сделать пользователем"** 3. Подтвердите действие ### Удаление пользователя 1. Перейдите в **"Пользователи"** 2. Нажмите кнопку с иконкой корзины 3. Подтвердите удаление **Примечание:** Нельзя удалить самого себя или изменить свою роль. ## Безопасность ### Смена секретного ключа Откройте `backend/main_new.py` (или `main.py` после переименования) и измените: ```python SECRET_KEY = "your-secret-key-change-this-in-production-12345" ``` На случайную строку, например: ```python SECRET_KEY = "super-secret-key-" + str(uuid.uuid4()) ``` ### Время жизни токена По умолчанию токен действует 7 дней. Чтобы изменить: ```python ACCESS_TOKEN_EXPIRE_MINUTES = 60 * 24 * 7 # 7 дней ``` ### Хранение паролей Пароли хешируются с помощью bcrypt и хранятся в файле `backend/users.json`. **Не удаляйте этот файл!** Иначе потеряете всех пользователей. ## Файлы - `backend/users.json` - база пользователей - `backend/main_new.py` - новый бэкенд с авторизацией - `frontend/src/components/Auth.jsx` - форма входа/регистрации - `frontend/src/components/Users.jsx` - управление пользователями ## API эндпоинты ### Авторизация - `POST /api/auth/register` - регистрация - `POST /api/auth/login` - вход - `GET /api/auth/me` - информация о текущем пользователе ### Пользователи (только админы) - `GET /api/users` - список пользователей - `PUT /api/users/{username}/servers` - изменить доступ к серверам - `PUT /api/users/{username}/role` - изменить роль - `DELETE /api/users/{username}` - удалить пользователя ### Серверы (с проверкой доступа) Все существующие эндпоинты теперь требуют токен в заголовке: ``` Authorization: Bearer ``` ## Troubleshooting ### Ошибка "Требуется авторизация" Токен истек или недействителен. Выйдите и войдите заново. ### Не могу войти как admin Удалите файл `backend/users.json` и перезапустите бэкенд. Создастся новый админ с паролем `admin`. ### Забыл пароль Удалите файл `backend/users.json` - все пользователи будут удалены и создастся новый админ. Или отредактируйте `users.json` вручную, удалив нужного пользователя. ### Пользователь не видит серверы Проверьте что админ выдал ему доступ в разделе "Пользователи". ## Миграция со старой версии Если у вас уже есть серверы: 1. Сделайте backup папки `backend/servers/` 2. Установите новые зависимости 3. Замените `main.py` на новый 4. Запустите бэкенд 5. Войдите как admin/admin 6. Все серверы будут доступны админу автоматически 7. Создайте пользователей и выдайте им доступ --- **Готово!** Теперь у вас есть полноценная система авторизации и управления доступом! 🔐