import { useState, useEffect } from 'react'; import { Users as UsersIcon, Trash2, Shield, User } from 'lucide-react'; import axios from 'axios'; import { API_URL } from '../config'; export default function Users({ token, onViewProfile }) { const [users, setUsers] = useState([]); const [servers, setServers] = useState([]); const [loading, setLoading] = useState(true); useEffect(() => { loadData(); }, []); const loadData = async () => { try { const [usersRes, serversRes] = await Promise.all([ axios.get(`${API_URL}/api/users`, { headers: { Authorization: `Bearer ${token}` } }), axios.get(`${API_URL}/api/servers`, { headers: { Authorization: `Bearer ${token}` } }) ]); setUsers(usersRes.data); setServers(serversRes.data); } catch (error) { console.error('Ошибка загрузки данных:', error); } finally { setLoading(false); } }; const toggleServerAccess = async (username, serverName) => { const user = users.find(u => u.username === username); const currentServers = user.servers || []; const newServers = currentServers.includes(serverName) ? currentServers.filter(s => s !== serverName) : [...currentServers, serverName]; try { await axios.put( `${API_URL}/api/users/${username}/servers`, { servers: newServers }, { headers: { Authorization: `Bearer ${token}` } } ); loadData(); } catch (error) { alert(error.response?.data?.detail || 'Ошибка обновления доступа'); } }; const changeRole = async (username, newRole) => { try { await axios.put( `${API_URL}/api/users/${username}/role`, { role: newRole }, { headers: { Authorization: `Bearer ${token}` } } ); loadData(); } catch (error) { alert(error.response?.data?.detail || 'Ошибка изменения роли'); } }; const deleteUser = async (username) => { if (!confirm(`Удалить пользователя ${username}?`)) { return; } try { await axios.delete(`${API_URL}/api/users/${username}`, { headers: { Authorization: `Bearer ${token}` } }); loadData(); } catch (error) { alert(error.response?.data?.detail || 'Ошибка удаления пользователя'); } }; if (loading) { return (
{user.role === 'admin' ? 'Администратор' : user.role === 'support' ? 'Тех. поддержка' : user.role === 'banned' ? 'Забанен' : 'Пользователь'}
Нет доступных серверов
)}Администратор имеет доступ ко всем серверам
)} {user.role === 'support' && (Тех. поддержка имеет доступ к системе тикетов
)} {user.role === 'banned' && (⛔ Пользователь заблокирован и не имеет доступа к панели
)}