itizawa 6 лет назад
Родитель
Сommit
0b58454c4c

+ 9 - 1
src/client/js/components/Admin/AdminHome/AdminHome.jsx

@@ -10,6 +10,7 @@ import AppContainer from '../../../services/AppContainer';
 import AdminHomeContainer from '../../../services/AdminHomeContainer';
 import AdminHomeContainer from '../../../services/AdminHomeContainer';
 import SystemInfomationTable from './SystemInfomationTable';
 import SystemInfomationTable from './SystemInfomationTable';
 import InstalledPluginTable from './InstalledPluginTable';
 import InstalledPluginTable from './InstalledPluginTable';
+import EnvVarsTable from './EnvVarsTable';
 
 
 const logger = loggerFactory('growi:admin');
 const logger = loggerFactory('growi:admin');
 
 
@@ -29,7 +30,7 @@ class AdminHome extends React.Component {
   }
   }
 
 
   render() {
   render() {
-    const { t } = this.props;
+    const { t, adminHomeContainer } = this.props;
 
 
     return (
     return (
       <Fragment>
       <Fragment>
@@ -52,6 +53,13 @@ class AdminHome extends React.Component {
             <InstalledPluginTable />
             <InstalledPluginTable />
           </div>
           </div>
         </div>
         </div>
+
+        <div className="row mb-5">
+          <div className="col-md-12">
+            <h2 className="admin-setting-header">環境変数一覧</h2>
+            {adminHomeContainer.state.envVars.crowi && <EnvVarsTable />}
+          </div>
+        </div>
       </Fragment>
       </Fragment>
     );
     );
   }
   }

+ 46 - 0
src/client/js/components/Admin/AdminHome/EnvVarsTable.jsx

@@ -0,0 +1,46 @@
+import React from 'react';
+import PropTypes from 'prop-types';
+import { withTranslation } from 'react-i18next';
+
+import { createSubscribedElement } from '../../UnstatedUtils';
+import AppContainer from '../../../services/AppContainer';
+import AdminHomeContainer from '../../../services/AdminHomeContainer';
+
+class EnvVarsTable extends React.Component {
+
+  render() {
+    const { adminHomeContainer } = this.props;
+
+    return (
+      <table className="table table-bordered">
+        <tbody>
+          {Object.entries(adminHomeContainer.state.envVars.crowi).map((env) => {
+            if (env[1] == null) { return null }
+            return (
+              <tr key={env[0]}>
+                <th className="col-sm-4">{env[0]}</th>
+                <td>{env[1].toString()}</td>
+              </tr>
+            );
+          })}
+        </tbody>
+      </table>
+    );
+  }
+
+}
+
+EnvVarsTable.propTypes = {
+  t: PropTypes.func.isRequired, // i18next
+  appContainer: PropTypes.instanceOf(AppContainer).isRequired,
+  adminHomeContainer: PropTypes.instanceOf(AdminHomeContainer).isRequired,
+};
+
+/**
+ * Wrapper component for using unstated
+ */
+const EnvVarsTableWrapper = (props) => {
+  return createSubscribedElement(EnvVarsTable, props, [AppContainer, AdminHomeContainer]);
+};
+
+export default withTranslation()(EnvVarsTableWrapper);

+ 2 - 0
src/client/js/services/AdminHomeContainer.js

@@ -25,6 +25,7 @@ export default class AdminHomeContainer extends Container {
       npmVersion: '',
       npmVersion: '',
       yarnVersion: '',
       yarnVersion: '',
       installedPlugins: [],
       installedPlugins: [],
+      envVars: {},
     };
     };
 
 
   }
   }
@@ -50,6 +51,7 @@ export default class AdminHomeContainer extends Container {
         npmVersion: adminHomeParams.npmVersion,
         npmVersion: adminHomeParams.npmVersion,
         yarnVersion: adminHomeParams.yarnVersion,
         yarnVersion: adminHomeParams.yarnVersion,
         installedPlugins: adminHomeParams.installedPlugins,
         installedPlugins: adminHomeParams.installedPlugins,
+        envVars: adminHomeParams.envVars,
       });
       });
     }
     }
     catch (err) {
     catch (err) {

+ 1 - 0
src/server/routes/apiv3/admin-home.js

@@ -70,6 +70,7 @@ module.exports = (crowi) => {
       npmVersion: crowi.runtimeVersions.versions.npm ? crowi.runtimeVersions.versions.npm.version.version : '-',
       npmVersion: crowi.runtimeVersions.versions.npm ? crowi.runtimeVersions.versions.npm.version.version : '-',
       yarnVersion: crowi.runtimeVersions.versions.yarn ? crowi.runtimeVersions.versions.yarn.version.version : '-',
       yarnVersion: crowi.runtimeVersions.versions.yarn ? crowi.runtimeVersions.versions.yarn.version.version : '-',
       installedPlugins: pluginUtils.listPlugins(crowi.rootDir),
       installedPlugins: pluginUtils.listPlugins(crowi.rootDir),
+      envVars: await crowi.configManager.getAllConfigFromEnvVars(),
     };
     };
 
 
     return res.apiv3({ adminHomeParams });
     return res.apiv3({ adminHomeParams });

+ 10 - 0
src/server/service/config-manager.js

@@ -145,6 +145,16 @@ class ConfigManager {
     return this.searchOnlyFromEnvVarConfigs(namespace, key);
     return this.searchOnlyFromEnvVarConfigs(namespace, key);
   }
   }
 
 
+  /**
+   * get a config specified by namespace & key from configs loaded from the environment variables
+   *
+   * **Do not use this unless absolutely necessary. Use getConfig instead.**
+   */
+  getAllConfigFromEnvVars() {
+    console.log(this.configObject.fromEnvVars);
+    return this.configObject.fromEnvVars;
+  }
+
   /**
   /**
    * update configs in the same namespace
    * update configs in the same namespace
    *
    *