import { useState } from "react"; import LicenseRequired from "@calcom/features/ee/common/components/v2/LicenseRequired"; import ConfigDialogForm from "@calcom/features/ee/sso/components/ConfigDialogForm"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import { trpc } from "@calcom/trpc/react"; import { Icon } from "@calcom/ui"; import { Alert } from "@calcom/ui/Alert"; import { ClipboardCopyIcon } from "@calcom/ui/Icon"; import { Button, showToast, Label } from "@calcom/ui/v2"; import Badge from "@calcom/ui/v2/core/Badge"; import ConfirmationDialogContent from "@calcom/ui/v2/core/ConfirmationDialogContent"; import { Dialog, DialogTrigger, DialogContent } from "@calcom/ui/v2/core/Dialog"; import Meta from "@calcom/ui/v2/core/Meta"; import SkeletonLoader from "@calcom/ui/v2/core/apps/SkeletonLoader"; export default function SAMLConfiguration({ teamId }: { teamId: number | null }) { const { t } = useLocale(); const utils = trpc.useContext(); const [hasError, setHasError] = useState(false); const [errorMessage, setErrorMessage] = useState(""); const [configModal, setConfigModal] = useState(false); const { data: connection, isLoading } = trpc.useQuery(["viewer.saml.get", { teamId }], { onError: (err) => { setHasError(true); setErrorMessage(err.message); }, onSuccess: () => { setHasError(false); setErrorMessage(""); }, }); const mutation = trpc.useMutation("viewer.saml.delete", { async onSuccess() { await utils.invalidateQueries(["viewer.saml.get"]); showToast(t("saml_config_deleted_successfully"), "success"); }, onError: (err) => { showToast(err.message, "error"); }, }); const deleteConnection = () => { mutation.mutate({ teamId, }); }; if (isLoading) { return ; } if (hasError) { return ( <> ); } return ( <>
{connection && connection.provider ? ( SAML SSO enabled via {connection.provider} ) : ( {t("saml_not_configured_yet")} )}
{/* Service Provider Details */} {connection && connection.provider && ( <>
{t("saml_sp_title")}

{t("saml_sp_description")}

{connection.acsUrl}
{connection.entityId}
)} {/* Danger Zone and Delete Confirmation */} {connection && connection.provider && ( <>
{t("danger_zone")}
{t("delete_saml_configuration_confirmation_message")} )} {/* Add/Update SAML Connection */} setConfigModal(false)} teamId={teamId} />
); }