Prechádzať zdrojové kódy

Merge pull request #1518 from weseek/reactify-admin/home-server

Reactify admin/home server
Yuki Takei 6 rokov pred
rodič
commit
ccc95eb65f

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

@@ -41,8 +41,16 @@ export default class AdminHomeContainer extends Container {
    */
    */
   async retrieveAdminHomeData() {
   async retrieveAdminHomeData() {
     try {
     try {
-      // [TODO GW-727] create api endpoint for retrieve admin home data
-      // const response = await this.appContainer.apiv3.get('/home/');
+      const response = await this.appContainer.apiv3.get('/admin-home/');
+      const { adminHomeParams } = response.data;
+
+      this.setState({
+        growiVersion: adminHomeParams.growiVersion,
+        nodeVersion: adminHomeParams.nodeVersion,
+        npmVersion: adminHomeParams.npmVersion,
+        yarnVersion: adminHomeParams.yarnVersion,
+        installedPlugins: adminHomeParams.installedPlugins,
+      });
     }
     }
     catch (err) {
     catch (err) {
       logger.error(err);
       logger.error(err);

+ 1 - 5
src/server/routes/admin.js

@@ -20,12 +20,10 @@ module.exports = function(crowi, app) {
   } = crowi;
   } = crowi;
 
 
   const recommendedWhitelist = require('@commons/service/xss/recommended-whitelist');
   const recommendedWhitelist = require('@commons/service/xss/recommended-whitelist');
-  const PluginUtils = require('../plugins/plugin-utils');
   const ApiResponse = require('../util/apiResponse');
   const ApiResponse = require('../util/apiResponse');
   const importer = require('../util/importer')(crowi);
   const importer = require('../util/importer')(crowi);
 
 
   const searchEvent = crowi.event('search');
   const searchEvent = crowi.event('search');
-  const pluginUtils = new PluginUtils();
 
 
   const MAX_PAGE_LIST = 50;
   const MAX_PAGE_LIST = 50;
   const actions = {};
   const actions = {};
@@ -99,9 +97,7 @@ module.exports = function(crowi, app) {
   });
   });
 
 
   actions.index = function(req, res) {
   actions.index = function(req, res) {
-    return res.render('admin/index', {
-      plugins: pluginUtils.listPlugins(crowi.rootDir),
-    });
+    return res.render('admin/index');
   };
   };
 
 
   // app.get('/admin/app'                  , admin.app.index);
   // app.get('/admin/app'                  , admin.app.index);

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

@@ -0,0 +1,77 @@
+const express = require('express');
+const PluginUtils = require('../../plugins/plugin-utils');
+
+const pluginUtils = new PluginUtils();
+
+const router = express.Router();
+
+/**
+ * @swagger
+ *  tags:
+ *    name: adminHome
+ */
+
+/**
+ * @swagger
+ *
+ *  components:
+ *    schemas:
+ *      SystemInformationParams:
+ *        type: object
+ *        properties:
+ *          growiVersion:
+ *            type: String
+ *            description: version of growi
+ *          nodeVersion:
+ *            type: String
+ *            description: version of node
+ *          npmVersion:
+ *            type: String
+ *            description: version of npm
+ *          yarnVersion:
+ *            type: String
+ *            description: version of yarn
+ *      InstalledPluginsParams:
+ *        type: object
+ *        properties:
+ *          installedPlugins:
+ *            type: object
+ *            description: installed plugins
+ */
+
+module.exports = (crowi) => {
+  const loginRequiredStrictly = require('../../middleware/login-required')(crowi);
+  const adminRequired = require('../../middleware/admin-required')(crowi);
+
+  /**
+   * @swagger
+   *
+   *    /admin-home/:
+   *      get:
+   *        tags: [adminHome]
+   *        description: Get adminHome paramaters
+   *        responses:
+   *          200:
+   *            description: params of adminHome
+   *            content:
+   *              application/json:
+   *                schema:
+   *                  properties:
+   *                    adminHomeParams:
+   *                      type: object
+   *                      description: adminHome params
+   */
+  router.get('/', loginRequiredStrictly, adminRequired, async(req, res) => {
+    const adminHomeParams = {
+      growiVersion: crowi.version,
+      nodeVersion: crowi.runtimeVersions.versions.node ? crowi.runtimeVersions.versions.node.version.version : '-',
+      npmVersion: crowi.runtimeVersions.versions.npm ? crowi.runtimeVersions.versions.npm.version.version : '-',
+      yarnVersion: crowi.runtimeVersions.versions.yarn ? crowi.runtimeVersions.versions.yarn.version.version : '-',
+      installedPlugins: pluginUtils.listPlugins(crowi.rootDir),
+    };
+
+    return res.apiv3({ adminHomeParams });
+  });
+
+  return router;
+};

+ 2 - 0
src/server/routes/apiv3/index.js

@@ -13,6 +13,8 @@ module.exports = (crowi) => {
 
 
   router.use('/healthcheck', require('./healthcheck')(crowi));
   router.use('/healthcheck', require('./healthcheck')(crowi));
 
 
+  router.use('/admin-home', require('./admin-home')(crowi));
+
   router.use('/markdown-setting', require('./markdown-setting')(crowi));
   router.use('/markdown-setting', require('./markdown-setting')(crowi));
 
 
   router.use('/customize-setting', require('./customize-setting')(crowi));
   router.use('/customize-setting', require('./customize-setting')(crowi));