{"version":3,"file":"OrgSettingsUserOnboardingSection.mjs","sources":["../../../../../../../../web/src/adminPortal/settings/OrgSettingsUserOnboardingSection.tsx"],"sourcesContent":["import AddIcon from '@mui/icons-material/AddRounded';\nimport { B2BOrganizationsUpdateOptions, Organization } from '@stytch/core/public';\nimport React, { useCallback, useMemo, useState } from 'react';\n\nimport { Alert } from '../components/Alert';\nimport { Button } from '../components/Button';\nimport { Checkbox } from '../components/Checkbox';\nimport { FlexBox } from '../components/FlexBox';\nimport { Input } from '../components/Input';\nimport { ListEditor } from '../components/ListEditor';\nimport { Modal, useModalState } from '../components/Modal';\nimport { PaddingLeft } from '../components/PaddingLeft';\nimport { RadioGroup } from '../components/RadioGroup';\nimport { Select } from '../components/Select';\nimport { SettingsContainer, useSettingsContainer } from '../components/SettingsContainer';\nimport { SettingsSection } from '../components/SettingsSection';\nimport { Switch } from '../components/Switch';\nimport { Typography } from '../components/Typography';\nimport { TableItemRenderer } from '../shared/components/types';\nimport { arraysHaveSameContents } from '../utils/arraysHaveSameContents';\nimport { Connection } from '../utils/Connection';\nimport { FormSectionBody } from '../utils/FormSectionBody';\nimport { getDisplayKnownTenantProvider, getDisplayStatus, getDisplayTenantProvider } from '../utils/getDisplay';\nimport { isOauthMethod } from '../utils/isOauthMethod';\nimport { NO_VALUE } from '../utils/noValue';\nimport { ALL_OAUTH_TENANT_PROVIDERS, getMethodFromProvider, KnownOAuthTenantProvider } from '../utils/oAuthProviders';\nimport { useAllowedAuthMethods } from '../utils/useAllowedAuthMethods';\nimport { useConnections } from '../utils/useConnections';\nimport { StateProps, useFormState } from '../utils/useFormState';\nimport { useMutateOrganization } from '../utils/useMutateOrganization';\nimport { useRbac } from '../utils/useRbac';\nimport { useSelf } from '../utils/useSelf';\nimport { useStateSliceSetter } from '../utils/useStateSliceSetter';\nimport { useOrgSettingsRouterController } from './AdminPortalOrgRouter';\n\nconst useMutateAuthSettings = () => {\n  const { mutate } = useMutateOrganization();\n\n  const setOrgAuthSettings = (mutatedProperties: Partial<B2BOrganizationsUpdateOptions>) => {\n    return mutate(mutatedProperties, {\n      errorMessage: 'Failed to update email domain details.',\n    });\n  };\n\n  return { setOrgAuthSettings };\n};\n\nconst emailAllowedDomainsRenderer: TableItemRenderer<string>[] = [\n  {\n    title: 'Domain',\n    getValue: (email: string) => <Typography variant=\"body2\">{email}</Typography>,\n  },\n];\nconst allowedConnectionsRenderers = ({ idToConnectionMap }: { idToConnectionMap: Record<string, Connection> }) => [\n  {\n    title: 'Connection display name',\n    getValue: (id: string) => (\n      <Typography variant=\"body2\">{idToConnectionMap[id] ? idToConnectionMap[id].displayName : NO_VALUE}</Typography>\n    ),\n  },\n  {\n    title: 'Status',\n    getValue: (id: string) => (\n      <Typography variant=\"body2\">\n        {idToConnectionMap[id] ? getDisplayStatus(idToConnectionMap[id].status) : NO_VALUE}\n      </Typography>\n    ),\n  },\n];\n\ninterface UserOnboardingFormState {\n  emailInvites: Organization['email_invites'];\n  emailAllowedDomains: Organization['email_allowed_domains'];\n  ssoJitProvisioning: Organization['sso_jit_provisioning'];\n  isEmailJitProvisioningAllowed: boolean;\n  ssoAllowedConnections: Organization['sso_jit_provisioning_allowed_connections'];\n  isOauthTenantJitProvisioningAllowed: boolean;\n  allowedOAuthTenants: Organization['allowed_oauth_tenants'];\n}\n\nconst emailInvitesLabelMap: Record<'ALL_ALLOWED' | 'RESTRICTED', string> = {\n  ALL_ALLOWED: 'Anybody',\n  RESTRICTED: 'Users from allowed email domains',\n};\n\nconst ssoJitProvisioningLabelMap: Record<'ALL_ALLOWED' | 'RESTRICTED', string> = {\n  ALL_ALLOWED: 'All SSO connections',\n  RESTRICTED: 'Allowed SSO connections',\n};\n\ninterface OrgSettingsUserOnboardingBodyProps extends FormSectionBody<UserOnboardingFormState> {\n  canSetEmailJitProvisioning: boolean | undefined;\n  canSetEmailInvites: boolean | undefined;\n  canSetAllowedDomains: boolean | undefined;\n  canSetSsoJitProvisioning: boolean | undefined;\n  canSetOAuthTenantJitProvisioning: boolean | undefined;\n  canSetOAuthTenants: boolean | undefined;\n}\ninterface BaseTableProps extends StateProps<UserOnboardingFormState> {\n  editing: boolean;\n}\n\ninterface EmailDomainsTableProps extends BaseTableProps {\n  canSetAllowedDomains: boolean | undefined;\n}\n\ninterface SsoConnectionsTableProps extends BaseTableProps {\n  canSetSsoJitProvisioning: boolean | undefined;\n}\n\ninterface OAuthTenantsTableProps extends BaseTableProps {\n  canSetOAuthTenants: boolean | undefined;\n}\n\ntype OAuthTenant = { provider: string; tenantId: string };\n\nconst PROVIDER_TENANT_ID_SEPARATOR = ':';\n\nconst serializeProviderAndTenantId = (providerType: string, tenantId: string) =>\n  `${providerType}${PROVIDER_TENANT_ID_SEPARATOR}${tenantId}`;\n\nconst parseProviderAndTenantId = (providerAndTenantId: string) => {\n  const [provider, tenantId] = providerAndTenantId.split(PROVIDER_TENANT_ID_SEPARATOR, 2) as [\n    string | undefined,\n    string | undefined,\n  ];\n  return { provider, tenantId };\n};\n\nconst EmailDomainsTable = ({\n  localState,\n  remoteState,\n  setLocalState,\n  canSetAllowedDomains,\n  editing,\n}: EmailDomainsTableProps) => {\n  const emailAllowedDomains = editing ? localState.emailAllowedDomains : remoteState.emailAllowedDomains;\n\n  const [email, setEmail] = useState('');\n  const addEmailModalProps = useModalState(() => {\n    setLocalState((state) => ({\n      ...state,\n      emailAllowedDomains: [...new Set([...localState.emailAllowedDomains, email])],\n    }));\n    setEmail('');\n  });\n\n  return (\n    <SettingsSection\n      title=\"Email domains\"\n      titleVariant=\"h5\"\n      tooltipText=\"Corporate email domains trusted by your company (e.g. acmecorp.com); used for both domain-restrictions on invites and JIT Provisioning by email domain if enabled.\"\n    >\n      <Modal {...addEmailModalProps} title=\"Add allowed email domain\" confirmButtonText=\"Save\">\n        <Input label=\"Domain\" onChange={setEmail} placeholder=\"Enter domain\" value={email} />\n      </Modal>\n      <ListEditor\n        items={emailAllowedDomains ?? []}\n        itemRenderer={emailAllowedDomainsRenderer}\n        onAdd={() => {\n          addEmailModalProps.open();\n        }}\n        emptyText=\"No domains added.\"\n        getItemActionProps={\n          editing && canSetAllowedDomains\n            ? (item) => ({\n                warningAction: {\n                  text: 'Delete',\n                  onClick: () => {\n                    setEmail('');\n                    setLocalState((prevState) => ({\n                      ...prevState,\n                      emailAllowedDomains: localState.emailAllowedDomains.filter((domain) => domain !== item),\n                    }));\n                  },\n                },\n              })\n            : undefined\n        }\n        hideAddButton={!canSetAllowedDomains || !editing}\n        addButtonText=\"Add domain\"\n      />\n    </SettingsSection>\n  );\n};\nconst SsoConnectionsTable = ({\n  localState,\n  remoteState,\n  setLocalState,\n  editing,\n  canSetSsoJitProvisioning,\n}: SsoConnectionsTableProps) => {\n  const { data: canGetConnectionPerm } = useRbac('stytch.sso', 'get');\n  const canGetConnection = !!canGetConnectionPerm;\n  const { connections } = useConnections(canGetConnection);\n\n  const { ssoAllowedConnections, ssoJitProvisioning } = editing ? localState : remoteState;\n  const handleSsoJitProvisioningChange = useStateSliceSetter(setLocalState, 'ssoJitProvisioning');\n\n  const [selectedSsoConnectionId, setSelectedSsoConnectionId] = useState<string | null>(null);\n\n  const idToConnectionMap = connections.reduce(\n    (acc, connection) => {\n      acc[connection.id] = connection;\n      return acc;\n    },\n    {} as Record<string, Connection>,\n  );\n  const selectedConnections = new Set(localState.ssoAllowedConnections);\n  const availableConnections = connections.filter((val) => !selectedConnections.has(val.id));\n\n  const { open: openAddSsoConnectionModal, ...addSsoConnectionModalProps } = useModalState(() => {\n    if (selectedSsoConnectionId) {\n      setLocalState((state) => ({\n        ...state,\n        ssoAllowedConnections: [...ssoAllowedConnections, selectedSsoConnectionId],\n      }));\n      setSelectedSsoConnectionId(null);\n    }\n  });\n\n  const ssoSelectItems = availableConnections.map((val) => {\n    return { label: val.displayName, value: val.id };\n  });\n  const ssoAllowedConnectionsRenderers = allowedConnectionsRenderers({ idToConnectionMap });\n\n  const showTable = ssoJitProvisioning === 'RESTRICTED';\n\n  const renderAlert = () => {\n    if (!canGetConnection) {\n      return (\n        <Alert>\n          You do not have permission to view SSO Connections. Please contact your admin if you think this is a mistake.\n        </Alert>\n      );\n    }\n\n    return null;\n  };\n\n  const renderListEditor = () => {\n    if (!showTable) return null;\n\n    return (\n      <ListEditor\n        items={ssoAllowedConnections}\n        itemRenderer={ssoAllowedConnectionsRenderers}\n        onAdd={openAddSsoConnectionModal}\n        emptyText=\"No connections selected.\"\n        getItemActionProps={\n          editing && canSetSsoJitProvisioning\n            ? (item) => ({\n                warningAction: {\n                  text: 'Remove',\n                  onClick: () => {\n                    setLocalState((prevState) => ({\n                      ...prevState,\n                      ssoAllowedConnections: prevState.ssoAllowedConnections.filter((val) => val !== item),\n                    }));\n                  },\n                },\n              })\n            : undefined\n        }\n        hideAddButton={!canSetSsoJitProvisioning || !editing}\n        addButtonText=\"Select connection\"\n      />\n    );\n  };\n  return (\n    <SettingsSection\n      title=\"SSO connections\"\n      titleVariant=\"h5\"\n      tooltipText=\"SAML or OIDC SSO Connections configured with your Workforce Identity Provider (e.g. Okta, Entra)\"\n    >\n      <RadioGroup\n        onChange={(val) => handleSsoJitProvisioningChange(val as keyof typeof ssoJitProvisioningLabelMap)}\n        value={ssoJitProvisioning}\n        readOnly={!editing || !canSetSsoJitProvisioning}\n        items={Object.entries(ssoJitProvisioningLabelMap).map(([value, label]) => {\n          return {\n            value,\n            label,\n          };\n        })}\n      />\n      <Modal\n        {...addSsoConnectionModalProps}\n        title=\"Add allowed SSO connection\"\n        confirmButtonText=\"Save\"\n        disableConfirm={!selectedSsoConnectionId}\n      >\n        <Select\n          label=\"SSO connection\"\n          selectItems={ssoSelectItems}\n          value={selectedSsoConnectionId}\n          onChange={setSelectedSsoConnectionId}\n          placeholder=\"Select\"\n        />\n      </Modal>\n      {renderAlert()}\n      {renderListEditor()}\n    </SettingsSection>\n  );\n};\n\nconst useOAuthAccountModal = ({\n  allowedOAuthTenants,\n  onAddTenant,\n}: {\n  allowedOAuthTenants: Record<string, string[]>;\n  onAddTenant: (params: OAuthTenant) => void;\n}) => {\n  const { self } = useSelf();\n  const orgConfigAuthMethods = useAllowedAuthMethods();\n  const linkedAccounts = useMemo(\n    () =>\n      self?.oauth_registrations\n        .filter((registration) =>\n          orgConfigAuthMethods.includes(\n            getMethodFromProvider(registration.provider_type.toLowerCase() as KnownOAuthTenantProvider),\n          ),\n        )\n        .flatMap((registration) => {\n          const provider = registration.provider_type.toLowerCase();\n          return registration.provider_tenants\n            .filter((tenant) => !allowedOAuthTenants[provider]?.some((tenantId) => tenantId === tenant.tenant_id))\n            .map((tenant) => ({\n              label: `${getDisplayTenantProvider(provider)} ${tenant.tenant_name} [${tenant.tenant_id}]`,\n              value: serializeProviderAndTenantId(provider, tenant.tenant_id),\n              provider,\n              tenantId: tenant.tenant_id,\n            }));\n        }) ?? [],\n    [allowedOAuthTenants, orgConfigAuthMethods, self?.oauth_registrations],\n  );\n  const defaultManualMode = linkedAccounts.length === 0;\n  const [isManualMode, setIsManualMode] = useState(defaultManualMode);\n\n  // Inputs for manual mode\n  const [manualInputProvider, setManualInputProvider] = useState<KnownOAuthTenantProvider>();\n  const [manualInputTenantId, setManualInputTenantId] = useState<string>();\n\n  // Input for linked account mode\n  const [selectedLinkedAccountId, setSelectedLinkedAccountId] = useState<string>();\n\n  const { open, ...modalProps } = useModalState(() => {\n    const getInput = () => {\n      if (isManualMode) {\n        return { provider: manualInputProvider, tenantId: manualInputTenantId };\n      } else if (selectedLinkedAccountId) {\n        return parseProviderAndTenantId(selectedLinkedAccountId);\n      }\n    };\n\n    const { provider, tenantId } = getInput() ?? {};\n    if (provider && tenantId) {\n      onAddTenant({ provider, tenantId });\n    }\n  });\n\n  const reset = () => {\n    setManualInputProvider(undefined);\n    setManualInputTenantId(undefined);\n    setSelectedLinkedAccountId(undefined);\n    setIsManualMode(defaultManualMode);\n  };\n\n  return {\n    props: {\n      ...modalProps,\n      linkedAccounts,\n      isManualMode,\n      setIsManualMode,\n      manualInputProvider,\n      manualInputTenantId,\n      setManualInputProvider,\n      setManualInputTenantId,\n      selectedLinkedAccountId,\n      setSelectedLinkedAccountId,\n    },\n    open,\n    reset,\n  };\n};\n\ninterface LinkedAccount {\n  label: string;\n  provider: string;\n  tenantId: string;\n}\n\ntype OAuthAccountModalProps = ReturnType<typeof useOAuthAccountModal>['props'] & {\n  availableOAuthProviderSelectItems: { label: string; value: KnownOAuthTenantProvider }[];\n  linkedAccounts: LinkedAccount[];\n};\n\nconst OAuthAccountModal = ({\n  availableOAuthProviderSelectItems,\n  linkedAccounts,\n  isManualMode,\n  setIsManualMode,\n  manualInputProvider,\n  manualInputTenantId,\n  setManualInputProvider,\n  setManualInputTenantId,\n  selectedLinkedAccountId,\n  setSelectedLinkedAccountId,\n  ...modalProps\n}: OAuthAccountModalProps) => {\n  const hasLinkedAccounts = linkedAccounts.length > 0;\n\n  const linkedAccountSelectItems = useMemo(\n    () =>\n      linkedAccounts.map((account) => ({\n        label: account.label,\n        value: serializeProviderAndTenantId(account.provider, account.tenantId),\n      })),\n    [linkedAccounts],\n  );\n\n  return (\n    <Modal {...modalProps} title=\"Add allowed OAuth account\" confirmButtonText=\"Save\">\n      {isManualMode ? (\n        <FlexBox gap={2} flexDirection=\"column\">\n          <Typography variant=\"body2\">\n            Add an OAuth account manually by selecting the OAuth provider and inputting the account ID.\n          </Typography>\n          <FlexBox gap={2}>\n            <Select\n              selectItems={availableOAuthProviderSelectItems}\n              label=\"OAuth Provider\"\n              value={manualInputProvider}\n              onChange={setManualInputProvider}\n            />\n            <Input\n              label=\"Account ID\"\n              placeholder=\"Enter account ID\"\n              value={manualInputTenantId ?? ''}\n              onChange={setManualInputTenantId}\n            />\n          </FlexBox>\n          {hasLinkedAccounts && (\n            <Button variant=\"text\" startIcon={<AddIcon />} onClick={() => setIsManualMode(false)} compact>\n              Add from linked accounts\n            </Button>\n          )}\n        </FlexBox>\n      ) : (\n        <FlexBox gap={2} flexDirection=\"column\">\n          <Typography variant=\"body2\">Select from the list of linked accounts.</Typography>\n          <Select\n            selectItems={linkedAccountSelectItems}\n            label=\"Account\"\n            value={selectedLinkedAccountId}\n            onChange={setSelectedLinkedAccountId}\n            fullWidth\n          />\n          <Button variant=\"text\" startIcon={<AddIcon />} onClick={() => setIsManualMode(true)} compact>\n            Add manually\n          </Button>\n        </FlexBox>\n      )}\n    </Modal>\n  );\n};\n\nconst OAuthTenantsTable = ({\n  localState,\n  remoteState,\n  setLocalState,\n  canSetOAuthTenants,\n  editing,\n}: OAuthTenantsTableProps) => {\n  const { allowedOAuthTenants } = editing ? localState : remoteState;\n\n  const orgConfigAuthMethods = useAllowedAuthMethods();\n\n  const allowedOAuthTenantsList: OAuthTenant[] = Object.entries(allowedOAuthTenants).flatMap(([provider, tenants]) =>\n    tenants.map((tenant) => ({ provider, tenantId: tenant })),\n  );\n  allowedOAuthTenantsList.sort((a, b) => a.provider.localeCompare(b.provider));\n\n  const {\n    props: oauthModalProps,\n    open,\n    reset,\n  } = useOAuthAccountModal({\n    allowedOAuthTenants,\n    onAddTenant: ({ provider, tenantId }) => {\n      setLocalState((prevState) => ({\n        ...prevState,\n        allowedOAuthTenants: {\n          ...allowedOAuthTenants,\n          [provider]: [...(allowedOAuthTenants[provider] || []), tenantId],\n        },\n      }));\n    },\n  });\n\n  const availableOAuthProviderSelectItems = ALL_OAUTH_TENANT_PROVIDERS.filter((provider) =>\n    orgConfigAuthMethods.includes(getMethodFromProvider(provider)),\n  ).map((provider) => ({\n    label: getDisplayKnownTenantProvider(provider),\n    value: provider,\n  }));\n\n  const areOAuthProvidersAvailableToAdd = availableOAuthProviderSelectItems.length > 0;\n\n  return (\n    <SettingsSection\n      title=\"OAuth accounts\"\n      titleVariant=\"h5\"\n      tooltipText=\"Your company's instance/organization/workspace on common OAuth providers (e.g. Slack workspace, Github organization).\"\n    >\n      <OAuthAccountModal {...oauthModalProps} availableOAuthProviderSelectItems={availableOAuthProviderSelectItems} />\n      <ListEditor\n        items={allowedOAuthTenantsList}\n        rowKeyExtractor={(item) => serializeProviderAndTenantId(item.provider, item.tenantId)}\n        emptyText=\"No accounts added.\"\n        itemRenderer={[\n          {\n            title: 'OAuth Provider',\n            getValue: (item) => <Typography variant=\"body2\">{getDisplayTenantProvider(item.provider)}</Typography>,\n          },\n          {\n            title: 'Allowed Tenants',\n            getValue: (item) => <Typography variant=\"body2\">{item.tenantId}</Typography>,\n          },\n        ]}\n        onAdd={() => {\n          reset();\n          open();\n        }}\n        getItemActionProps={\n          editing && canSetOAuthTenants\n            ? ({ provider, tenantId }) => ({\n                warningAction: {\n                  text: 'Delete',\n                  onClick: () => {\n                    setLocalState((prevState) => {\n                      return {\n                        ...prevState,\n                        allowedOAuthTenants: {\n                          ...prevState.allowedOAuthTenants,\n                          [provider]: prevState.allowedOAuthTenants[provider].filter((val) => val !== tenantId),\n                        },\n                      };\n                    });\n                  },\n                },\n              })\n            : undefined\n        }\n        hideAddButton={!canSetOAuthTenants || !editing || !areOAuthProvidersAvailableToAdd}\n        addButtonText=\"Add account\"\n      />\n    </SettingsSection>\n  );\n};\n\nconst OrgSettingsUserOnboardingBody = ({\n  canSetEmailInvites,\n  canSetEmailJitProvisioning,\n  canSetAllowedDomains,\n  canSetSsoJitProvisioning,\n  canSetOAuthTenants,\n  canSetOAuthTenantJitProvisioning,\n  localState,\n  remoteState,\n  setLocalState,\n}: OrgSettingsUserOnboardingBodyProps) => {\n  const { editing } = useSettingsContainer();\n\n  const {\n    emailInvites,\n    isEmailJitProvisioningAllowed,\n    ssoJitProvisioning,\n    isOauthTenantJitProvisioningAllowed,\n    allowedOAuthTenants,\n  } = editing ? localState : remoteState;\n\n  const handleEmailJitProvisioningChange = useStateSliceSetter(setLocalState, 'isEmailJitProvisioningAllowed');\n  const handleEmailInvitesChange = useStateSliceSetter(setLocalState, 'emailInvites');\n  const handleSsoJitProvisioningChange = useStateSliceSetter(setLocalState, 'ssoJitProvisioning');\n  const handleOAuthTenantJitProvisioningChange = useStateSliceSetter(\n    setLocalState,\n    'isOauthTenantJitProvisioningAllowed',\n  );\n\n  const orgConfigAuthMethods = useAllowedAuthMethods();\n  const ssoIsAllowedAuthMethod = useMemo(() => orgConfigAuthMethods.includes('sso'), [orgConfigAuthMethods]);\n  const oauthIsAllowedAuthMethod = useMemo(() => orgConfigAuthMethods.some(isOauthMethod), [orgConfigAuthMethods]);\n\n  const areOAuthProvidersAvailableToAdd = useMemo(() => {\n    return ALL_OAUTH_TENANT_PROVIDERS.some((provider) =>\n      orgConfigAuthMethods.includes(getMethodFromProvider(provider)),\n    );\n  }, [orgConfigAuthMethods]);\n  const oauthProvidersExist = Object.keys(allowedOAuthTenants).length > 0;\n\n  const showEmailTable = emailInvites === 'RESTRICTED' || isEmailJitProvisioningAllowed;\n  const showOAuthTable =\n    isOauthTenantJitProvisioningAllowed &&\n    oauthIsAllowedAuthMethod &&\n    (areOAuthProvidersAvailableToAdd || oauthProvidersExist);\n  const showSsoComponents = ssoJitProvisioning !== 'NOT_ALLOWED' && ssoIsAllowedAuthMethod;\n\n  const showOAuthJitCheckbox = oauthIsAllowedAuthMethod && (areOAuthProvidersAvailableToAdd || oauthProvidersExist);\n  const showSsoJitCheckbox = ssoIsAllowedAuthMethod;\n\n  return (\n    <FlexBox flexDirection=\"column\" gap={2}>\n      <SettingsSection title=\"Invites\">\n        <Switch\n          readOnly={!editing || !canSetEmailInvites}\n          label={'Allow members to be invited by email'}\n          checked={emailInvites !== 'NOT_ALLOWED'}\n          onChange={(value) => handleEmailInvitesChange(value ? 'ALL_ALLOWED' : 'NOT_ALLOWED')}\n        />\n        {emailInvites !== 'NOT_ALLOWED' && (\n          <PaddingLeft>\n            <FlexBox flexDirection=\"row\" flexWrap=\"wrap\">\n              <RadioGroup\n                onChange={handleEmailInvitesChange}\n                value={emailInvites}\n                readOnly={!editing || !canSetEmailInvites}\n                items={Object.entries(emailInvitesLabelMap).map(([value, label]) => {\n                  return {\n                    value,\n                    label,\n                  };\n                })}\n              />\n            </FlexBox>\n          </PaddingLeft>\n        )}\n      </SettingsSection>\n      <SettingsSection\n        title=\"JIT Provisioning\"\n        tooltipText=\"If JIT provisioning is enabled, users who successfully authenticate using the specified methods will be automatically granted an account if they do not already exist.\"\n      >\n        <Typography variant=\"body2\">Allow users to automatically join based on your access control list</Typography>\n        <PaddingLeft>\n          <FlexBox flexDirection=\"row\" flexWrap=\"wrap\">\n            <Checkbox\n              disabled={!editing || !canSetEmailJitProvisioning}\n              label=\"Email domains\"\n              checked={isEmailJitProvisioningAllowed}\n              onClick={handleEmailJitProvisioningChange}\n            />\n            {showOAuthJitCheckbox && (\n              <Checkbox\n                disabled={!editing || !canSetOAuthTenantJitProvisioning}\n                label=\"OAuth accounts\"\n                checked={isOauthTenantJitProvisioningAllowed}\n                onClick={handleOAuthTenantJitProvisioningChange}\n              />\n            )}\n            {showSsoJitCheckbox && (\n              <Checkbox\n                disabled={!editing || !canSetSsoJitProvisioning}\n                label=\"SSO connections\"\n                checked={ssoJitProvisioning !== 'NOT_ALLOWED'}\n                onClick={(value) => handleSsoJitProvisioningChange(value ? 'RESTRICTED' : 'NOT_ALLOWED')}\n              />\n            )}\n          </FlexBox>\n        </PaddingLeft>\n      </SettingsSection>\n      {(showEmailTable || showOAuthTable || showSsoComponents) && (\n        <SettingsSection title=\"Access control list\">\n          <FlexBox flexDirection=\"column\" gap={editing ? 1 : 3}>\n            {showEmailTable && (\n              <EmailDomainsTable\n                localState={localState}\n                remoteState={remoteState}\n                setLocalState={setLocalState}\n                canSetAllowedDomains={canSetAllowedDomains}\n                editing={editing}\n              />\n            )}\n            {showOAuthTable && (\n              <OAuthTenantsTable\n                localState={localState}\n                remoteState={remoteState}\n                setLocalState={setLocalState}\n                canSetOAuthTenants={canSetOAuthTenants}\n                editing={editing}\n              />\n            )}\n            {showSsoComponents && (\n              <SsoConnectionsTable\n                localState={localState}\n                remoteState={remoteState}\n                setLocalState={setLocalState}\n                canSetSsoJitProvisioning={canSetSsoJitProvisioning}\n                editing={editing}\n              />\n            )}\n          </FlexBox>\n        </SettingsSection>\n      )}\n    </FlexBox>\n  );\n};\n\nexport const OrgSettingsUserOnboardingSection = ({ orgInfo }: { orgInfo: Organization }) => {\n  const { data: canSetEmailJitProvisioning } = useRbac('stytch.organization', 'update.settings.email-jit-provisioning');\n  const { data: canSetSsoJitProvisioning } = useRbac('stytch.organization', 'update.settings.sso-jit-provisioning');\n  const { data: canSetOAuthTenantJitProvisioning } = useRbac(\n    'stytch.organization',\n    'update.settings.oauth-tenant-jit-provisioning',\n  );\n  const { data: canSetEmailInvites } = useRbac('stytch.organization', 'update.settings.email-invites');\n  const { data: canSetAllowedDomains } = useRbac('stytch.organization', 'update.settings.allowed-domains');\n  const { data: canSetOAuthTenants } = useRbac('stytch.organization', 'update.settings.allowed-oauth-tenants');\n\n  const remoteState = useMemo<UserOnboardingFormState>(\n    () => ({\n      emailInvites: orgInfo.email_invites,\n      emailAllowedDomains: orgInfo.email_allowed_domains,\n      isEmailJitProvisioningAllowed: orgInfo.email_jit_provisioning !== 'NOT_ALLOWED',\n      ssoJitProvisioning: orgInfo.sso_jit_provisioning,\n      ssoAllowedConnections: orgInfo.sso_jit_provisioning_allowed_connections,\n      isOauthTenantJitProvisioningAllowed: orgInfo.oauth_tenant_jit_provisioning !== 'NOT_ALLOWED',\n      allowedOAuthTenants: orgInfo.allowed_oauth_tenants,\n    }),\n    [orgInfo],\n  );\n  const { localState, setLocalState, editing, handleSetEditing } = useFormState({ remoteState });\n  const { setOrgAuthSettings } = useMutateAuthSettings();\n  const { useBlockNavigation } = useOrgSettingsRouterController();\n  const handleSave = useCallback(async () => {\n    const mutatedProperties: Partial<B2BOrganizationsUpdateOptions> = {};\n    if (localState.isEmailJitProvisioningAllowed !== remoteState.isEmailJitProvisioningAllowed) {\n      mutatedProperties.email_jit_provisioning = localState.isEmailJitProvisioningAllowed\n        ? 'RESTRICTED'\n        : 'NOT_ALLOWED';\n    }\n    if (localState.emailInvites !== remoteState.emailInvites) {\n      mutatedProperties.email_invites = localState.emailInvites;\n    }\n    if (!arraysHaveSameContents(localState.emailAllowedDomains, remoteState.emailAllowedDomains)) {\n      mutatedProperties.email_allowed_domains = localState.emailAllowedDomains;\n    }\n    if (localState.ssoJitProvisioning !== remoteState.ssoJitProvisioning) {\n      mutatedProperties.sso_jit_provisioning = localState.ssoJitProvisioning;\n    }\n    if (!arraysHaveSameContents(localState.ssoAllowedConnections, remoteState.ssoAllowedConnections)) {\n      mutatedProperties.sso_jit_provisioning_allowed_connections = localState.ssoAllowedConnections;\n    }\n    if (localState.isOauthTenantJitProvisioningAllowed !== remoteState.isOauthTenantJitProvisioningAllowed) {\n      mutatedProperties.oauth_tenant_jit_provisioning = localState.isOauthTenantJitProvisioningAllowed\n        ? 'RESTRICTED'\n        : 'NOT_ALLOWED';\n    }\n    if (\n      !arraysHaveSameContents(\n        Object.entries(localState.allowedOAuthTenants),\n        Object.entries(remoteState.allowedOAuthTenants),\n      )\n    ) {\n      mutatedProperties.allowed_oauth_tenants = localState.allowedOAuthTenants;\n    }\n\n    if (Object.keys(mutatedProperties).length > 0) {\n      await setOrgAuthSettings(mutatedProperties);\n    }\n  }, [\n    localState.allowedOAuthTenants,\n    localState.emailAllowedDomains,\n    localState.emailInvites,\n    localState.isEmailJitProvisioningAllowed,\n    localState.isOauthTenantJitProvisioningAllowed,\n    localState.ssoAllowedConnections,\n    localState.ssoJitProvisioning,\n    remoteState.allowedOAuthTenants,\n    remoteState.emailAllowedDomains,\n    remoteState.emailInvites,\n    remoteState.isEmailJitProvisioningAllowed,\n    remoteState.isOauthTenantJitProvisioningAllowed,\n    remoteState.ssoAllowedConnections,\n    remoteState.ssoJitProvisioning,\n    setOrgAuthSettings,\n  ]);\n\n  const disableSave = useMemo(() => {\n    return (\n      arraysHaveSameContents(localState.emailAllowedDomains, remoteState.emailAllowedDomains) &&\n      localState.emailInvites === remoteState.emailInvites &&\n      localState.isEmailJitProvisioningAllowed === remoteState.isEmailJitProvisioningAllowed &&\n      localState.ssoJitProvisioning === remoteState.ssoJitProvisioning &&\n      arraysHaveSameContents(localState.ssoAllowedConnections, remoteState.ssoAllowedConnections) &&\n      localState.isOauthTenantJitProvisioningAllowed === remoteState.isOauthTenantJitProvisioningAllowed &&\n      arraysHaveSameContents(\n        Object.entries(localState.allowedOAuthTenants),\n        Object.entries(remoteState.allowedOAuthTenants),\n      )\n    );\n  }, [\n    localState.allowedOAuthTenants,\n    localState.emailAllowedDomains,\n    localState.emailInvites,\n    localState.isEmailJitProvisioningAllowed,\n    localState.isOauthTenantJitProvisioningAllowed,\n    localState.ssoAllowedConnections,\n    localState.ssoJitProvisioning,\n    remoteState.allowedOAuthTenants,\n    remoteState.emailAllowedDomains,\n    remoteState.emailInvites,\n    remoteState.isEmailJitProvisioningAllowed,\n    remoteState.isOauthTenantJitProvisioningAllowed,\n    remoteState.ssoAllowedConnections,\n    remoteState.ssoJitProvisioning,\n  ]);\n  return (\n    <SettingsContainer\n      hasCTA={\n        canSetEmailJitProvisioning ||\n        canSetEmailInvites ||\n        canSetAllowedDomains ||\n        canSetSsoJitProvisioning ||\n        canSetOAuthTenants ||\n        canSetOAuthTenantJitProvisioning\n      }\n      title=\"User onboarding\"\n      onSave={handleSave}\n      useBlockNavigation={useBlockNavigation}\n      editing={editing}\n      setEditing={handleSetEditing}\n      disableSave={disableSave}\n    >\n      <OrgSettingsUserOnboardingBody\n        canSetEmailJitProvisioning={canSetEmailJitProvisioning}\n        canSetEmailInvites={canSetEmailInvites}\n        canSetAllowedDomains={canSetAllowedDomains}\n        canSetSsoJitProvisioning={canSetSsoJitProvisioning}\n        canSetOAuthTenantJitProvisioning={canSetOAuthTenantJitProvisioning}\n        canSetOAuthTenants={canSetOAuthTenants}\n        localState={localState}\n        remoteState={remoteState}\n        setLocalState={setLocalState}\n      />\n    </SettingsContainer>\n  );\n};\n"],"names":["useMutateAuthSettings","mutate","useMutateOrganization","setOrgAuthSettings","mutatedProperties","errorMessage","emailAllowedDomainsRenderer","title","getValue","email","React","Typography","variant","allowedConnectionsRenderers","idToConnectionMap","id","displayName","NO_VALUE","getDisplayStatus","status","emailInvitesLabelMap","ALL_ALLOWED","RESTRICTED","ssoJitProvisioningLabelMap","PROVIDER_TENANT_ID_SEPARATOR","serializeProviderAndTenantId","providerType","tenantId","parseProviderAndTenantId","providerAndTenantId","provider","split","EmailDomainsTable","localState","remoteState","setLocalState","canSetAllowedDomains","editing","emailAllowedDomains","setEmail","useState","addEmailModalProps","useModalState","state","Set","SettingsSection","titleVariant","tooltipText","Modal","confirmButtonText","Input","label","onChange","placeholder","value","ListEditor","items","itemRenderer","onAdd","open","emptyText","getItemActionProps","item","warningAction","text","onClick","prevState","filter","domain","undefined","hideAddButton","addButtonText","SsoConnectionsTable","canSetSsoJitProvisioning","data","canGetConnectionPerm","useRbac","canGetConnection","connections","useConnections","ssoAllowedConnections","ssoJitProvisioning","handleSsoJitProvisioningChange","useStateSliceSetter","selectedSsoConnectionId","setSelectedSsoConnectionId","reduce","acc","connection","selectedConnections","availableConnections","val","has","openAddSsoConnectionModal","addSsoConnectionModalProps","ssoSelectItems","map","ssoAllowedConnectionsRenderers","showTable","renderAlert","Alert","renderListEditor","RadioGroup","readOnly","Object","entries","disableConfirm","Select","selectItems","useOAuthAccountModal","allowedOAuthTenants","onAddTenant","self","useSelf","orgConfigAuthMethods","useAllowedAuthMethods","linkedAccounts","useMemo","oauth_registrations","registration","includes","getMethodFromProvider","provider_type","toLowerCase","flatMap","provider_tenants","tenant","some","tenant_id","getDisplayTenantProvider","tenant_name","defaultManualMode","length","isManualMode","setIsManualMode","manualInputProvider","setManualInputProvider","manualInputTenantId","setManualInputTenantId","selectedLinkedAccountId","setSelectedLinkedAccountId","modalProps","getInput","reset","props","OAuthAccountModal","availableOAuthProviderSelectItems","hasLinkedAccounts","linkedAccountSelectItems","account","FlexBox","gap","flexDirection","Button","startIcon","AddIcon","compact","fullWidth","OAuthTenantsTable","canSetOAuthTenants","allowedOAuthTenantsList","tenants","sort","a","b","localeCompare","oauthModalProps","ALL_OAUTH_TENANT_PROVIDERS","getDisplayKnownTenantProvider","areOAuthProvidersAvailableToAdd","rowKeyExtractor","OrgSettingsUserOnboardingBody","canSetEmailInvites","canSetEmailJitProvisioning","canSetOAuthTenantJitProvisioning","useSettingsContainer","emailInvites","isEmailJitProvisioningAllowed","isOauthTenantJitProvisioningAllowed","handleEmailJitProvisioningChange","handleEmailInvitesChange","handleOAuthTenantJitProvisioningChange","ssoIsAllowedAuthMethod","oauthIsAllowedAuthMethod","isOauthMethod","oauthProvidersExist","keys","showEmailTable","showOAuthTable","showSsoComponents","showOAuthJitCheckbox","showSsoJitCheckbox","Switch","checked","PaddingLeft","flexWrap","Checkbox","disabled","OrgSettingsUserOnboardingSection","orgInfo","email_invites","email_allowed_domains","email_jit_provisioning","sso_jit_provisioning","sso_jit_provisioning_allowed_connections","oauth_tenant_jit_provisioning","allowed_oauth_tenants","handleSetEditing","useFormState","useBlockNavigation","useOrgSettingsRouterController","handleSave","useCallback","arraysHaveSameContents","disableSave","SettingsContainer","hasCTA","onSave","setEditing"],"mappings":"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"}