import { useState } from "react"; import { useQuery } from "@tanstack/react-query"; import { DashboardLayout } from "@/layouts/dashboard-layout"; import { DataTable } from "@/components/ui/data-table"; import { Button } from "@/components/ui/button"; import { StatusBadge } from "@/components/ui/status-badge"; import { Plus, FileDown, FileUp } from "lucide-react"; import { AdUser, LdapConnection } from "@shared/schema"; import { Badge } from "@/components/ui/badge"; import { format } from "date-fns"; export default function UsersPage() { const [selectedConnection, setSelectedConnection] = useState(null); const [pageIndex, setPageIndex] = useState(0); const [pageSize, setPageSize] = useState(10); const { data: connections = [], isLoading: isLoadingConnections } = useQuery({ queryKey: ["/api/ldap-connections"], }); const { data: users = [], isLoading: isLoadingUsers } = useQuery({ queryKey: [ `/api/connections/${selectedConnection}/ad-users`, { select: "id,sAMAccountName,distinguishedName,givenName,surname,email,enabled,lastLogon" } ], enabled: !!selectedConnection, }); const columns = [ { header: "Username", accessorKey: "sAMAccountName", }, { header: "Name", accessorKey: (row: AdUser) => (row.givenName && row.surname) ? `${row.givenName} ${row.surname}` : row.displayName || row.sAMAccountName, }, { header: "Email", accessorKey: "email", }, { header: "Status", accessorKey: "enabled", cell: (row: AdUser) => ( row.enabled ? Enabled : Disabled ), }, { header: "Last Logon", accessorKey: "lastLogon", cell: (row: AdUser) => row.lastLogon ? format(new Date(row.lastLogon), 'MMM dd, yyyy') : 'Never', }, ]; return (
{connections.map((connection) => ( setSelectedConnection(connection.id)} > {connection.name} ))} {connections.length === 0 && !isLoadingConnections && (
No LDAP connections available. Add a connection first.
)}
); }