import React, { Fragment } from 'react'; import PropTypes from 'prop-types'; import { withTranslation } from 'react-i18next'; import { TabContent, TabPane, Nav, NavItem, NavLink, } from 'reactstrap'; import { createSubscribedElement } from '../../UnstatedUtils'; import AppContainer from '../../../services/AppContainer'; import LdapSecuritySetting from './LdapSecuritySetting'; import LocalSecuritySetting from './LocalSecuritySetting'; import SamlSecuritySetting from './SamlSecuritySetting'; import OidcSecuritySetting from './OidcSecuritySetting'; import SecuritySetting from './SecuritySetting'; import BasicSecuritySetting from './BasicSecuritySetting'; import GoogleSecuritySetting from './GoogleSecuritySetting'; import GitHubSecuritySetting from './GitHubSecuritySetting'; import TwitterSecuritySetting from './TwitterSecuritySetting'; import FacebookSecuritySetting from './FacebookSecuritySetting'; class SecurityManagement extends React.Component { constructor() { super(); this.state = { activeTab: 'passport-local', // Prevent unnecessary rendering activeComponents: new Set(['passport-local']), }; this.toggleActiveTab = this.toggleActiveTab.bind(this); } toggleActiveTab(activeTab) { this.setState({ activeTab, activeComponents: this.state.activeComponents.add(activeTab), }); } render() { const { t } = this.props; const { activeTab, activeComponents } = this.state; return (
{/* XSS configuration link */}

{t('security_setting.xss_prevent_setting')}

{t('security_setting.xss_prevent_setting_link')}

{t('security_setting.Authentication mechanism settings')}

{activeComponents.has('passport-local') && } {activeComponents.has('passport-ldap') && } {activeComponents.has('passport-saml') && } {activeComponents.has('passport-oidc') && } {activeComponents.has('passport-basic') && } {activeComponents.has('passport-google') && } {activeComponents.has('passport-github') && } {activeComponents.has('passport-twitter') && } {activeComponents.has('passport-facebook') && }
); } } SecurityManagement.propTypes = { t: PropTypes.func.isRequired, // i18next appContainer: PropTypes.instanceOf(AppContainer).isRequired, csrf: PropTypes.string, }; const SecurityManagementWrapper = (props) => { return createSubscribedElement(SecurityManagement, props, [AppContainer]); }; export default withTranslation()(SecurityManagementWrapper);