"use client"; import { useEffect, useState } from "react"; interface AdminUser { id: string; username: string; role: string; createdAt: string; } export default function AdminUsersPage() { const [users, setUsers] = useState([]); const [loading, setLoading] = useState(true); const [showCreate, setShowCreate] = useState(false); const [newUsername, setNewUsername] = useState(""); const [newPassword, setNewPassword] = useState(""); const [error, setError] = useState(""); const fetchUsers = async () => { setLoading(true); try { const res = await fetch("/api/admin/users"); if (res.ok) { setUsers(await res.json()); } } catch { // ignore } finally { setLoading(false); } }; useEffect(() => { fetchUsers(); }, []); const handleCreate = async (e: React.FormEvent) => { e.preventDefault(); setError(""); try { const res = await fetch("/api/admin/users", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ username: newUsername, password: newPassword }), }); if (!res.ok) { const data = await res.json(); throw new Error(data.error || "Грешка при креирање"); } setShowCreate(false); setNewUsername(""); setNewPassword(""); fetchUsers(); } catch (err) { setError(err instanceof Error ? err.message : "Грешка при креирање"); } }; const handleDelete = async (id: string) => { if (!confirm("Дали сте сигурни дека сакате да го избришете овој администратор?")) return; try { const res = await fetch(`/api/admin/users/${id}`, { method: "DELETE" }); if (res.ok) { fetchUsers(); } } catch { // ignore } }; const handleResetPassword = async (id: string) => { const newPw = prompt("Внесете нова лозинка:"); if (!newPw || newPw.length < 6) { alert("Лозинката мора да има најмалку 6 карактери"); return; } try { const res = await fetch(`/api/admin/users/${id}`, { method: "PUT", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ password: newPw }), }); if (res.ok) { alert("Лозинката е променета"); } else { const data = await res.json(); alert(data.error || "Грешка"); } } catch { alert("Грешка"); } }; return (

Администратори

{showCreate && (
setNewUsername(e.target.value)} className="mt-1 block w-full rounded-lg border border-stone-200 px-3 py-2.5 text-stone-900 focus:border-primary focus:outline-none focus:ring-1 focus:ring-primary" required />
setNewPassword(e.target.value)} className="mt-1 block w-full rounded-lg border border-stone-200 px-3 py-2.5 text-stone-900 focus:border-primary focus:outline-none focus:ring-1 focus:ring-primary" required minLength={6} />
{error &&

{error}

}
)}
{loading ? (

Вчитување...

) : users.length === 0 ? (

Нема администратори

) : ( {users.map((user) => ( ))}
Корисничко име Улога Креиран Акции
{user.username} {user.role === "SUPER_ADMIN" ? "SuperAdmin" : "Admin"} {new Date(user.createdAt).toLocaleDateString("mk-MK")} {user.role !== "SUPER_ADMIN" && ( )}
)}
); }