/* eslint-disable react/no-danger */ import React from 'react'; import PropTypes from 'prop-types'; import { withTranslation } from 'react-i18next'; import { withUnstatedContainers } from '../../UnstatedUtils'; import { toastSuccess, toastError } from '../../../util/apiNotification'; import AppContainer from '../../../services/AppContainer'; import AdminGeneralSecurityContainer from '../../../services/AdminGeneralSecurityContainer'; import AdminSamlSecurityContainer from '../../../services/AdminSamlSecurityContainer'; class SamlSecurityManagement extends React.Component { constructor(props) { super(props); this.state = { isRetrieving: true, envEntryPoint: '', envIssuer: '', envCert: '', envAttrMapId: '', envAttrMapUsername: '', envAttrMapMail: '', envAttrMapFirstName: '', envAttrMapLastName: '', envABLCRule: '', }; this.onClickSubmit = this.onClickSubmit.bind(this); } async componentDidMount() { const { adminSamlSecurityContainer } = this.props; try { const samlAuth = await adminSamlSecurityContainer.retrieveSecurityData(); this.setState({ envEntryPoint: samlAuth.samlEnvVarEntryPoint, envIssuer: samlAuth.samlEnvVarIssuer, envCert: samlAuth.samlEnvVarCert, envAttrMapId: samlAuth.samlEnvVarAttrMapId, envAttrMapUsername: samlAuth.samlEnvVarAttrMapUsername, envAttrMapMail: samlAuth.samlEnvVarAttrMapMail, envAttrMapFirstName: samlAuth.samlEnvVarAttrMapFirstName, envAttrMapLastName: samlAuth.samlEnvVarAttrMapLastName, envABLCRule: samlAuth.samlEnvVarABLCRule, }); } catch (err) { toastError(err); } this.setState({ isRetrieving: false }); } async onClickSubmit() { const { t, adminSamlSecurityContainer, adminGeneralSecurityContainer } = this.props; try { await adminSamlSecurityContainer.updateSamlSetting(); await adminGeneralSecurityContainer.retrieveSetupStratedies(); toastSuccess(t('security_setting.SAML.updated_saml')); } catch (err) { toastError(err); } } render() { const { t, adminGeneralSecurityContainer, adminSamlSecurityContainer } = this.props; const { useOnlyEnvVars } = adminSamlSecurityContainer.state; const { isSamlEnabled } = adminGeneralSecurityContainer.state; if (this.state.isRetrieving) { return null; } return (

{t('security_setting.SAML.name')}

{useOnlyEnvVars && (

)}

{ adminGeneralSecurityContainer.switchIsSamlEnabled() }} disabled={adminSamlSecurityContainer.state.useOnlyEnvVars} />
{(!adminGeneralSecurityContainer.state.setupStrategies.includes('ldap') && isSamlEnabled) &&
{t('security_setting.setup_is_not_yet_complete')}
}

{t('security_setting.desc_of_callback_URL', { AuthName: 'SAML Identity' })}

{!adminGeneralSecurityContainer.state.appSiteUrl && (
${t('App Settings')}` }) }} />
)}
{isSamlEnabled && ( {(adminSamlSecurityContainer.state.missingMandatoryConfigKeys.length !== 0) && (
{t('security_setting.missing mandatory configs')}
    {adminSamlSecurityContainer.state.missingMandatoryConfigKeys.map((configKey) => { const key = configKey.replace('security:passport-saml:', ''); return
  • {t(`security_setting.form_item_name.${key}`)}
  • ; })}
)}

Basic Settings

DatabaseEnvironment variables
{t('security_setting.form_item_name.entryPoint')} adminSamlSecurityContainer.changeSamlEntryPoint(e.target.value)} />

{t('security_setting.form_item_name.issuer')} adminSamlSecurityContainer.changeSamlIssuer(e.target.value)} />

{t('security_setting.form_item_name.cert')}