'use client'; import { useState, useEffect } from 'react'; import { useAuth } from '@/context/AuthContext'; import { useRouter } from 'next/navigation'; import api, { ApiResponse, getErrorMessage } from '@/services/api'; interface AdminUser { id: string; email: string; role: string; status: string; createdAt: string; lastLoginAt: string | null; } export default function AdminUsersPage() { const { user, isSuperAdmin } = useAuth(); const router = useRouter(); const [admins, setAdmins] = useState([]); const [loading, setLoading] = useState(true); const [error, setError] = useState(''); const [showCreate, setShowCreate] = useState(false); const [newEmail, setNewEmail] = useState(''); const [newPassword, setNewPassword] = useState(''); const [creating, setCreating] = useState(false); const [deletingId, setDeletingId] = useState(null); // Redirect non-super-admins useEffect(() => { if (!isSuperAdmin) { router.push('/dashboard'); } }, [isSuperAdmin, router]); const fetchAdmins = async () => { try { setLoading(true); const response = await api.get>('/users/admin/admins'); setAdmins(response.data.data); } catch (err) { setError(getErrorMessage(err)); } finally { setLoading(false); } }; useEffect(() => { if (isSuperAdmin) fetchAdmins(); }, [isSuperAdmin]); const handleCreate = async (e: React.FormEvent) => { e.preventDefault(); if (!newEmail.trim() || !newPassword.trim()) return; setCreating(true); setError(''); try { await api.put('/users/admin/admins', { email: newEmail.trim(), password: newPassword }); setShowCreate(false); setNewEmail(''); setNewPassword(''); fetchAdmins(); } catch (err) { setError(getErrorMessage(err)); } finally { setCreating(false); } }; const handleDelete = async (id: string) => { if (!confirm('Are you sure you want to delete this admin?')) return; setDeletingId(id); try { await api.delete(`/users/admin/admins/${id}`); setAdmins(prev => prev.filter(a => a.id !== id)); } catch (err) { setError(getErrorMessage(err)); } finally { setDeletingId(null); } }; if (!isSuperAdmin) return null; return (

Admin Users

{error && (

{error}

)} {loading ? (
) : (
{admins.map(admin => ( ))}
Email Role Status Created Actions
{admin.email} {admin.role === 'SUPER_ADMIN' ? 'Super Admin' : 'Admin'} {admin.status} {new Date(admin.createdAt).toLocaleDateString()} {admin.role === 'ADMIN' && admin.id !== user?.id ? ( ) : ( )}
)} {/* Create Admin Modal */} {showCreate && (

Create Admin User

setNewEmail(e.target.value)} required className="w-full px-3 py-2 border border-gray-300 rounded-lg text-gray-900 bg-white placeholder:text-gray-500" placeholder="admin@example.com" />
setNewPassword(e.target.value)} required minLength={8} className="w-full px-3 py-2 border border-gray-300 rounded-lg text-gray-900 bg-white placeholder:text-gray-500" placeholder="Min 8 characters" />
)}
); }