Files
NeveTimePanel/AUTH_SETUP.md
2026-01-14 20:23:10 +06:00

7.0 KiB
Raw Blame History

Настройка системы авторизации

Что добавлено

  1. Система авторизации - вход и регистрация пользователей
  2. Роли пользователей - администраторы и обычные пользователи
  3. Управление доступом - админы могут выдавать доступ к серверам
  4. 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

Использование

Первый вход

  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 после переименования) и измените:

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 вручную, удалив нужного пользователя.

Пользователь не видит серверы

Проверьте что админ выдал ему доступ в разделе "Пользователи".

Миграция со старой версии

Если у вас уже есть серверы:

  1. Сделайте backup папки backend/servers/
  2. Установите новые зависимости
  3. Замените main.py на новый
  4. Запустите бэкенд
  5. Войдите как admin/admin
  6. Все серверы будут доступны админу автоматически
  7. Создайте пользователей и выдайте им доступ

Готово! Теперь у вас есть полноценная система авторизации и управления доступом! 🔐