import React, { useState, useEffect } from 'react' import api from '../services/api' import toast from 'react-hot-toast' import { t } from '../utils/tempTranslations' // Temporary translation system import { UsersIcon, MagnifyingGlassIcon } from '@heroicons/react/24/outline' const Users = () => { const [users, setUsers] = useState([]) const [loading, setLoading] = useState(true) const [searchTerm, setSearchTerm] = useState('') useEffect(() => { loadUsers() }, []) const loadUsers = async () => { try { setLoading(true) const response = await api.get('/management/users') setUsers(response.data.data || []) } catch (error) { toast.error(t('users.loadError')) console.error('Error loading users:', error) } finally { setLoading(false) } } const getRoleBadge = (role) => { const colors = { admin: 'bg-red-100 text-red-800', operator: 'bg-blue-100 text-blue-800', viewer: 'bg-gray-100 text-gray-800' } return ( {role.charAt(0).toUpperCase() + role.slice(1)} ) } const filteredUsers = users.filter(user => user.username?.toLowerCase().includes(searchTerm.toLowerCase()) || user.email?.toLowerCase().includes(searchTerm.toLowerCase()) ) if (loading) { return (
{t('users.description')}
| {t('users.user')} | {t('users.role')} | {t('users.status')} | {t('users.lastLogin')} | {t('users.created')} |
|---|---|---|---|---|
|
{user.username?.charAt(0).toUpperCase()}
{user.username}
{user.email}
|
{getRoleBadge(user.role)} | {user.is_active ? 'Active' : 'Inactive'} | {user.last_login ? new Date(user.last_login).toLocaleDateString() : 'Never'} | {new Date(user.created_at).toLocaleDateString()} |
{searchTerm ? t('users.noUsersSearch') : t('users.noUsersDescription')}