"use client" import { useState, useEffect } from "react" import { Button } from "@/components/ui/button" import { Input } from "@/components/ui/input" import { Label } from "@/components/ui/label" import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card" import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select" import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from "@/components/ui/table" import { useAuth } from "@/lib/auth-context" import { apiFetch } from "@/lib/apiutils" export default function UsersPage() { const { user } = useAuth() const [users, setUsers] = useState([]) const [isLoading, setIsLoading] = useState(true) // Form State const [name, setName] = useState("") const [email, setEmail] = useState("") const [password, setPassword] = useState("") const [role, setRole] = useState("ingeniero") const [status, setStatus] = useState("activo") const [isSubmitting, setIsSubmitting] = useState(false) const [message, setMessage] = useState("") const fetchUsers = async () => { setIsLoading(true) try { const res = await apiFetch("/users") if (res.ok) { const data = await res.json() setUsers(data) } } catch (e) { console.error("Failed to fetch users", e) } finally { setIsLoading(false) } } useEffect(() => { if (user?.role === 'admin') { fetchUsers() } }, [user]) const handleSubmit = async (e: React.FormEvent) => { e.preventDefault() setIsSubmitting(true) setMessage("") try { const res = await apiFetch("/users", { method: "POST", body: JSON.stringify({ name, email, password, role, status }) }) if (res.ok) { setMessage("Usuario creado exitosamente") setName("") setEmail("") setPassword("") fetchUsers() } else { const data = await res.json() setMessage(data.message || "Error al crear usuario") } } catch (e) { setMessage("Error de conexión") } finally { setIsSubmitting(false) } } if (user?.role !== 'admin') { return
Acceso denegado. Solo administradores.
} return (
Gestión de Usuarios Crea y administra los usuarios del sistema

Nuevo Usuario

setName(e.target.value)} required />
setEmail(e.target.value)} required />
setPassword(e.target.value)} required minLength={8} />
{message &&

{message}

}
Nombre Email Rol Estado {isLoading ? ( Cargando... ) : users.map((u) => ( {u.name} {u.email} {u.role} {u.status} ))}
) }