Files
NeveTimePanel/VIEW_USER_PROFILES.md

188 lines
8.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 👁️ Просмотр профилей пользователей
## Что добавлено
### Возможность просмотра профилей для админов и тех. поддержки
Администраторы и сотрудники технической поддержки теперь могут просматривать личные кабинеты других пользователей, нажав на их логин в списке пользователей.
## 🎯 Как использовать
### Просмотр профиля пользователя
1. Войдите как администратор или тех. поддержка
2. Нажмите кнопку "Пользователи" в header
3. Найдите нужного пользователя в списке
4. **Нажмите на логин пользователя** (он теперь кликабельный и подсвечивается при наведении)
5. Откроется личный кабинет этого пользователя
### Что можно увидеть
- ✅ Имя пользователя
- ✅ Роль пользователя
- ✅ Статистику по серверам (всего, мои, доступные)
- ✅ Список серверов пользователя
- ✅ Статистику по тикетам (всего, по статусам)
### Что нельзя сделать
- ❌ Изменить имя пользователя (вкладка скрыта)
- ❌ Изменить пароль пользователя (вкладка скрыта)
- ❌ Редактировать профиль другого пользователя
## 🎨 Визуальные изменения
### В списке пользователей (Users.jsx)
- **Логин пользователя** теперь кликабельный
- При наведении логин подсвечивается синим цветом
- Курсор меняется на pointer (указатель)
- Подсказка "Просмотреть профиль" при наведении
### В личном кабинете (Profile.jsx)
- **Заголовок**: "Профиль пользователя: [username]" (вместо "Личный кабинет")
- **Подзаголовок**: "Просмотр профиля другого пользователя"
- **Вкладки**: скрыты вкладки "Имя пользователя" и "Пароль"
- **Только вкладка "Обзор"**: показывается статистика пользователя
## 📋 Технические детали
### Backend (main.py)
#### Новый endpoint
```python
@app.get("/api/profile/stats/{username}")
async def get_user_profile_stats(username: str, user: dict = Depends(get_current_user)):
"""Получить статистику профиля другого пользователя"""
# Проверка прав доступа
if user["role"] not in ["admin", "support"]:
raise HTTPException(403, "Недостаточно прав")
# Возвращает статистику указанного пользователя
```
#### Проверка прав
- Только администраторы и тех. поддержка могут просматривать чужие профили
- Обычные пользователи получат ошибку 403
### Frontend
#### App.jsx
```javascript
const [viewingUsername, setViewingUsername] = useState(null);
const handleViewProfile = (username) => {
setViewingUsername(username);
setShowProfile(true);
setShowUsers(false);
};
```
#### Users.jsx
```javascript
<button
onClick={() => onViewProfile && onViewProfile(user.username)}
className="text-lg font-semibold hover:text-blue-400 transition cursor-pointer"
title="Просмотреть профиль"
>
{user.username}
</button>
```
#### Profile.jsx
```javascript
const isViewingOther = viewingUsername && viewingUsername !== user?.username;
const loadStats = async () => {
const endpoint = isViewingOther
? `${API_URL}/api/profile/stats/${viewingUsername}`
: `${API_URL}/api/profile/stats`;
// ...
};
```
## 🔐 Безопасность
### Проверка прав на уровне API
- Endpoint `/api/profile/stats/{username}` проверяет роль пользователя
- Только `admin` и `support` могут получить доступ
- Обычные пользователи получат ошибку 403
### Защита на уровне UI
- Вкладки изменения имени и пароля скрыты при просмотре чужого профиля
- Невозможно редактировать данные другого пользователя
- Только просмотр статистики
## 📊 Доступные роли
### Кто может просматривать чужие профили
1. **Администратор** (admin) - ✅ Может просматривать все профили
2. **Тех. поддержка** (support) - ✅ Может просматривать все профили
3. **Пользователь** (user) - ❌ Не может просматривать чужие профили
4. **Забанен** (banned) - ❌ Не имеет доступа к панели
## ✅ Примеры использования
### Сценарий 1: Проверка активности пользователя
1. Админ хочет проверить, сколько серверов у пользователя
2. Открывает "Пользователи"
3. Нажимает на логин пользователя
4. Видит статистику: 3 сервера, 5 тикетов
### Сценарий 2: Помощь пользователю
1. Тех. поддержка получила тикет от пользователя
2. Хочет посмотреть его серверы для диагностики
3. Открывает "Пользователи"
4. Нажимает на логин пользователя
5. Видит список серверов и их названия
### Сценарий 3: Модерация
1. Админ хочет проверить активность пользователя перед баном
2. Открывает профиль пользователя
3. Видит статистику по тикетам и серверам
4. Принимает решение о блокировке
## 🎯 Возврат к списку пользователей
### Из профиля пользователя
1. Нажмите кнопку "Серверы" в header
2. Вы вернётесь к главной странице
3. Снова откройте "Пользователи" для просмотра других профилей
### Или откройте свой профиль
1. Нажмите кнопку "Личный кабинет" в header
2. Откроется ваш собственный профиль
3. Будут доступны все вкладки (Обзор, Имя пользователя, Пароль)
## ⚠️ Важные замечания
### Ограничения
- Нельзя редактировать чужие профили
- Нельзя изменить имя или пароль другого пользователя
- Только просмотр статистики
### Рекомендации
- Используйте эту функцию для помощи пользователям
- Не злоупотребляйте просмотром чужих профилей
- Соблюдайте конфиденциальность данных пользователей
## ✅ Готово!
Функция просмотра профилей пользователей полностью интегрирована в MC Panel. Администраторы и тех. поддержка могут легко просматривать информацию о пользователях для помощи и модерации.
### Тестирование
1. **Войдите как администратор**
- Логин: none
- Пароль: none
2. **Создайте тестового пользователя**
- Зарегистрируйте нового пользователя
- Создайте несколько серверов от его имени
3. **Просмотрите его профиль**
- Откройте "Пользователи"
- Нажмите на логин тестового пользователя
- Увидите его статистику
4. **Вернитесь к своему профилю**
- Нажмите "Личный кабинет"
- Откроется ваш профиль со всеми вкладками
**Удобного использования! 👁️**