7.0 KiB
Настройка системы авторизации
Что добавлено
- Система авторизации - вход и регистрация пользователей
- Роли пользователей - администраторы и обычные пользователи
- Управление доступом - админы могут выдавать доступ к серверам
- JWT токены - безопасная авторизация
Первый запуск
1. Установите новые зависимости
cd backend
pip install -r requirements.txt
Новые библиотеки:
passlib[bcrypt]- хеширование паролейpython-jose[cryptography]- JWT токены
2. Переименуйте файл бэкенда
ВАЖНО: Удалите старый backend/main.py и переименуйте backend/main_new.py в backend/main.py
cd backend
del main.py
ren main_new.py main.py
Или вручную в проводнике Windows.
3. Запустите бэкенд
cd backend
python main.py
При первом запуске создастся пользователь по умолчанию:
- Логин: admin
- Пароль: admin
4. Запустите фронтенд
cd frontend
npm run dev
Использование
Первый вход
- Откройте http://localhost:3000
- Войдите как
admin/admin - ВАЖНО: Смените пароль администратора!
Создание пользователей
- Нажмите кнопку "Пользователи" в шапке
- Новые пользователи могут зарегистрироваться самостоятельно
- По умолчанию новые пользователи получают роль "Пользователь"
Управление доступом к серверам
- Перейдите в "Пользователи"
- Найдите нужного пользователя
- Нажмите на названия серверов чтобы выдать/забрать доступ
- Зеленые кнопки = доступ есть
- Серые кнопки = доступа нет
Роли пользователей
Администратор:
- Видит все серверы
- Может создавать/удалять серверы
- Может управлять пользователями
- Может изменять настройки серверов
Пользователь:
- Видит только серверы с доступом
- Может запускать/останавливать свои серверы
- Может управлять файлами своих серверов
- Не может создавать серверы
- Не может изменять настройки
Изменение роли
- Перейдите в "Пользователи"
- Нажмите "Сделать админом" или "Сделать пользователем"
- Подтвердите действие
Удаление пользователя
- Перейдите в "Пользователи"
- Нажмите кнопку с иконкой корзины
- Подтвердите удаление
Примечание: Нельзя удалить самого себя или изменить свою роль.
Безопасность
Смена секретного ключа
Откройте backend/main_new.py (или main.py после переименования) и измените:
SECRET_KEY = "your-secret-key-change-this-in-production-12345"
На случайную строку, например:
SECRET_KEY = "super-secret-key-" + str(uuid.uuid4())
Время жизни токена
По умолчанию токен действует 7 дней. Чтобы изменить:
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 <token>
Troubleshooting
Ошибка "Требуется авторизация"
Токен истек или недействителен. Выйдите и войдите заново.
Не могу войти как admin
Удалите файл backend/users.json и перезапустите бэкенд. Создастся новый админ с паролем admin.
Забыл пароль
Удалите файл backend/users.json - все пользователи будут удалены и создастся новый админ.
Или отредактируйте users.json вручную, удалив нужного пользователя.
Пользователь не видит серверы
Проверьте что админ выдал ему доступ в разделе "Пользователи".
Миграция со старой версии
Если у вас уже есть серверы:
- Сделайте backup папки
backend/servers/ - Установите новые зависимости
- Замените
main.pyна новый - Запустите бэкенд
- Войдите как admin/admin
- Все серверы будут доступны админу автоматически
- Создайте пользователей и выдайте им доступ
Готово! Теперь у вас есть полноценная система авторизации и управления доступом! 🔐