import React from "react"; import { z } from "zod"; import { useForm, zodResolver } from "@mantine/form"; import { Box, Button, Group, Stack, Switch, TextInput } from "@mantine/core"; import classes from "@/ee/security/components/sso.module.css"; import { IAuthProvider } from "@/ee/security/types/security.types.ts"; import { useTranslation } from "react-i18next"; import { useUpdateSsoProviderMutation } from "@/ee/security/queries/security-query.ts"; const ssoSchema = z.object({ name: z.string().min(1, "Provider name is required"), isEnabled: z.boolean(), allowSignup: z.boolean(), }); type SSOFormValues = z.infer; interface SsoFormProps { provider: IAuthProvider; onClose?: () => void; } export function SsoGoogleForm({ provider, onClose }: SsoFormProps) { const { t } = useTranslation(); const updateSsoProviderMutation = useUpdateSsoProviderMutation(); const form = useForm({ initialValues: { name: provider.name || "", isEnabled: provider.isEnabled, allowSignup: provider.allowSignup, }, validate: zodResolver(ssoSchema), }); const handleSubmit = async (values: SSOFormValues) => { const ssoData: Partial = { providerId: provider.id, }; if (form.isDirty("name")) { ssoData.name = values.name; } if (form.isDirty("isEnabled")) { ssoData.isEnabled = values.isEnabled; } if (form.isDirty("allowSignup")) { ssoData.allowSignup = values.allowSignup; } await updateSsoProviderMutation.mutateAsync(ssoData); form.resetDirty(); onClose(); }; return (
{t("Allow signup")}
{t("Enabled")}
); }