Initial commit
This commit is contained in:
196
AUTH_SETUP.md
Normal file
196
AUTH_SETUP.md
Normal 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. Создайте пользователей и выдайте им доступ
|
||||
|
||||
---
|
||||
|
||||
**Готово!** Теперь у вас есть полноценная система авторизации и управления доступом! 🔐
|
||||
Reference in New Issue
Block a user