import { useState, useEffect } from "react" import type { NextPage } from "next" import Head from "next/head" import AdminLayout from '../../components/AdminLayout' import { UsersIcon, PlusIcon, ShieldCheckIcon } from '@heroicons/react/24/outline' interface User { id: number email: string role: string is_active: boolean created_at: string last_login: string | null sources_moderated: number } const UsersManagement: NextPage = () => { const [users, setUsers] = useState([]) const [loading, setLoading] = useState(true) const [showAddForm, setShowAddForm] = useState(false) const [newUser, setNewUser] = useState({ email: '', password: '', role: 'moderator' }) useEffect(() => { fetchUsers() }, []) const fetchUsers = async () => { try { const response = await fetch('/api/admin/users') const data = await response.json() setUsers(data.users || []) } catch (error) { console.error('Error fetching users:', error) } setLoading(false) } const handleAddUser = async (e: React.FormEvent) => { e.preventDefault() if (!newUser.email || !newUser.password) return try { const response = await fetch('/api/admin/users', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(newUser) }) if (response.ok) { setNewUser({ email: '', password: '', role: 'moderator' }) setShowAddForm(false) fetchUsers() } else { const error = await response.json() alert('Error: ' + error.error) } } catch (error) { alert('Failed to add user') } } return ( <> Používatelia - Hliadka.sk Admin

Správa administrátorov, moderátorov a ich oprávnení

{showAddForm && (

Pridať nového používateľa

setNewUser({...newUser, email: e.target.value})} required className="input mt-1" placeholder="email@example.com" />
setNewUser({...newUser, password: e.target.value})} required className="input mt-1" placeholder="********" />
)}
{loading ? (
Načítavanie...
) : ( {users.map((user) => ( ))}
Email Rola Status Moderované zdroje Vytvorené Posledné prihlásenie
{user.email}
{user.role === 'admin' && } {user.role === 'admin' ? 'Administrátor' : 'Moderátor'} {user.is_active ? ( Aktívny ) : ( Neaktívny )} {user.sources_moderated} {new Date(user.created_at).toLocaleDateString('sk-SK')} {user.last_login ? new Date(user.last_login).toLocaleDateString('sk-SK') : 'Nikdy'}
)} {users.length === 0 && !loading && (

Žiadni používatelia

Začnite pridaním nového používateľa.

)}
) } export default UsersManagement