import React from 'react'; import PropTypes from 'prop-types'; import { withTranslation } from 'react-i18next'; import { createSubscribedElement } from '../../UnstatedUtils'; import AppContainer from '../../../services/AppContainer'; import AdminSecurityContainer from '../../../services/AdminSecurityContainer'; import AdminSecurityLdapContainer from '../../../services/AdminSecutityLdapContainer'; class SecurityLdapSetting extends React.Component { render() { const { t, adminSecurityContainer, adminSecurityLdapContainer } = this.props; const { isLdapConfigEnabled } = adminSecurityContainer.state; return (

LDAP { t('security_setting.configuration') }

Use LDAP
{ adminSecurityContainer.switchIsLdapEnabled() }} />
{isLdapConfigEnabled && (
adminSecurityLdapContainer.changeServerUrl(e.target.value)} />

{ t('security_setting.example') }: ldaps://ldap.company.com/ou=people,dc=company,dc=com

{ t('security_setting.ldap.bind_mode') }
{/* TODO adjust dropdown after BS4 */}
Bind DN
adminSecurityLdapContainer.changeBindDN(e.target.value)} /> {(adminSecurityLdapContainer.state.bindMode === 'manager') ? (

{ t('security_setting.ldap.bind_DN_manager_detail') }
{ t('security_setting.example') }1: uid=admin,dc=domain,dc=com
{ t('security_setting.example') }2: admin@domain.com

) : (

{ t('security_setting.ldap.bind_DN_user_detail1')}
{/* eslint-disable-next-line react/no-danger */}
{ t('security_setting.example') }1: uid={'{{ username }}'},dc=domain,dc=com
{ t('security_setting.example') }2: {'{{ username }}'}@domain.com

)}
adminSecurityLdapContainer.changeBindDNPassword(e.target.value)} /> {(adminSecurityLdapContainer.state.bindMode === 'manager') ? (

{ t('security_setting.ldap.bind_DN_password_manager_detail') }

) : (

{ t('security_setting.ldap.bind_DN_password_user_detail') }

)}
{ t('security_setting.ldap.search_filter') }
adminSecurityLdapContainer.changeSearchFilter(e.target.value)} />

{ t('security_setting.ldap.search_filter_detail1') }
{/* eslint-disable-next-line react/no-danger */}
{/* eslint-disable-next-line react/no-danger */}

{ t('security_setting.example') }1 - { t('security_setting.ldap.search_filter_example1') }: (|(uid={'{{ username }}'})(mail={'{{ username }}'}))
{ t('security_setting.example') }2 - { t('security_setting.ldap.search_filter_example2') }: (sAMAccountName={'{{ username }}'})

Attribute Mapping ({ t('security_setting.optional') })

{t('username')}
adminSecurityLdapContainer.changeAttrMapUsername(e.target.value)} />

{/* eslint-disable-next-line react/no-danger */}

{ adminSecurityLdapContainer.switchCbSameUsernameTreatedAsIdenticalUser() }} />

{/* eslint-disable-next-line react/no-danger */}

{ t('Email') }
adminSecurityLdapContainer.changeAttrMapMail(e.target.value)} />

{ t('security_setting.ldap.mail_detail') }

{ t('Name') }
adminSecurityLdapContainer.changeAttrMapName(e.target.value)} />

{ t('security_setting.ldap.name_detail') }

{ t('security_setting.ldap.group_search_filter') } ({ t('security_setting.optional') })

{ t('security_setting.ldap.group_search_base_DN') }
adminSecurityLdapContainer.changeGroupSearchBase(e.target.value)} />

{/* eslint-disable-next-line react/no-danger */}
{ t('security_setting.example') }: ou=groups,dc=domain,dc=com

{ t('security_setting.ldap.group_search_filter') }
adminSecurityLdapContainer.changeGroupSearchFilter(e.target.value)} />

{/* eslint-disable react/no-danger */}

{/* eslint-enable react/no-danger */}

{ t('security_setting.example') }: {/* eslint-disable-next-line react/no-danger */}

adminSecurityLdapContainer.changeGroupDnProperty(e.target.value)} />

{/* eslint-disable-next-line react/no-danger */}

)}
); } } SecurityLdapSetting.propTypes = { t: PropTypes.func.isRequired, // i18next appContainer: PropTypes.instanceOf(AppContainer).isRequired, adminSecurityContainer: PropTypes.instanceOf(AdminSecurityContainer).isRequired, adminSecurityLdapContainer: PropTypes.instanceOf(AdminSecurityLdapContainer).isRequired, }; const SecurityLdapSettingWrapper = (props) => { return createSubscribedElement(SecurityLdapSetting, props, [AppContainer, AdminSecurityContainer, AdminSecurityLdapContainer]); }; export default withTranslation()(SecurityLdapSettingWrapper);