Просмотр исходного кода

declare injectServerConfigurations for each page

kaori 3 лет назад
Родитель
Сommit
e47a5b279a

+ 0 - 2
packages/app/src/pages/admin/app.page.tsx

@@ -26,7 +26,6 @@ const AdminAppPage: NextPage<CommonProps> = (props) => {
     injectableContainers.push(adminAppContainer);
   }
 
-
   return (
     <Provider inject={[...injectableContainers]}>
       <AdminLayout title={useCustomTitle(props, title)} componentTitle={title} >
@@ -34,7 +33,6 @@ const AdminAppPage: NextPage<CommonProps> = (props) => {
       </AdminLayout>
     </Provider>
   );
-
 };
 
 

+ 12 - 2
packages/app/src/pages/admin/audit-log.page.tsx

@@ -4,7 +4,7 @@ import {
 import { useTranslation } from 'next-i18next';
 import dynamic from 'next/dynamic';
 
-
+import { CrowiRequest } from '~/interfaces/crowi-request';
 import { SupportedActionType } from '~/interfaces/activity';
 import { CommonProps, useCustomTitle } from '~/pages/utils/commons';
 import { useAuditLogEnabled, useAuditLogAvailableActions } from '~/stores/context';
@@ -37,9 +37,19 @@ const AdminAuditLogPage: NextPage<Props> = (props) => {
 
 };
 
+const injectServerConfigurations = async(context: GetServerSidePropsContext, props: Props): Promise<void> => {
+  const req: CrowiRequest = context.req as CrowiRequest;
+  const { crowi } = req;
+  const { activityService } = crowi;
+
+  props.auditLogEnabled = crowi.configManager.getConfig('crowi', 'app:auditLogEnabled');
+  props.auditLogAvailableActions = activityService.getAvailableActions(false);
+}
+
+
 
 export const getServerSideProps: GetServerSideProps = async(context: GetServerSidePropsContext) => {
-  const props = await retrieveServerSideProps(context);
+  const props = await retrieveServerSideProps(context, injectServerConfigurations);
   return props;
 };
 

+ 10 - 2
packages/app/src/pages/admin/customize.page.tsx

@@ -5,6 +5,7 @@ import {
 import { useTranslation } from 'next-i18next';
 import dynamic from 'next/dynamic';
 import { Container, Provider } from 'unstated';
+import { CrowiRequest } from '~/interfaces/crowi-request';
 
 import AdminCustomizeContainer from '~/client/services/AdminCustomizeContainer';
 import { CommonProps, useCustomTitle } from '~/pages/utils/commons';
@@ -44,12 +45,19 @@ const AdminCustomizeSettingsPage: NextPage<Props> = (props) => {
       </AdminLayout>
     </Provider>
   );
-
 };
 
 
+
+const injectServerConfigurations = async(context: GetServerSidePropsContext, props: Props): Promise<void> => {
+  const req: CrowiRequest = context.req as CrowiRequest;
+  const { crowi } = req;
+
+  props.customizeTitle = crowi.configManager.getConfig('crowi', 'customize:title');
+}
+
 export const getServerSideProps: GetServerSideProps = async(context: GetServerSidePropsContext) => {
-  const props = await retrieveServerSideProps(context);
+  const props = await retrieveServerSideProps(context, injectServerConfigurations);
   return props;
 };
 

+ 16 - 2
packages/app/src/pages/admin/index.page.tsx

@@ -5,6 +5,8 @@ import {
 import { useTranslation } from 'next-i18next';
 import dynamic from 'next/dynamic';
 import { Container, Provider } from 'unstated';
+import PluginUtils from '~/server/plugins/plugin-utils';
+import { CrowiRequest } from '~/interfaces/crowi-request';
 
 import AdminHomeContainer from '~/client/services/AdminHomeContainer';
 import { CommonProps, useCustomTitle } from '~/pages/utils/commons';
@@ -48,12 +50,24 @@ const AdminHomePage: NextPage<Props> = (props) => {
       </AdminLayout>
     </Provider>
   );
-
 };
 
 
+const injectServerConfigurations = async(context: GetServerSidePropsContext, props: Props): Promise<void> => {
+  const req: CrowiRequest = context.req as CrowiRequest;
+  const { crowi } = req;
+  const pluginUtils = new PluginUtils();
+
+  props.nodeVersion = crowi.runtimeVersions.versions.node ? crowi.runtimeVersions.versions.node.version.version : null;
+  props.npmVersion = crowi.runtimeVersions.versions.npm ? crowi.runtimeVersions.versions.npm.version.version : null;
+  props.yarnVersion = crowi.runtimeVersions.versions.yarn ? crowi.runtimeVersions.versions.yarn.version.version : null;
+  props.installedPlugins = pluginUtils.listPlugins();
+}
+
+
+
 export const getServerSideProps: GetServerSideProps = async(context: GetServerSidePropsContext) => {
-  const props = await retrieveServerSideProps(context);
+  const props = await retrieveServerSideProps(context, injectServerConfigurations);
   return props;
 };
 

+ 0 - 2
packages/app/src/pages/admin/markdown.page.tsx

@@ -15,8 +15,6 @@ const AdminLayout = dynamic(() => import('~/components/Layout/AdminLayout'), { s
 const MarkDownSettingContents = dynamic(() => import('~/components/Admin/MarkdownSetting/MarkDownSettingContents'), { ssr: false });
 
 
-
-
 const AdminMarkdownPage: NextPage<CommonProps> = (props) => {
   const { t } = useTranslation();
 

+ 10 - 1
packages/app/src/pages/admin/search.page.tsx

@@ -4,6 +4,7 @@ import {
 import { useTranslation } from 'next-i18next';
 import dynamic from 'next/dynamic';
 
+import { CrowiRequest } from '~/interfaces/crowi-request';
 import { CommonProps, useCustomTitle } from '~/pages/utils/commons';
 import { useIsSearchServiceReachable } from '~/stores/context';
 
@@ -32,9 +33,17 @@ const AdminFullTextSearchManagementPage: NextPage<Props> = (props) => {
   );
 };
 
+const injectServerConfigurations = async(context: GetServerSidePropsContext, props: Props): Promise<void> => {
+  const req: CrowiRequest = context.req as CrowiRequest;
+  const { crowi } = req;
+  const { searchService } = crowi;
+
+  props.isSearchServiceReachable = searchService.isReachable;
+}
+
 
 export const getServerSideProps: GetServerSideProps = async(context: GetServerSidePropsContext) => {
-  const props = await retrieveServerSideProps(context);
+  const props = await retrieveServerSideProps(context, injectServerConfigurations);
   return props;
 };
 

+ 12 - 2
packages/app/src/pages/admin/security.page.tsx

@@ -5,6 +5,7 @@ import {
 import { useTranslation } from 'next-i18next';
 import dynamic from 'next/dynamic';
 import { Container, Provider } from 'unstated';
+import { CrowiRequest } from '~/interfaces/crowi-request';
 
 import AdminBasicSecurityContainer from '~/client/services/AdminBasicSecurityContainer';
 import AdminGeneralSecurityContainer from '~/client/services/AdminGeneralSecurityContainer';
@@ -76,12 +77,21 @@ const AdminSecuritySettingsPage: NextPage<Props> = (props) => {
       </AdminLayout>
     </Provider>
   );
-
 };
 
+const injectServerConfigurations = async(context: GetServerSidePropsContext, props: Props): Promise<void> => {
+  const req: CrowiRequest = context.req as CrowiRequest;
+  const { crowi } = req;
+  const { appService, mailService } = crowi;
+
+  props.siteUrl = appService.getSiteUrl();
+  props.isMailerSetup = mailService.isMailerSetup;
+}
+
+
 
 export const getServerSideProps: GetServerSideProps = async(context: GetServerSidePropsContext) => {
-  const props = await retrieveServerSideProps(context);
+  const props = await retrieveServerSideProps(context, injectServerConfigurations);
   return props;
 };
 

+ 11 - 2
packages/app/src/pages/admin/slack-integration.page.tsx

@@ -4,8 +4,8 @@ import {
 import { useTranslation } from 'next-i18next';
 import dynamic from 'next/dynamic';
 
+import { CrowiRequest } from '~/interfaces/crowi-request';
 import { CommonProps, useCustomTitle } from '~/pages/utils/commons';
-
 import { retrieveServerSideProps } from '../../utils/admin-page-util';
 
 import { useSiteUrl } from '~/stores/context';
@@ -33,8 +33,17 @@ const AdminSlackIntegrationPage: NextPage<Props> = (props) => {
 };
 
 
+const injectServerConfigurations = async(context: GetServerSidePropsContext, props: Props): Promise<void> => {
+  const req: CrowiRequest = context.req as CrowiRequest;
+  const { crowi } = req;
+  const { appService } = crowi;
+
+  props.siteUrl = appService.getSiteUrl();
+}
+
+
 export const getServerSideProps: GetServerSideProps = async(context: GetServerSidePropsContext) => {
-  const props = await retrieveServerSideProps(context);
+  const props = await retrieveServerSideProps(context, injectServerConfigurations);
   return props;
 };
 

+ 10 - 1
packages/app/src/pages/admin/user-groups.page.tsx

@@ -4,6 +4,7 @@ import {
 import { useTranslation } from 'next-i18next';
 import dynamic from 'next/dynamic';
 
+import { CrowiRequest } from '~/interfaces/crowi-request';
 import { CommonProps, useCustomTitle } from '~/pages/utils/commons';
 import { retrieveServerSideProps } from '../../utils/admin-page-util';
 import { useIsAclEnabled } from '~/stores/context';
@@ -31,8 +32,16 @@ const AdminUserGroupPage: NextPage<Props> = (props) => {
 };
 
 
+const injectServerConfigurations = async(context: GetServerSidePropsContext, props: Props): Promise<void> => {
+  const req: CrowiRequest = context.req as CrowiRequest;
+  const { crowi } = req;
+  const { aclService } = crowi;
+
+  props.isAclEnabled = aclService.isAclEnabled();
+}
+
 export const getServerSideProps: GetServerSideProps = async(context: GetServerSidePropsContext) => {
-  const props = await retrieveServerSideProps(context);
+  const props = await retrieveServerSideProps(context, injectServerConfigurations);
   return props;
 };
 

+ 12 - 1
packages/app/src/pages/admin/users/index.page.tsx

@@ -9,6 +9,7 @@ import { Container, Provider } from 'unstated';
 import AdminUsersContainer from '~/client/services/AdminUsersContainer';
 import { CommonProps, useCustomTitle } from '~/pages/utils/commons';
 import { useCurrentUser,  useIsMailerSetup } from '~/stores/context';
+import { CrowiRequest } from '~/interfaces/crowi-request';
 
 import { retrieveServerSideProps } from '../../../utils/admin-page-util';
 
@@ -48,9 +49,19 @@ const AdminUserManagementPage: NextPage<Props> = (props) => {
 
 };
 
+const injectServerConfigurations = async(context: GetServerSidePropsContext, props: Props): Promise<void> => {
+  const req: CrowiRequest = context.req as CrowiRequest;
+  const { crowi, user } = req;
+  const { mailService } = crowi;
+
+  if (user != null) {
+    props.currentUser = JSON.stringify(user);
+  }
+  props.isMailerSetup = mailService.isMailerSetup;
+}
 
 export const getServerSideProps: GetServerSideProps = async(context: GetServerSidePropsContext) => {
-  const props = await retrieveServerSideProps(context);
+  const props = await retrieveServerSideProps(context, injectServerConfigurations);
   return props;
 };
 

+ 8 - 63
packages/app/src/utils/admin-page-util.ts

@@ -1,63 +1,12 @@
 import {
-  GetServerSideProps, GetServerSidePropsContext,
+  GetServerSidePropsContext,
 } from 'next';
 import { serverSideTranslations } from 'next-i18next/serverSideTranslations';
 
-import { SupportedActionType } from '~/interfaces/activity';
 import { CrowiRequest } from '~/interfaces/crowi-request';
 import {
-  CommonProps, getServerSideCommonProps, getNextI18NextConfig,
+  getServerSideCommonProps, getNextI18NextConfig,
 } from '~/pages/utils/commons';
-import PluginUtils from '~/server/plugins/plugin-utils';
-import ConfigLoader from '~/server/service/config-loader';
-
-
-type Props = CommonProps & {
-  currentUser: any,
-
-  nodeVersion: string,
-  npmVersion: string,
-  yarnVersion: string,
-  installedPlugins: any,
-  envVars: any,
-  isAclEnabled: boolean,
-  isSearchServiceConfigured: boolean,
-  isSearchServiceReachable: boolean,
-  isMailerSetup: boolean,
-  auditLogEnabled: boolean,
-  auditLogAvailableActions: SupportedActionType[],
-
-  customizeTitle: string,
-  siteUrl: string,
-};
-
-const pluginUtils = new PluginUtils();
-
-
-async function injectServerConfigurations(context: GetServerSidePropsContext, props: Props): Promise<void> {
-  const req: CrowiRequest = context.req as CrowiRequest;
-  const { crowi } = req;
-  const {
-    appService, mailService, aclService, searchService, activityService,
-  } = crowi;
-
-  props.siteUrl = appService.getSiteUrl();
-  props.nodeVersion = crowi.runtimeVersions.versions.node ? crowi.runtimeVersions.versions.node.version.version : null;
-  props.npmVersion = crowi.runtimeVersions.versions.npm ? crowi.runtimeVersions.versions.npm.version.version : null;
-  props.yarnVersion = crowi.runtimeVersions.versions.yarn ? crowi.runtimeVersions.versions.yarn.version.version : null;
-  props.installedPlugins = pluginUtils.listPlugins();
-  props.envVars = await ConfigLoader.getEnvVarsForDisplay(true);
-  props.isAclEnabled = aclService.isAclEnabled();
-
-  props.isSearchServiceConfigured = searchService.isConfigured;
-  props.isSearchServiceReachable = searchService.isReachable;
-
-  props.isMailerSetup = mailService.isMailerSetup;
-
-  props.auditLogEnabled = crowi.configManager.getConfig('crowi', 'app:auditLogEnabled');
-  props.auditLogAvailableActions = activityService.getAvailableActions(false);
-  props.customizeTitle = crowi.configManager.getConfig('crowi', 'customize:title');
-}
 
 /**
  * for Server Side Translations
@@ -65,16 +14,14 @@ async function injectServerConfigurations(context: GetServerSidePropsContext, pr
  * @param props
  * @param namespacesRequired
  */
-async function injectNextI18NextConfigurations(context: GetServerSidePropsContext, props: Props, namespacesRequired?: string[] | undefined): Promise<void> {
+async function injectNextI18NextConfigurations(context: GetServerSidePropsContext, props, namespacesRequired?: string[] | undefined): Promise<void> {
   // preload all languages because of language lists in user setting
   const nextI18NextConfig = await getNextI18NextConfig(serverSideTranslations, context, namespacesRequired, true);
   props._nextI18Next = nextI18NextConfig._nextI18Next;
 }
 
-export const retrieveServerSideProps: GetServerSideProps = async(context: GetServerSidePropsContext) => {
-  const req: CrowiRequest = context.req as CrowiRequest;
 
-  const { user } = req;
+export const retrieveServerSideProps = async(context: GetServerSidePropsContext, injectServerConfigurations?:(context: GetServerSidePropsContext, props) => Promise<void> ) => {
   const result = await getServerSideCommonProps(context);
 
   // check for presence
@@ -82,13 +29,11 @@ export const retrieveServerSideProps: GetServerSideProps = async(context: GetSer
   if (!('props' in result)) {
     throw new Error('invalid getSSP result');
   }
-  const props: Props = result.props as Props;
-  if (user != null) {
-    // props.currentUser = JSON.stringify(user.toObject());
-    props.currentUser = JSON.stringify(user);
-  }
 
-  injectServerConfigurations(context, props);
+  const props = result.props;
+  if (injectServerConfigurations != null){
+    injectServerConfigurations(context, props);
+  }
   await injectNextI18NextConfigurations(context, props, ['admin', 'commons']);
 
   return {