197 lines
7.0 KiB
Markdown
197 lines
7.0 KiB
Markdown
# Настройка системы авторизации
|
||
|
||
## Что добавлено
|
||
|
||
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. Создайте пользователей и выдайте им доступ
|
||
|
||
---
|
||
|
||
**Готово!** Теперь у вас есть полноценная система авторизации и управления доступом! 🔐
|