"use client"; import { useEffect, useState } from "react"; import { Search, Users, RefreshCw, Trash2 } from "lucide-react"; import { AdminLayout } from "@/components/admin/admin-layout"; import { Button } from "@/components/ui/button"; import { Badge } from "@/components/ui/badge"; import { useLanguage } from "@/components/language-provider"; interface User { user_id: string; email: string; full_name: string; status: string; is_active: boolean; is_staff: boolean; mfa_enabled: boolean; trust_state?: string; trust_score?: number; last_login_at: string | null; created_at: string; } export default function AdminUsersPage() { const { lang, dir } = useLanguage(); const [users, setUsers] = useState([]); const [loading, setLoading] = useState(true); const [search, setSearch] = useState(""); useEffect(() => { const token = localStorage.getItem("access_token"); if (!token) { window.location.href = "/login?redirect=/admin/users"; return; } const fetchData = async () => { const baseURL = process.env.NEXT_PUBLIC_API_URL; const qs = new URLSearchParams(); if (search) qs.set("search", search); try { const res = await fetch(`${baseURL}/users/?${qs.toString()}`, { headers: { Authorization: `Bearer ${token}` }, }); const data = await res.json(); setUsers(data.results || []); } catch (e) { console.error(e); } finally { setLoading(false); } }; const timer = setTimeout(fetchData, search ? 500 : 0); return () => clearTimeout(timer); }, [search]); const t = (fa: string, en: string) => (lang === "fa" ? fa : en); if (loading) { return (
); } return (

{t("کاربران", "Users")}

setSearch(e.target.value)} className="w-full pl-12 pr-4 py-2.5 rounded-lg border border-white/10 bg-white/5 text-white focus:outline-none focus:ring-2 focus:ring-brand-500/50" dir={dir} />
{users.map((u) => ( ))}
{t("کاربر", "User")} {t("وضعیت", "Status")} {t("اعتماد", "Trust")} {t("امنیت", "Security")} {t("آخرین ورود", "Last Login")} {t("اقدامات", "Actions")}
{u.full_name?.charAt(0) || u.email?.charAt(0) || "?"}
{u.full_name || u.email}
{u.email}
{u.status}
{u.trust_score !== undefined && ( {u.trust_score}/100 )} {u.trust_state && ( {lang === "fa" ? (u.trust_state === "basic" ? "پایه" : u.trust_state === "verified" ? "تأیید شده" : "قوی") : (u.trust_state.charAt(0).toUpperCase() + u.trust_state.slice(1)) } )}
MFA: {u.mfa_enabled ? t("فعال", "On") : t("خاموش", "Off")} {u.is_staff && ( Admin )}
{u.last_login_at ? new Date(u.last_login_at).toLocaleString(lang === "fa" ? "fa-IR" : "en-US") : t("هرگز", "Never")}
); }