security.page.tsx 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. import { isClient } from '@growi/core';
  2. import {
  3. NextPage, GetServerSideProps, GetServerSidePropsContext,
  4. } from 'next';
  5. import { useTranslation } from 'next-i18next';
  6. import dynamic from 'next/dynamic';
  7. import { Container, Provider } from 'unstated';
  8. import AdminBasicSecurityContainer from '~/client/services/AdminBasicSecurityContainer';
  9. import AdminGeneralSecurityContainer from '~/client/services/AdminGeneralSecurityContainer';
  10. import AdminGitHubSecurityContainer from '~/client/services/AdminGitHubSecurityContainer';
  11. import AdminGoogleSecurityContainer from '~/client/services/AdminGoogleSecurityContainer';
  12. import AdminLdapSecurityContainer from '~/client/services/AdminLdapSecurityContainer';
  13. import AdminLocalSecurityContainer from '~/client/services/AdminLocalSecurityContainer';
  14. import AdminOidcSecurityContainer from '~/client/services/AdminOidcSecurityContainer';
  15. import AdminSamlSecurityContainer from '~/client/services/AdminSamlSecurityContainer';
  16. import AdminTwitterSecurityContainer from '~/client/services/AdminTwitterSecurityContainer';
  17. import { SupportedActionType } from '~/interfaces/activity';
  18. import { CommonProps, useCustomTitle } from '~/pages/utils/commons';
  19. import { retrieveServerSideProps } from '../../utils/admin-page-util';
  20. const AdminLayout = dynamic(() => import('~/components/Layout/AdminLayout'), { ssr: false });
  21. // const SecurityManagement = dynamic(() => import('./Security/SecurityManagement'), { ssr: false });
  22. const SecurityManagement = dynamic(() => import('~/components/Admin/Security/SecurityManagement'), { ssr: false });
  23. type Props = CommonProps & {
  24. currentUser: any,
  25. nodeVersion: string,
  26. npmVersion: string,
  27. yarnVersion: string,
  28. installedPlugins: any,
  29. envVars: any,
  30. isAclEnabled: boolean,
  31. isSearchServiceConfigured: boolean,
  32. isSearchServiceReachable: boolean,
  33. isMailerSetup: boolean,
  34. auditLogEnabled: boolean,
  35. auditLogAvailableActions: SupportedActionType[],
  36. customizeTitle: string,
  37. siteUrl: string,
  38. };
  39. const AdminAppPage: NextPage<Props> = (props) => {
  40. const { t } = useTranslation();
  41. const title = t('security_settings.security_settings');
  42. const adminSecurityContainers: Container<any>[] = [];
  43. if (isClient()) {
  44. const adminSecuritySettingElem = document.getElementById('admin-security-setting');
  45. if (adminSecuritySettingElem != null) {
  46. // Create unstated container instances (Security)
  47. const adminGeneralSecurityContainer = new AdminGeneralSecurityContainer();
  48. const adminLocalSecurityContainer = new AdminLocalSecurityContainer();
  49. const adminLdapSecurityContainer = new AdminLdapSecurityContainer();
  50. const adminSamlSecurityContainer = new AdminSamlSecurityContainer();
  51. const adminOidcSecurityContainer = new AdminOidcSecurityContainer();
  52. const adminBasicSecurityContainer = new AdminBasicSecurityContainer();
  53. const adminGoogleSecurityContainer = new AdminGoogleSecurityContainer();
  54. const adminGitHubSecurityContainer = new AdminGitHubSecurityContainer();
  55. const adminTwitterSecurityContainer = new AdminTwitterSecurityContainer();
  56. adminSecurityContainers.push(
  57. adminGeneralSecurityContainer,
  58. adminLocalSecurityContainer,
  59. adminLdapSecurityContainer,
  60. adminSamlSecurityContainer,
  61. adminOidcSecurityContainer,
  62. adminBasicSecurityContainer,
  63. adminGoogleSecurityContainer,
  64. adminGitHubSecurityContainer,
  65. adminTwitterSecurityContainer,
  66. );
  67. }
  68. }
  69. return (
  70. <Provider inject={[...adminSecurityContainers]}>
  71. <AdminLayout title={useCustomTitle(props, title)} componentTitle={title} >
  72. <SecurityManagement />
  73. </AdminLayout>
  74. </Provider>
  75. );
  76. };
  77. export const getServerSideProps: GetServerSideProps = async(context: GetServerSidePropsContext) => {
  78. const props = await retrieveServerSideProps(context);
  79. return props;
  80. };
  81. export default AdminAppPage;