import { useState } from "react"; import { useMutation } from "@tanstack/react-query"; import { useToast } from "@/hooks/use-toast"; import { apiRequest, queryClient } from "@/lib/queryClient"; import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; import { Button } from "@/components/ui/button"; import { StatusBadge } from "@/components/ui/status-badge"; import { Plus, Pencil, Trash2 } from "lucide-react"; import { LdapConnection } from "@shared/schema"; import { AddLdapModal } from "@/components/modals/add-ldap-modal"; import { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle, } from "@/components/ui/alert-dialog"; interface LdapConnectionsCardProps { connections: LdapConnection[]; } export default function LdapConnectionsCard({ connections }: LdapConnectionsCardProps) { const { toast } = useToast(); const [isAddModalOpen, setIsAddModalOpen] = useState(false); const [connectionToEdit, setConnectionToEdit] = useState(null); const [connectionToDelete, setConnectionToDelete] = useState(null); const deleteConnectionMutation = useMutation({ mutationFn: async (id: number) => { await apiRequest("DELETE", `/api/ldap-connections/${id}`); }, onSuccess: () => { toast({ title: "Connection deleted", description: "The LDAP connection has been successfully deleted.", }); queryClient.invalidateQueries({ queryKey: ["/api/ldap-connections"] }); setConnectionToDelete(null); }, onError: (error) => { toast({ title: "Error", description: `Failed to delete connection: ${error.message}`, variant: "destructive", }); }, }); const handleEditConnection = (connection: LdapConnection) => { setConnectionToEdit(connection); setIsAddModalOpen(true); }; const handleDeleteConnection = (connection: LdapConnection) => { setConnectionToDelete(connection); }; const confirmDeleteConnection = () => { if (connectionToDelete) { deleteConnectionMutation.mutate(connectionToDelete.id); } }; return ( LDAP Connections
{connections.length === 0 ? (
No LDAP connections configured. Add a connection to get started.
) : ( {connections.map((connection, index) => ( ))}
Connection Name Server Domain Port SSL Status Actions
{connection.name} {connection.server} {connection.domain} {connection.port} {connection.useSSL ? "Yes" : "No"} {connection.status === "connected" ? "Connected" : "Disconnected"}
)}
{ setIsAddModalOpen(false); setConnectionToEdit(null); }} connectionToEdit={connectionToEdit} /> setConnectionToDelete(null)}> Delete LDAP Connection Are you sure you want to delete the LDAP connection "{connectionToDelete?.name}"? This action cannot be undone. Cancel Delete
); }