{"version":3,"file":"TLSAuthSettings.cjs","sources":["../../../../src/components/DataSourceSettings/TLSAuthSettings.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { KeyValue } from '@grafana/data';\nimport { t, Trans } from '@grafana/i18n';\n\nimport { FormField } from '../FormField/FormField';\nimport { Icon } from '../Icon/Icon';\nimport { Box } from '../Layout/Box/Box';\nimport { Stack } from '../Layout/Stack/Stack';\nimport { Tooltip } from '../Tooltip/Tooltip';\n\nimport { CertificationKey } from './CertificationKey';\nimport { HttpSettingsBaseProps } from './types';\n\nexport const TLSAuthSettings = ({ dataSourceConfig, onChange }: HttpSettingsBaseProps) => {\n  const hasTLSCACert = dataSourceConfig.secureJsonFields && dataSourceConfig.secureJsonFields.tlsCACert;\n  const hasTLSClientCert = dataSourceConfig.secureJsonFields && dataSourceConfig.secureJsonFields.tlsClientCert;\n  const hasTLSClientKey = dataSourceConfig.secureJsonFields && dataSourceConfig.secureJsonFields.tlsClientKey;\n  const hasServerName = dataSourceConfig.jsonData && dataSourceConfig.jsonData.serverName;\n\n  const onResetClickFactory = (field: string) => (event: React.MouseEvent<HTMLButtonElement>) => {\n    event.preventDefault();\n    const newSecureJsonFields: KeyValue<boolean> = { ...dataSourceConfig.secureJsonFields };\n    newSecureJsonFields[field] = false;\n    onChange({\n      ...dataSourceConfig,\n      secureJsonFields: newSecureJsonFields,\n    });\n  };\n\n  const onCertificateChangeFactory = (field: string) => (event: React.SyntheticEvent<HTMLTextAreaElement>) => {\n    const newSecureJsonData = { ...dataSourceConfig.secureJsonData };\n    newSecureJsonData[field] = event.currentTarget.value;\n\n    onChange({\n      ...dataSourceConfig,\n      secureJsonData: newSecureJsonData,\n    });\n  };\n\n  const onServerNameLabelChange = (event: React.SyntheticEvent<HTMLInputElement>) => {\n    const newJsonData = {\n      ...dataSourceConfig.jsonData,\n      serverName: event.currentTarget.value,\n    };\n\n    onChange({\n      ...dataSourceConfig,\n      jsonData: newJsonData,\n    });\n  };\n\n  const certificateBeginsWith = '-----BEGIN CERTIFICATE-----';\n  const privateKeyBeginsWith = '-----BEGIN RSA PRIVATE KEY-----';\n\n  return (\n    <Box marginBottom={5}>\n      <Box marginBottom={0.5} position=\"relative\">\n        <Stack direction=\"row\" alignItems=\"baseline\">\n          <h6>\n            <Trans i18nKey=\"grafana-ui.data-source-settings.tls-heading\">TLS/SSL Auth Details</Trans>\n          </h6>\n          <Tooltip\n            placement=\"right-end\"\n            content={t(\n              'grafana-ui.data-source-settings.tls-tooltip',\n              'TLS/SSL Certs are encrypted and stored in the Grafana database.'\n            )}\n            theme=\"info\"\n          >\n            <Icon name=\"info-circle\" size=\"xs\" style={{ marginLeft: '10px' }} />\n          </Tooltip>\n        </Stack>\n      </Box>\n      <div>\n        {dataSourceConfig.jsonData.tlsAuthWithCACert && (\n          <CertificationKey\n            hasCert={!!hasTLSCACert}\n            onChange={onCertificateChangeFactory('tlsCACert')}\n            placeholder={t(\n              'grafana-ui.data-source-settings.tls-certification-placeholder',\n              'Begins with {{certificateBeginsWith}}',\n              { certificateBeginsWith }\n            )}\n            label={t('grafana-ui.data-source-settings.tls-certification-label', 'CA Cert')}\n            onClick={onResetClickFactory('tlsCACert')}\n          />\n        )}\n\n        {dataSourceConfig.jsonData.tlsAuth && (\n          <>\n            <Box marginBottom={0.5} position=\"relative\">\n              <Stack direction=\"row\" alignItems=\"baseline\">\n                <FormField\n                  label={t('grafana-ui.data-source-settings.tls-server-name-label', 'ServerName')}\n                  labelWidth={7}\n                  inputWidth={30}\n                  // eslint-disable-next-line @grafana/i18n/no-untranslated-strings\n                  placeholder=\"domain.example.com\"\n                  value={hasServerName && dataSourceConfig.jsonData.serverName}\n                  onChange={onServerNameLabelChange}\n                />\n              </Stack>\n            </Box>\n            <CertificationKey\n              hasCert={!!hasTLSClientCert}\n              label={t('grafana-ui.data-source-settings.tls-client-certification-label', 'Client Cert')}\n              onChange={onCertificateChangeFactory('tlsClientCert')}\n              placeholder={t(\n                'grafana-ui.data-source-settings.tls-certification-placeholder',\n                'Begins with {{certificateBeginsWith}}',\n                { certificateBeginsWith }\n              )}\n              onClick={onResetClickFactory('tlsClientCert')}\n            />\n\n            <CertificationKey\n              hasCert={!!hasTLSClientKey}\n              label={t('grafana-ui.data-source-settings.tls-client-key-label', 'Client Key')}\n              placeholder={t(\n                'grafana-ui.data-source-settings.tls-client-key-placeholder',\n                'Begins with {{privateKeyBeginsWith}}',\n                { privateKeyBeginsWith }\n              )}\n              onChange={onCertificateChangeFactory('tlsClientKey')}\n              onClick={onResetClickFactory('tlsClientKey')}\n            />\n          </>\n        )}\n      </div>\n    </Box>\n  );\n};\n"],"names":["jsxs","Box","jsx","Stack","Trans","Tooltip","t","Icon","CertificationKey","Fragment","FormField"],"mappings":"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"}