Add Personal account

This commit is contained in:
2026-01-14 21:54:24 +06:00
parent db2eddca4b
commit 011996d78d
7 changed files with 1125 additions and 4 deletions

228
PROFILE_SYSTEM.md Normal file
View File

@@ -0,0 +1,228 @@
# 👤 Система личного кабинета
## Что добавлено
### ✅ Новые возможности
1. **Личный кабинет** - полноценная система управления профилем
2. **Три вкладки**:
- 📊 **Обзор** - статистика и информация о профиле
- 👤 **Имя пользователя** - изменение имени пользователя
- 🔒 **Пароль** - изменение пароля
3. **Кнопка "Личный кабинет"** в header рядом с кнопкой "Тикеты"
### 📊 Вкладка "Обзор"
#### Информация о пользователе
- Имя пользователя
- Роль (Администратор, Тех. поддержка, Пользователь)
- Цветной бейдж роли
#### Статистика
- **Серверы**:
- Всего серверов
- Мои серверы (владелец)
- Доступные серверы
- **Тикеты**:
- Всего тикетов
- На рассмотрении
- В работе
- Закрыто
- **Роль**:
- Название роли
- Описание прав
#### Список серверов
- Отображение всех серверов пользователя
- Название и ID сервера
- Красивые карточки
### 👤 Вкладка "Имя пользователя"
#### Возможности
- Просмотр текущего имени
- Ввод нового имени (минимум 3 символа)
- Подтверждение паролем
- Автоматический перелогин с новым именем
#### Безопасность
- Проверка уникальности имени
- Проверка пароля
- Обновление владельцев серверов
- Обновление доступов к серверам
- Новый JWT токен
### 🔒 Вкладка "Пароль"
#### Возможности
- Ввод текущего пароля
- Ввод нового пароля (минимум 6 символов)
- Подтверждение нового пароля
- Показ/скрытие паролей
#### Безопасность
- Проверка текущего пароля
- Проверка совпадения новых паролей
- Хеширование пароля (bcrypt)
## 🚀 Как использовать
### Открытие личного кабинета
1. Нажмите кнопку "Личный кабинет" в header
2. Откроется страница с тремя вкладками
### Просмотр статистики
1. Откройте вкладку "Обзор"
2. Посмотрите информацию о профиле
3. Посмотрите статистику по серверам и тикетам
4. Посмотрите список своих серверов
### Изменение имени пользователя
1. Откройте вкладку "Имя пользователя"
2. Введите новое имя (минимум 3 символа)
3. Введите текущий пароль для подтверждения
4. Нажмите "Изменить имя пользователя"
5. Вы будете автоматически перелогинены
⚠️ **Важно**: После изменения имени:
- Обновятся все серверы, где вы владелец
- Обновятся все доступы к серверам
- Вы получите новый токен авторизации
### Изменение пароля
1. Откройте вкладку "Пароль"
2. Введите текущий пароль
3. Введите новый пароль (минимум 6 символов)
4. Подтвердите новый пароль
5. Нажмите "Изменить пароль"
⚠️ **Важно**: После изменения пароля используйте новый пароль для входа.
## 📁 Новые файлы
### Backend
- Добавлены endpoints в `backend/main.py`:
- `PUT /api/profile/username` - изменить имя пользователя
- `PUT /api/profile/password` - изменить пароль
- `GET /api/profile/stats` - получить статистику профиля
### Frontend
- `frontend/src/components/Profile.jsx` - компонент личного кабинета
## 🎨 Интерфейс
### Вкладки
- Современный дизайн с вкладками
- Плавные переходы между вкладками
- Адаптивный дизайн
### Карточки статистики
- Цветные иконки
- Числовые показатели
- Детальная информация
### Формы
- Валидация полей
- Показ/скрытие паролей
- Предупреждения о последствиях
- Кнопки с индикацией загрузки
## 🔧 Технические детали
### API Endpoints
#### PUT /api/profile/username
Изменить имя пользователя
**Request:**
```json
{
"new_username": "NewUsername",
"password": "current_password"
}
```
**Response:**
```json
{
"message": "Имя пользователя изменено",
"access_token": "new_jwt_token",
"username": "NewUsername"
}
```
#### PUT /api/profile/password
Изменить пароль
**Request:**
```json
{
"old_password": "old_password",
"new_password": "new_password"
}
```
**Response:**
```json
{
"message": "Пароль изменён"
}
```
#### GET /api/profile/stats
Получить статистику профиля
**Response:**
```json
{
"username": "username",
"role": "user",
"owned_servers": [
{
"name": "server1",
"displayName": "My Server"
}
],
"accessible_servers": [],
"tickets": {
"total": 5,
"pending": 2,
"in_progress": 1,
"closed": 2
},
"total_servers": 1
}
```
### Безопасность
#### Изменение имени пользователя
1. Проверка пароля
2. Проверка уникальности нового имени
3. Обновление владельцев серверов
4. Обновление доступов к серверам
5. Создание нового JWT токена
#### Изменение пароля
1. Проверка текущего пароля
2. Проверка длины нового пароля (минимум 6 символов)
3. Хеширование нового пароля (bcrypt)
## ✅ Готово!
Система личного кабинета полностью интегрирована в MC Panel. Пользователи могут:
- Просматривать статистику своего профиля
- Изменять имя пользователя
- Изменять пароль
- Видеть свои серверы и тикеты
### Доступ к личному кабинету
Кнопка "Личный кабинет" доступна всем пользователям в header рядом с кнопкой "Тикеты".
### Учётные данные по умолчанию
- **Логин**: Sofa12345
- **Пароль**: arkonsad123
- **Роль**: admin