"use client"; import { useState } from 'react'; import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, } from '@/components/ui/dialog'; import { Button } from '@/components/ui/button'; import { Input } from '@/components/ui/input'; import { Label } from '@/components/ui/label'; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from '@/components/ui/select'; import { usersApi } from '@/lib/api'; import toast from 'react-hot-toast'; import { Loader2 } from 'lucide-react'; interface AddUserDialogProps { open: boolean; onOpenChange: (open: boolean) => void; onUserAdded?: () => void; } export default function AddUserDialog({ open, onOpenChange, onUserAdded }: AddUserDialogProps) { const [loading, setLoading] = useState(false); const [formData, setFormData] = useState({ email: '', full_name: '', password: '', user_type: 'tenant_user', tenant_id: '1', // Auto-select test_company tenant for GT AI OS Local tfa_required: false, }); const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); // Validation if (!formData.email || !formData.full_name || !formData.password) { toast.error('Please fill in all required fields'); return; } if (!formData.password) { toast.error('Password cannot be empty'); return; } // Validate email format const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; if (!emailRegex.test(formData.email)) { toast.error('Please enter a valid email address'); return; } // tenant_id is auto-assigned to test_company for GT AI OS Local setLoading(true); try { const payload = { email: formData.email, full_name: formData.full_name, password: formData.password, user_type: formData.user_type, tenant_id: formData.tenant_id ? parseInt(formData.tenant_id) : null, tfa_required: formData.tfa_required, }; await usersApi.create(payload); toast.success('User created successfully'); // Reset form setFormData({ email: '', full_name: '', password: '', user_type: 'tenant_user', tenant_id: '1', // Auto-select test_company tenant for GT AI OS Local tfa_required: false, }); onOpenChange(false); if (onUserAdded) { onUserAdded(); } } catch (error: any) { console.error('Failed to create user:', error); const errorMessage = error.response?.data?.detail || 'Failed to create user'; toast.error(errorMessage); } finally { setLoading(false); } }; return ( Add New User Create a new user account. All fields are required.
setFormData({ ...formData, email: e.target.value })} required />
setFormData({ ...formData, full_name: e.target.value })} required />
setFormData({ ...formData, password: e.target.value })} required />

Cannot be empty

setFormData({ ...formData, tfa_required: e.target.checked })} className="h-4 w-4 rounded border-gray-300" />
); }