in frontend/src/old-pages/Configure/MultiUser.tsx [148:298]
function MultiUser() {
const {t} = useTranslation()
const generateSshKeys = useState(generateSshKeysPath)
const onGenerateSshKeysChange: NonCancelableEventHandler<CheckboxProps.ChangeDetail> =
React.useCallback(({detail}) => {
setState(generateSshKeysPath, detail.checked)
}, [])
React.useEffect(() => {
if (generateSshKeys === null) setState(generateSshKeysPath, true)
}, [generateSshKeys])
return (
<Container
header={
<Header
variant="h2"
info={<InfoLink helpPanel={<MultiUserHelpPanel />} />}
>
{t('wizard.cluster.multiUser.title')}
</Header>
}
>
<SpaceBetween direction="vertical" size="s">
<HelpTextInput
name={t('wizard.cluster.multiUser.domainName.name')}
path={dsPath}
errorsPath={errorsPath}
configKey={'DomainName'}
description={t('wizard.cluster.multiUser.domainName.description')}
placeholder={'dc=corp,dc=pcluster,dc=com'}
help={t('wizard.cluster.multiUser.domainName.help')}
onChange={({detail}) => {
setState([...dsPath, 'DomainName'], detail.value)
}}
/>
<HelpTextInput
name={t('wizard.cluster.multiUser.domainAddress.name')}
path={dsPath}
errorsPath={errorsPath}
configKey={'DomainAddr'}
description={t('wizard.cluster.multiUser.domainAddress.description')}
placeholder={'ldaps://corp.pcluster.com'}
help={t('wizard.cluster.multiUser.domainAddress.help')}
onChange={({detail}) => {
setState([...dsPath, 'DomainAddr'], detail.value)
}}
/>
<HelpTextInput
name={t('wizard.cluster.multiUser.passwordSecretArn.name')}
path={dsPath}
errorsPath={errorsPath}
configKey={'PasswordSecretArn'}
description={t(
'wizard.cluster.multiUser.passwordSecretArn.description',
)}
placeholder={
'arn:aws:secretsmanager:region:000000000000:secret:secret_name'
}
help={t('wizard.cluster.multiUser.passwordSecretArn.help')}
onChange={({detail}) => {
setState([...dsPath, 'PasswordSecretArn'], detail.value)
}}
/>
<HelpTextInput
name={t('wizard.cluster.multiUser.domainReadOnlyUser.name')}
path={dsPath}
errorsPath={errorsPath}
configKey={'DomainReadOnlyUser'}
description={t(
'wizard.cluster.multiUser.domainReadOnlyUser.description',
)}
placeholder={
'cn=ReadOnlyUser,ou=Users,ou=CORP,dc=corp,dc=pcluster,dc=com'
}
help={t('wizard.cluster.multiUser.domainReadOnlyUser.help')}
onChange={({detail}) => {
setState([...dsPath, 'DomainReadOnlyUser'], detail.value)
}}
/>
<ExpandableSection
headerText={t('wizard.cluster.multiUser.advancedOptionsLabel')}
>
<SpaceBetween direction="vertical" size="s">
<HelpTextInput
name={t('wizard.cluster.multiUser.caCertificate.name')}
path={dsPath}
errorsPath={errorsPath}
configKey={'LdapTlsCaCert'}
description={t(
'wizard.cluster.multiUser.caCertificate.description',
)}
placeholder={'/path/to/certificate.pem'}
help={t('wizard.cluster.multiUser.caCertificate.help')}
onChange={({detail}) => {
setState([...dsPath, 'LdapTlsCaCert'], detail.value)
}}
/>
<HelpTextInput
name={t('wizard.cluster.multiUser.requireCertificate.name')}
path={dsPath}
errorsPath={errorsPath}
configKey={'LdapTlsReqCert'}
description={t(
'wizard.cluster.multiUser.requireCertificate.description',
)}
placeholder={'hard'}
help={t('wizard.cluster.multiUser.requireCertificate.help')}
onChange={({detail}) => {
setState([...dsPath, 'LdapTlsReqCert'], detail.value)
}}
/>
<HelpTextInput
name={t('wizard.cluster.multiUser.LDAPAccessFilter.name')}
path={dsPath}
errorsPath={errorsPath}
configKey={'LdapAccessFilter'}
description={t(
'wizard.cluster.multiUser.LDAPAccessFilter.description',
)}
placeholder={
'memberOf=cn=TeamOne,ou=Users,ou=CORP,dc=corp,dc=pcluster,dc=com'
}
help={t('wizard.cluster.multiUser.LDAPAccessFilter.help')}
onChange={({detail}) => {
setState([...dsPath, 'LdapAccessFilter'], detail.value)
}}
/>
<CheckboxWithHelpPanel
checked={generateSshKeys}
onChange={onGenerateSshKeysChange}
helpPanel={
<TitleDescriptionHelpPanel
title={t('wizard.cluster.multiUser.generateSSHKeys.name')}
description={
<Trans i18nKey="wizard.cluster.multiUser.generateSSHKeys.help" />
}
/>
}
>
{t('wizard.cluster.multiUser.generateSSHKeys.name')}
</CheckboxWithHelpPanel>
<AdditionalSssdOptions />
</SpaceBetween>
</ExpandableSection>
</SpaceBetween>
</Container>
)
}