Przeglądaj źródła

Merge pull request #3212 from weseek/imprv/7423-create-validation-for-each-request-user

Imprv/7423 create validation for each request user
Yuki Takei 5 lat temu
rodzic
commit
77dd0a83e2
1 zmienionych plików z 12 dodań i 11 usunięć
  1. 12 11
      src/server/routes/apiv3/users.js

+ 12 - 11
src/server/routes/apiv3/users.js

@@ -89,15 +89,14 @@ module.exports = (crowi) => {
   };
   };
 
 
   validator.statusList = [
   validator.statusList = [
-    // validate status list status array match to statusNo
-    query('selectedStatusList').custom((value) => {
-      const error = [];
-      value.forEach((status) => {
-        if (!Object.keys(statusNo)) {
-          error.push(status);
-        }
-      });
-      return (error.length === 0);
+    query('selectedStatusList').if(value => value != null).custom((value, { req }) => {
+
+      const { user } = req;
+
+      if (user !== null && user.admin) {
+        return value;
+      }
+      throw new Error('the param \'selectedStatusList\' is not allowed to use by the users except administrators');
     }),
     }),
     // validate sortOrder : asc or desc
     // validate sortOrder : asc or desc
     query('sortOrder').isIn(['asc', 'desc']),
     query('sortOrder').isIn(['asc', 'desc']),
@@ -164,11 +163,13 @@ module.exports = (crowi) => {
    *                      $ref: '#/components/schemas/PaginateResult'
    *                      $ref: '#/components/schemas/PaginateResult'
    */
    */
 
 
-  router.get('/', loginRequiredStrictly, validator.statusList, apiV3FormValidator, async(req, res) => {
+  router.get('/', loginRequired, validator.statusList, apiV3FormValidator, async(req, res) => {
 
 
     const page = parseInt(req.query.page) || 1;
     const page = parseInt(req.query.page) || 1;
     // status
     // status
-    const { selectedStatusList, forceIncludeAttributes } = req.query;
+    const { forceIncludeAttributes } = req.query;
+    const selectedStatusList = req.query.selectedStatusList || ['active'];
+
     const statusNoList = (selectedStatusList.includes('all')) ? Object.values(statusNo) : selectedStatusList.map(element => statusNo[element]);
     const statusNoList = (selectedStatusList.includes('all')) ? Object.values(statusNo) : selectedStatusList.map(element => statusNo[element]);
 
 
     // Search from input
     // Search from input