Răsfoiți Sursa

A validation error was displayed.
But,
Since it was not the expected behavior, we will fix it.

熊谷洸介(Kousuke Kumagai) 6 ani în urmă
părinte
comite
2dafbc441d
3 a modificat fișierele cu 28 adăugiri și 33 ștergeri
  1. 26 2
      src/server/routes/admin.js
  2. 2 2
      src/server/routes/index.js
  3. 0 29
      src/server/util/importer.js

+ 26 - 2
src/server/routes/admin.js

@@ -31,6 +31,10 @@ module.exports = function(crowi, app) {
   const MAX_PAGE_LIST = 50;
   const actions = {};
 
+  const { check } = require('express-validator/check');
+
+  const api = {};
+
   function createPager(total, limit, page, pagesCount, maxPageList) {
     const pager = {
       page,
@@ -807,14 +811,26 @@ module.exports = function(crowi, app) {
 
   // Importer management
   actions.importer = {};
+  actions.importer.api = api;
+  api.validators = {};
   actions.importer.index = function(req, res) {
     const settingForm = configManager.getConfigByPrefix('crowi', 'importer:');
-
     return res.render('admin/importer', {
       settingForm,
     });
   };
 
+  api.validators.add = function() {
+    const validator = [
+      check('esaAccessToken').not().isEmpty(),
+      check('esaTeamName').not().isEmpty(),
+      check('qiitaAccessToken').not().isEmpty(),
+      check('qiitaTeamName').not().isEmpty(),
+    ];
+    return validator;
+
+  };
+
   actions.api = {};
   actions.api.appSetting = async function(req, res) {
     const form = req.form.settingForm;
@@ -1170,9 +1186,17 @@ module.exports = function(crowi, app) {
   actions.api.importerSettingEsa = async(req, res) => {
     const form = req.body;
 
+    const { validationResult } = require('express-validator');
+    const errors = validationResult(req);
+    if (!errors.isEmpty()) {
+      // return res.json(ApiResponse.error('Invalid comment.'));
+      // return res.status(422).json({ errors: errors.array() });
+      console.log('validator', errors);
+      return res.json(ApiResponse.error('空欄の項目があります'));
+    }
+
     await configManager.updateConfigsInTheSameNamespace('crowi', form);
     importer.initializeEsaClient(); // let it run in the back aftert res
-
     return res.json({ status: true });
   };
 

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

@@ -142,8 +142,8 @@ module.exports = function(crowi, app) {
 
   // importer management for admin
   app.get('/admin/importer'                , loginRequired() , adminRequired , admin.importer.index);
-  app.post('/_api/admin/settings/importerEsa' , loginRequired() , adminRequired , csrf, admin.api.importerSettingEsa);
-  app.post('/_api/admin/settings/importerQiita' , loginRequired() , adminRequired , csrf , admin.api.importerSettingQiita);
+  app.post('/_api/admin/settings/importerEsa' ,  loginRequired() , adminRequired , csrf, admin.importer.api.validators.add(),admin.api.importerSettingEsa);
+  app.post('/_api/admin/settings/importerQiita' ,loginRequired() , adminRequired , csrf , admin.importer.api.validators.add(), admin.api.importerSettingQiita);
   app.post('/_api/admin/import/esa'        , loginRequired() , adminRequired , admin.api.importDataFromEsa);
   app.post('/_api/admin/import/testEsaAPI' , loginRequired() , adminRequired , csrf, admin.api.testEsaAPI);
   app.post('/_api/admin/import/qiita'        , loginRequired() , adminRequired , admin.api.importDataFromQiita);

+ 0 - 29
src/server/util/importer.js

@@ -16,14 +16,6 @@ module.exports = (crowi) => {
   const importer = {};
   let esaClient = {};
 
-  const { check, validationResult } = require('express-validator/check');
-
-  const actions = {};
-  const api = {};
-
-  actions.api = api;
-  api.validators = {};
-
   /**
    * Initialize importer
    */
@@ -192,26 +184,5 @@ module.exports = (crowi) => {
   importer.initializeEsaClient();
   importer.initializeQiitaClient();
 
-  api.validators.add = function() {
-    const validator = [
-      check('esaAccessToken').exists(),
-      check('esaTeamName').exists(),
-      check('qiitaAccessToken').exists(),
-      check('qiitaTeamName').exists(),
-    ];
-    return validator;
-  };
-
-  api.add = async function(req, res) {
-    const { validationResult } = require('express-validator/check');
-
-    const errors = validationResult(req.check);
-    if (!errors.isEmpty()) {
-      // return res.json(ApiResponse.error('Invalid comment.'));
-      // return res.status(422).json({ errors: errors.array() });
-      return res.json(ApiResponse.error('空欄の項目があります'));
-    }
-  };
-
   return importer;
 };