import AppLayout from '@/Layouts/AppLayout';
import { Head, useForm, router } from '@inertiajs/react';
import { useState } from 'react';
import { Globe, CheckCircle, XCircle, RefreshCw } from 'lucide-react';
import { GlassCard } from '@/Components/ui/GlassCard';
import { Button } from '@/Components/ui/Button';
import { cn } from '@/lib/utils';
import { motion } from 'framer-motion';
function Input({ className, ...props }) {
return ;
}
function Field({ label, desc, children }) {
return (
);
}
export default function LdapConfig({ config }) {
const { data, setData, put, processing } = useForm({
host: config?.host ?? '',
port: config?.port ?? 389,
use_ssl: config?.use_ssl ?? false,
use_tls: config?.use_tls ?? false,
base_dn: config?.base_dn ?? '',
bind_dn: config?.bind_dn ?? '',
bind_password: '',
user_search_base: config?.user_search_base ?? '',
user_filter: config?.user_filter ?? '(sAMAccountName={username})',
admin_group_dn: config?.admin_group_dn ?? '',
is_active: config?.is_active ?? false,
});
const [testResult, setTestResult] = useState(null);
const [testing, setTesting] = useState(false);
const [syncing, setSyncing] = useState(false);
const test = async () => {
setTesting(true);
setTestResult(null);
try {
const res = await fetch('/admin/ldap/test', {
method: 'POST',
headers: { 'Content-Type': 'application/json', 'X-CSRF-TOKEN': document.querySelector('meta[name=csrf-token]').content },
body: JSON.stringify(data),
});
setTestResult(await res.json());
} catch (e) {
setTestResult({ success: false, message: e.message });
} finally {
setTesting(false);
}
};
const sync = () => {
setSyncing(true);
router.post('/admin/ldap/sync', {}, { onFinish: () => setSyncing(false) });
};
return (
LDAP / Active Directory
Integrate with your directory service for SSO
);
}