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

express validator in route & err format on client

mizozobu 6 лет назад
Родитель
Сommit
c1ca02b93d

+ 20 - 3
src/client/js/util/apiNotification.js

@@ -2,10 +2,27 @@ import * as toastr from 'toastr';
 
 const logger = require('@alias/logger')('growi');
 
+const errorFormatter = {};
+
+errorFormatter.logger = (err) => {
+  return err.toString().replace(/\n/g, ', ');
+};
+
+errorFormatter.toastr = (err) => {
+  const prefixRegexp = /^Error: /;
+  let message = err.toString().replace(/\n/g, '<br>');
+
+  if (prefixRegexp.test(message)) {
+    message = message.replace(prefixRegexp, '');
+  }
+
+  return message;
+};
+
 export const apiErrorHandler = (err, header = 'Error') => {
-  logger.error(err);
+  logger.error(errorFormatter.logger(err));
 
-  toastr.error(err, header, {
+  toastr.error(errorFormatter.toastr(err), header, {
     closeButton: true,
     progressBar: true,
     newestOnTop: false,
@@ -15,7 +32,7 @@ export const apiErrorHandler = (err, header = 'Error') => {
   });
 };
 
-export const apiSuccessHandler = (body, header = '') => {
+export const apiSuccessHandler = (body, header = 'Success') => {
   toastr.success(body, header, {
     closeButton: true,
     progressBar: true,

+ 0 - 3
src/server/form/apiv3/index.js

@@ -1,3 +0,0 @@
-module.exports = {
-  userGroup: require('./user-group'),
-};

+ 0 - 15
src/server/form/apiv3/user-group.js

@@ -1,15 +0,0 @@
-const { body, param } = require('express-validator/check');
-
-const validator = {};
-
-validator.create = [
-  body('name').trim().exists(),
-];
-
-validator.delete = [
-  param('id').trim().exists(),
-  body('actionName').trim().exists(),
-  body('transferToUserGroupId').trim(),
-];
-
-module.exports = validator;

+ 18 - 4
src/server/routes/apiv3/user-group.js

@@ -6,9 +6,11 @@ const express = require('express');
 
 const router = express.Router();
 
-const middleware = require('../../util/middlewares');
+const { body, param } = require('express-validator/check');
 
-const { loginRequired, adminRequired, formValid } = middleware;
+const validator = {};
+
+const { loginRequired, adminRequired, formValid } = require('../../util/middlewares');
 
 const ApiResponse = require('../../util/apiResponse');
 
@@ -27,8 +29,13 @@ module.exports = (crowi) => {
     }
   });
 
-  router.post('/create', loginRequired(crowi), adminRequired(), async(req, res) => {
+  validator.create = [
+    body('name').trim().exists(),
+  ];
+
+  router.post('/create', loginRequired(crowi), adminRequired(), validator.create, formValid(), async(req, res) => {
     const { name } = req.body;
+
     try {
       const userGroupName = crowi.xss.process(name);
       const userGroup = await UserGroup.createGroupByName(userGroupName);
@@ -42,9 +49,16 @@ module.exports = (crowi) => {
     }
   });
 
-  router.post('/:id/delete', loginRequired(crowi), adminRequired(), async(req, res) => {
+  validator.delete = [
+    param('id').trim().exists(),
+    body('actionName').trim().exists(),
+    body('transferToUserGroupId').trim(),
+  ];
+
+  router.post('/:id/delete', loginRequired(crowi), adminRequired(), validator.delete, formValid(), async(req, res) => {
     const { id: deleteGroupId } = req.params;
     const { actionName, transferToUserGroupId } = req.body;
+
     try {
       const userGroup = await UserGroup.removeCompletelyById(deleteGroupId, actionName, transferToUserGroupId);
 

+ 4 - 2
src/server/util/middlewares.js

@@ -328,8 +328,10 @@ exports.formValid = function() {
       return next();
     }
 
-    const errs = errObjArray.array().map((err) => { return err.msg }).join('\n');
-    logger.error(errs);
+    const errs = errObjArray.array().map((err) => {
+      logger.error(`${err.param} in ${err.location}: ${err.msg}`);
+      return `${err.param}: ${err.msg}`;
+    }).join('\n');
 
     return res.json(ApiResponse.error(errs));
   };