{"version":3,"file":"TLSAuthSettings.mjs","sources":["../../../../src/components/DataSourceSettings/TLSAuthSettings.tsx"],"sourcesContent":["import { css, cx } from '@emotion/css';\nimport * as React from 'react';\n\nimport { KeyValue } from '@grafana/data';\n\nimport { t, Trans } from '../../utils/i18n';\nimport { FormField } from '../FormField/FormField';\nimport { Icon } from '../Icon/Icon';\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    <div className=\"gf-form-group\">\n      <div\n        className={cx(\n          'gf-form',\n          css({\n            alignItems: 'baseline',\n          })\n        )}\n      >\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      </div>\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            <div className=\"gf-form\">\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/no-untranslated-strings\n                placeholder=\"domain.example.com\"\n                value={hasServerName && dataSourceConfig.jsonData.serverName}\n                onChange={onServerNameLabelChange}\n              />\n            </div>\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    </div>\n  );\n};\n"],"names":[],"mappings":"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"}