'use client' import { useState } from 'react' import { useRouter } from 'next/navigation' import { useForm } from 'react-hook-form' import { zodResolver } from '@hookform/resolvers/zod' import * as z from 'zod' import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, } from '@/components/ui/dialog' import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage, } from '@/components/ui/form' import { Input } from '@/components/ui/input' import { Button } from '@/components/ui/button' import { createUser } from '@/lib/actions/users' import { Plus } from 'lucide-react' const userSchema = z.object({ email: z.string().email('Ungültige E-Mail-Adresse'), password: z.string().min(6, 'Passwort muss mindestens 6 Zeichen lang sein').optional().or(z.literal('')), role: z.enum(['admin', 'partner']), }) type UserFormValues = z.infer export function UserDialog() { const [open, setOpen] = useState(false) const router = useRouter() const form = useForm({ resolver: zodResolver(userSchema) as any, defaultValues: { email: '', password: '', role: 'partner', }, }) async function onSubmit(values: UserFormValues) { try { // If password is empty string, omit it const payload = { email: values.email, role: values.role, ...(values.password ? { password: values.password } : {}) } await createUser(payload) setOpen(false) form.reset() router.refresh() } catch (error) { console.error('Error creating user:', error) } } return ( Neuen Benutzer anlegen Geben Sie die E-Mail, die Rolle und optional ein Passwort für den neuen Benutzer ein.
( E-Mail )} /> ( Rolle )} /> ( Passwort (optional) )} />
) }