Initial commit

This commit is contained in:
2026-01-14 20:23:10 +06:00
commit 954dd473d1
57 changed files with 8854 additions and 0 deletions

196
AUTH_SETUP.md Normal file
View File

@@ -0,0 +1,196 @@
# Настройка системы авторизации
## Что добавлено
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 <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. Создайте пользователей и выдайте им доступ
---
**Готово!** Теперь у вас есть полноценная система авторизации и управления доступом! 🔐