SecurityManagement.jsx 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. import React, { Fragment } from 'react';
  2. import PropTypes from 'prop-types';
  3. import { withTranslation } from 'react-i18next';
  4. import { createSubscribedElement } from '../../UnstatedUtils';
  5. import AppContainer from '../../../services/AppContainer';
  6. import LdapSecuritySetting from './LdapSecuritySetting';
  7. import LocalSecuritySetting from './LocalSecuritySetting';
  8. import SamlSecuritySetting from './SamlSecuritySetting';
  9. import OidcSecuritySetting from './OidcSecuritySetting';
  10. import SecuritySetting from './SecuritySetting';
  11. import BasicSecuritySetting from './BasicSecuritySetting';
  12. import GoogleSecuritySetting from './GoogleSecuritySetting';
  13. import GitHubSecuritySetting from './GitHubSecuritySetting';
  14. import TwitterSecuritySetting from './TwitterSecuritySetting';
  15. import FacebookSecuritySetting from './FacebookSecuritySetting';
  16. class SecurityManagement extends React.Component {
  17. constructor(props) {
  18. super();
  19. }
  20. render() {
  21. const { t } = this.props;
  22. return (
  23. <Fragment>
  24. <div>
  25. <SecuritySetting />
  26. </div>
  27. {/* XSS configuration link */}
  28. <div className="mb-5">
  29. <h2 className="border-bottom">{t('security_setting.xss_prevent_setting')}</h2>
  30. <div className="text-center">
  31. <a style={{ fontSize: 'large' }} href="/admin/markdown/#preventXSS">
  32. <i className="fa-fw icon-login"></i> {t('security_setting.xss_prevent_setting_link')}
  33. </a>
  34. </div>
  35. </div>
  36. {/* TODO GW-226 adapt BS4 */}
  37. <div className="auth-mechanism-configurations m-t-10">
  38. <h2 className="border-bottom">{t('security_setting.Authentication mechanism settings')}</h2>
  39. <div className="passport-settings">
  40. <ul className="nav nav-tabs" role="tablist">
  41. <li className="active">
  42. <a href="#passport-local" data-toggle="tab" role="tab"><i className="fa fa-users"></i> ID/Pass</a>
  43. </li>
  44. <li>
  45. <a href="#passport-ldap" data-toggle="tab" role="tab"><i className="fa fa-sitemap"></i> LDAP</a>
  46. </li>
  47. <li>
  48. <a href="#passport-saml" data-toggle="tab" role="tab"><i className="fa fa-key"></i> SAML</a>
  49. </li>
  50. <li>
  51. <a href="#passport-oidc" data-toggle="tab" role="tab"><i className="fa fa-openid"></i> OIDC</a>
  52. </li>
  53. <li>
  54. <a href="#passport-basic" data-toggle="tab" role="tab"><i className="fa fa-lock"></i> Basic</a>
  55. </li>
  56. <li>
  57. <a href="#passport-google-oauth" data-toggle="tab" role="tab"><i className="fa fa-google"></i> Google</a>
  58. </li>
  59. <li>
  60. <a href="#passport-github" data-toggle="tab" role="tab"><i className="fa fa-github"></i> GitHub</a>
  61. </li>
  62. <li>
  63. <a href="#passport-twitter" data-toggle="tab" role="tab"><i className="fa fa-twitter"></i> Twitter</a>
  64. </li>
  65. <li className="tbd">
  66. <a href="#passport-facebook" data-toggle="tab" role="tab"><i className="fa fa-facebook"></i> (TBD) Facebook</a>
  67. </li>
  68. </ul>
  69. <div className="tab-content p-t-10">
  70. <div id="passport-local" className="tab-pane active" role="tabpanel">
  71. <LocalSecuritySetting />
  72. </div>
  73. <div id="passport-ldap" className="tab-pane" role="tabpanel">
  74. <LdapSecuritySetting />
  75. </div>
  76. <div id="passport-saml" className="tab-pane" role="tabpanel">
  77. <SamlSecuritySetting />
  78. </div>
  79. <div id="passport-oidc" className="tab-pane" role="tabpanel">
  80. <OidcSecuritySetting />
  81. </div>
  82. <div id="passport-basic" className="tab-pane" role="tabpanel">
  83. <BasicSecuritySetting />
  84. </div>
  85. <div id="passport-google-oauth" className="tab-pane" role="tabpanel">
  86. <GoogleSecuritySetting />
  87. </div>
  88. <div id="passport-github" className="tab-pane" role="tabpanel">
  89. <GitHubSecuritySetting />
  90. </div>
  91. <div id="passport-twitter" className="tab-pane" role="tabpanel">
  92. <TwitterSecuritySetting />
  93. </div>
  94. <div id="passport-facebook" className="tab-pane" role="tabpanel">
  95. <FacebookSecuritySetting />
  96. </div>
  97. </div>
  98. </div>
  99. </div>
  100. </Fragment>
  101. );
  102. }
  103. }
  104. SecurityManagement.propTypes = {
  105. t: PropTypes.func.isRequired, // i18next
  106. appContainer: PropTypes.instanceOf(AppContainer).isRequired,
  107. csrf: PropTypes.string,
  108. };
  109. const SecurityManagementWrapper = (props) => {
  110. return createSubscribedElement(SecurityManagement, props, [AppContainer]);
  111. };
  112. export default withTranslation()(SecurityManagementWrapper);