Sfoglia il codice sorgente

WIP: apply to src/server/routes

Yuki Takei 7 anni fa
parent
commit
93c53b4fe4

+ 186 - 196
src/server/routes/admin.js

@@ -1,13 +1,10 @@
+/* eslint-disable no-use-before-define */
 module.exports = function(crowi, app) {
-  'use strict';
-
   const debug = require('debug')('growi:routes:admin');
   const logger = require('@alias/logger')('growi:routes:admin');
-  const fs = require('fs');
 
   const models = crowi.models;
   const Page = models.Page;
-  const PageGroupRelation = models.PageGroupRelation;
   const User = models.User;
   const ExternalAccount = models.ExternalAccount;
   const UserGroup = models.UserGroup;
@@ -31,10 +28,10 @@ module.exports = function(crowi, app) {
 
   function createPager(total, limit, page, pagesCount, maxPageList) {
     const pager = {
-      page: page,
-      pagesCount: pagesCount,
+      page,
+      pagesCount,
       pages: [],
-      total: total,
+      total,
       previous: null,
       previousDots: false,
       next: null,
@@ -49,8 +46,8 @@ module.exports = function(crowi, app) {
       pager.next = page + 1;
     }
 
-    let pagerMin = Math.max(1, Math.ceil(page - maxPageList/2));
-    let pagerMax = Math.min(pagesCount, Math.floor(page + maxPageList/2));
+    let pagerMin = Math.max(1, Math.ceil(page - maxPageList / 2));
+    let pagerMax = Math.min(pagesCount, Math.floor(page + maxPageList / 2));
     if (pagerMin === 1) {
       if (MAX_PAGE_LIST < pagesCount) {
         pagerMax = MAX_PAGE_LIST;
@@ -94,11 +91,10 @@ module.exports = function(crowi, app) {
   // app.get('/admin/app'                  , admin.app.index);
   actions.app = {};
   actions.app.index = function(req, res) {
-    var settingForm;
-    settingForm = Config.setupConfigFormData('crowi', req.config);
+    const settingForm = Config.setupConfigFormData('crowi', req.config);
 
     return res.render('admin/app', {
-      settingForm: settingForm,
+      settingForm,
     });
   };
 
@@ -120,18 +116,18 @@ module.exports = function(crowi, app) {
     const markdownSetting = Config.setupConfigFormData('markdown', config);
 
     return res.render('admin/markdown', {
-      markdownSetting: markdownSetting,
-      recommendedXssWhiteList: recommendedXssWhiteList,
+      markdownSetting,
+      recommendedXssWhiteList,
     });
   };
 
   // app.post('/admin/markdown/lineBreaksSetting' , admin.markdown.lineBreaksSetting);
   actions.markdown.lineBreaksSetting = function(req, res) {
-    var markdownSetting = req.form.markdownSetting;
+    const markdownSetting = req.form.markdownSetting;
 
     req.session.markdownSetting = markdownSetting;
     if (req.form.isValid) {
-      Config.updateNamespaceByArray('markdown', markdownSetting, function(err, config) {
+      Config.updateNamespaceByArray('markdown', markdownSetting, (err, config) => {
         Config.updateConfigCache('markdown', config);
         req.session.markdownSetting = null;
         req.flash('successMessage', ['Successfully updated!']);
@@ -146,11 +142,11 @@ module.exports = function(crowi, app) {
 
   // app.post('/admin/markdown/presentationSetting' , admin.markdown.presentationSetting);
   actions.markdown.presentationSetting = function(req, res) {
-    let presentationSetting = req.form.markdownSetting;
+    const presentationSetting = req.form.markdownSetting;
 
     req.session.markdownSetting = presentationSetting;
     if (req.form.isValid) {
-      Config.updateNamespaceByArray('markdown', presentationSetting, function(err, config) {
+      Config.updateNamespaceByArray('markdown', presentationSetting, (err, config) => {
         Config.updateConfigCache('markdown', config);
         req.session.markdownSetting = null;
         req.flash('successMessage', ['Successfully updated!']);
@@ -165,14 +161,14 @@ module.exports = function(crowi, app) {
 
   // app.post('/admin/markdown/xss-setting' , admin.markdown.xssSetting);
   actions.markdown.xssSetting = function(req, res) {
-    let xssSetting = req.form.markdownSetting;
+    const xssSetting = req.form.markdownSetting;
 
     xssSetting['markdown:xss:tagWhiteList'] = stringToArray(xssSetting['markdown:xss:tagWhiteList']);
     xssSetting['markdown:xss:attrWhiteList'] = stringToArray(xssSetting['markdown:xss:attrWhiteList']);
 
     req.session.markdownSetting = xssSetting;
     if (req.form.isValid) {
-      Config.updateNamespaceByArray('markdown', xssSetting, function(err, config) {
+      Config.updateNamespaceByArray('markdown', xssSetting, (err, config) => {
         Config.updateConfigCache('markdown', config);
         req.session.xssSetting = null;
         req.flash('successMessage', ['Successfully updated!']);
@@ -187,15 +183,15 @@ module.exports = function(crowi, app) {
 
   const stringToArray = (string) => {
     const array = string.split(',');
-    return array.map(item => item.trim());
+    return array.map((item) => { return item.trim() });
   };
 
   // app.get('/admin/customize' , admin.customize.index);
   actions.customize = {};
   actions.customize.index = function(req, res) {
-    var settingForm;
-    settingForm = Config.setupConfigFormData('crowi', req.config);
+    const settingForm = Config.setupConfigFormData('crowi', req.config);
 
+    /* eslint-disable quote-props, no-multi-spaces */
     const highlightJsCssSelectorOptions = {
       'github':           { name: '[Light] GitHub',         border: false },
       'github-gist':      { name: '[Light] GitHub Gist',    border: true },
@@ -208,10 +204,11 @@ module.exports = function(crowi, app) {
       'tomorrow-night':   { name: '[Dark] Tomorrow Night',  border: false },
       'vs2015':           { name: '[Dark] Vs 2015',         border: false },
     };
+    /* eslint-enable quote-props, no-multi-spaces */
 
     return res.render('admin/customize', {
-      settingForm: settingForm,
-      highlightJsCssSelectorOptions: highlightJsCssSelectorOptions
+      settingForm,
+      highlightJsCssSelectorOptions,
     });
   };
 
@@ -247,17 +244,17 @@ module.exports = function(crowi, app) {
 
   // app.post('/admin/notification/slackSetting' , admin.notification.slackauth);
   actions.notification.slackSetting = function(req, res) {
-    var slackSetting = req.form.slackSetting;
+    const slackSetting = req.form.slackSetting;
 
     req.session.slackSetting = slackSetting;
     if (req.form.isValid) {
-      Config.updateNamespaceByArray('notification', slackSetting, function(err, config) {
+      Config.updateNamespaceByArray('notification', slackSetting, (err, config) => {
         Config.updateConfigCache('notification', config);
         req.flash('successMessage', ['Successfully Updated!']);
         req.session.slackSetting = null;
 
         // Re-setup
-        crowi.setupSlack().then(function() {
+        crowi.setupSlack().then(() => {
           return res.redirect('/admin/notification');
         });
       });
@@ -271,7 +268,6 @@ module.exports = function(crowi, app) {
   // app.get('/admin/notification/slackAuth'     , admin.notification.slackauth);
   actions.notification.slackAuth = function(req, res) {
     const code = req.query.code;
-    const config = crowi.getConfig();
 
     if (!code || !Config.hasSlackConfig(req.config)) {
       return res.redirect('/admin/notification');
@@ -279,37 +275,38 @@ module.exports = function(crowi, app) {
 
     const slack = crowi.slack;
     slack.getOauthAccessToken(code)
-    .then(data => {
-      debug('oauth response', data);
-      Config.updateNamespaceByArray('notification', {'slack:token': data.access_token}, function(err, config) {
-        if (err) {
-          req.flash('errorMessage', ['Failed to save access_token. Please try again.']);
-        }
-        else {
-          Config.updateConfigCache('notification', config);
-          req.flash('successMessage', ['Successfully Connected!']);
-        }
+      .then((data) => {
+        debug('oauth response', data);
+        Config.updateNamespaceByArray('notification', { 'slack:token': data.access_token }, (err, config) => {
+          if (err) {
+            req.flash('errorMessage', ['Failed to save access_token. Please try again.']);
+          }
+          else {
+            Config.updateConfigCache('notification', config);
+            req.flash('successMessage', ['Successfully Connected!']);
+          }
 
+          return res.redirect('/admin/notification');
+        });
+      })
+      .catch((err) => {
+        debug('oauth response ERROR', err);
+        req.flash('errorMessage', ['Failed to fetch access_token. Please do connect again.']);
         return res.redirect('/admin/notification');
       });
-    }).catch(err => {
-      debug('oauth response ERROR', err);
-      req.flash('errorMessage', ['Failed to fetch access_token. Please do connect again.']);
-      return res.redirect('/admin/notification');
-    });
   };
 
   // app.post('/admin/notification/slackIwhSetting' , admin.notification.slackIwhSetting);
   actions.notification.slackIwhSetting = function(req, res) {
-    var slackIwhSetting = req.form.slackIwhSetting;
+    const slackIwhSetting = req.form.slackIwhSetting;
 
     if (req.form.isValid) {
-      Config.updateNamespaceByArray('notification', slackIwhSetting, function(err, config) {
+      Config.updateNamespaceByArray('notification', slackIwhSetting, (err, config) => {
         Config.updateConfigCache('notification', config);
         req.flash('successMessage', ['Successfully Updated!']);
 
         // Re-setup
-        crowi.setupSlack().then(function() {
+        crowi.setupSlack().then(() => {
           return res.redirect('/admin/notification#slack-incoming-webhooks');
         });
       });
@@ -322,10 +319,7 @@ module.exports = function(crowi, app) {
 
   // app.post('/admin/notification/slackSetting/disconnect' , admin.notification.disconnectFromSlack);
   actions.notification.disconnectFromSlack = function(req, res) {
-    const config = crowi.getConfig();
-    const slack = crowi.slack;
-
-    Config.updateNamespaceByArray('notification', {'slack:token': ''}, function(err, config) {
+    Config.updateNamespaceByArray('notification', { 'slack:token': '' }, (err, config) => {
       Config.updateConfigCache('notification', config);
       req.flash('successMessage', ['Successfully Disconnected!']);
 
@@ -336,11 +330,11 @@ module.exports = function(crowi, app) {
   actions.globalNotification = {};
   actions.globalNotification.detail = async(req, res) => {
     const notificationSettingId = req.params.id;
-    let renderVars = {};
+    const renderVars = {};
 
     if (notificationSettingId) {
       try {
-        renderVars.setting = await GlobalNotificationSetting.findOne({_id: notificationSettingId});
+        renderVars.setting = await GlobalNotificationSetting.findOne({ _id: notificationSettingId });
       }
       catch (err) {
         logger.error(`Error in finding a global notification setting with {_id: ${notificationSettingId}}`);
@@ -378,7 +372,7 @@ module.exports = function(crowi, app) {
 
   actions.globalNotification.update = async(req, res) => {
     const form = req.form.notificationGlobal;
-    const setting = await GlobalNotificationSetting.findOne({_id: form.id});
+    const setting = await GlobalNotificationSetting.findOne({ _id: form.id });
 
     switch (form.notifyToType) {
       case 'mail':
@@ -404,7 +398,7 @@ module.exports = function(crowi, app) {
     const id = req.params.id;
 
     try {
-      await GlobalNotificationSetting.findOneAndRemove({_id: id});
+      await GlobalNotificationSetting.findOneAndRemove({ _id: id });
       return res.redirect('/admin/notification#global-notification');
     }
     catch (err) {
@@ -414,9 +408,9 @@ module.exports = function(crowi, app) {
   };
 
   const getNotificationEvents = (form) => {
-    let triggerEvents = [];
-    const triggerEventKeys = Object.keys(form).filter(key => key.match(/^triggerEvent/));
-    triggerEventKeys.forEach(key => {
+    const triggerEvents = [];
+    const triggerEventKeys = Object.keys(form).filter((key) => { return key.match(/^triggerEvent/) });
+    triggerEventKeys.forEach((key) => {
       if (form[key]) {
         triggerEvents.push(form[key]);
       }
@@ -424,7 +418,7 @@ module.exports = function(crowi, app) {
     return triggerEvents;
   };
 
-  actions.search = {}
+  actions.search = {};
   actions.search.index = function(req, res) {
     const search = crowi.getSearcher();
     if (!search) {
@@ -441,25 +435,25 @@ module.exports = function(crowi, app) {
     const userUpperLimit = Config.userUpperLimit(crowi);
     const isUserCountExceedsUpperLimit = await User.isUserCountExceedsUpperLimit();
 
-    var page = parseInt(req.query.page) || 1;
+    const page = parseInt(req.query.page) || 1;
 
-    const result = await User.findUsersWithPagination({page: page});
+    const result = await User.findUsersWithPagination({ page });
     const pager = createPager(result.total, result.limit, result.page, result.pages, MAX_PAGE_LIST);
 
     return res.render('admin/users', {
       users: result.docs,
-      pager: pager,
-      activeUsers: activeUsers,
-      userUpperLimit: userUpperLimit,
-      isUserCountExceedsUpperLimit: isUserCountExceedsUpperLimit
+      pager,
+      activeUsers,
+      userUpperLimit,
+      isUserCountExceedsUpperLimit,
     });
   };
 
   actions.user.invite = function(req, res) {
-    var form = req.form.inviteForm;
-    var toSendEmail = form.sendEmail || false;
+    const form = req.form.inviteForm;
+    const toSendEmail = form.sendEmail || false;
     if (req.form.isValid) {
-      User.createUsersByInvitation(form.emailList.split('\n'), toSendEmail, function(err, userList) {
+      User.createUsersByInvitation(form.emailList.split('\n'), toSendEmail, (err, userList) => {
         if (err) {
           req.flash('errorMessage', req.form.errors.join('\n'));
         }
@@ -476,11 +470,11 @@ module.exports = function(crowi, app) {
   };
 
   actions.user.makeAdmin = function(req, res) {
-    var id = req.params.id;
-    User.findById(id, function(err, userData) {
-      userData.makeAdmin(function(err, userData) {
+    const id = req.params.id;
+    User.findById(id, (err, userData) => {
+      userData.makeAdmin((err, userData) => {
         if (err === null) {
-          req.flash('successMessage', userData.name + 'さんのアカウントを管理者に設定しました。');
+          req.flash('successMessage', `${userData.name}さんのアカウントを管理者に設定しました。`);
         }
         else {
           req.flash('errorMessage', '更新に失敗しました。');
@@ -492,11 +486,11 @@ module.exports = function(crowi, app) {
   };
 
   actions.user.removeFromAdmin = function(req, res) {
-    var id = req.params.id;
-    User.findById(id, function(err, userData) {
-      userData.removeFromAdmin(function(err, userData) {
+    const id = req.params.id;
+    User.findById(id, (err, userData) => {
+      userData.removeFromAdmin((err, userData) => {
         if (err === null) {
-          req.flash('successMessage', userData.name + 'さんのアカウントを管理者から外しました。');
+          req.flash('successMessage', `${userData.name}さんのアカウントを管理者から外しました。`);
         }
         else {
           req.flash('errorMessage', '更新に失敗しました。');
@@ -515,11 +509,11 @@ module.exports = function(crowi, app) {
       return res.redirect('/admin/users');
     }
 
-    var id = req.params.id;
-    User.findById(id, function(err, userData) {
-      userData.statusActivate(function(err, userData) {
+    const id = req.params.id;
+    User.findById(id, (err, userData) => {
+      userData.statusActivate((err, userData) => {
         if (err === null) {
-          req.flash('successMessage', userData.name + 'さんのアカウントを有効化しました');
+          req.flash('successMessage', `${userData.name}さんのアカウントを有効化しました`);
         }
         else {
           req.flash('errorMessage', '更新に失敗しました。');
@@ -531,12 +525,12 @@ module.exports = function(crowi, app) {
   };
 
   actions.user.suspend = function(req, res) {
-    var id = req.params.id;
+    const id = req.params.id;
 
-    User.findById(id, function(err, userData) {
-      userData.statusSuspend(function(err, userData) {
+    User.findById(id, (err, userData) => {
+      userData.statusSuspend((err, userData) => {
         if (err === null) {
-          req.flash('successMessage', userData.name + 'さんのアカウントを利用停止にしました');
+          req.flash('successMessage', `${userData.name}さんのアカウントを利用停止にしました`);
         }
         else {
           req.flash('errorMessage', '更新に失敗しました。');
@@ -569,10 +563,10 @@ module.exports = function(crowi, app) {
     })
     .then((userData) => {
       // remove all External Accounts
-      return ExternalAccount.remove({user: userData}).then(() => userData);
+      return ExternalAccount.remove({ user: userData }).then(() => { return userData });
     })
     .then((userData) => {
-      return Page.removeByPath(`/user/${username}`).then(() => userData);
+      return Page.removeByPath(`/user/${username}`).then(() => { return userData });
     })
     .then((userData) => {
       req.flash('successMessage', `${username} さんのアカウントを削除しました`);
@@ -587,9 +581,9 @@ module.exports = function(crowi, app) {
   // これやったときの relation の挙動未確認
   actions.user.removeCompletely = function(req, res) {
     // ユーザーの物理削除
-    var id = req.params.id;
+    const id = req.params.id;
 
-    User.removeCompletelyById(id, function(err, removed) {
+    User.removeCompletelyById(id, (err, removed) => {
       if (err) {
         debug('Error while removing user.', err, id);
         req.flash('errorMessage', '完全な削除に失敗しました。');
@@ -607,26 +601,27 @@ module.exports = function(crowi, app) {
     const User = crowi.model('User');
 
     User.resetPasswordByRandomString(id)
-    .then(function(data) {
+    .then((data) => {
       data.user = User.filterToPublicFields(data.user);
       return res.json(ApiResponse.success(data));
-    }).catch(function(err) {
-      debug('Error on reseting password', err);
-      return res.json(ApiResponse.error('Error'));
-    });
+    })
+.catch((err) => {
+  debug('Error on reseting password', err);
+  return res.json(ApiResponse.error('Error'));
+});
   };
 
   actions.externalAccount = {};
   actions.externalAccount.index = function(req, res) {
     const page = parseInt(req.query.page) || 1;
 
-    ExternalAccount.findAllWithPagination({page})
+    ExternalAccount.findAllWithPagination({ page })
       .then((result) => {
         const pager = createPager(result.total, result.limit, result.page, result.pages, MAX_PAGE_LIST);
 
         return res.render('admin/external-accounts', {
           accounts: result.docs,
-          pager: pager
+          pager,
         });
       });
   };
@@ -653,19 +648,19 @@ module.exports = function(crowi, app) {
 
   actions.userGroup = {};
   actions.userGroup.index = function(req, res) {
-    var page = parseInt(req.query.page) || 1;
+    const page = parseInt(req.query.page) || 1;
     const isAclEnabled = !Config.isPublicWikiOnly(req.config);
-    var renderVar = {
+    const renderVar = {
       userGroups: [],
       userGroupRelations: new Map(),
       pager: null,
       isAclEnabled,
     };
 
-    UserGroup.findUserGroupsWithPagination({ page: page })
+    UserGroup.findUserGroupsWithPagination({ page })
       .then((result) => {
         const pager = createPager(result.total, result.limit, result.page, result.pages, MAX_PAGE_LIST);
-        var userGroups = result.docs;
+        const userGroups = result.docs;
         renderVar.userGroups = userGroups;
         renderVar.pager = pager;
         return userGroups.map((userGroup) => {
@@ -685,7 +680,7 @@ module.exports = function(crowi, app) {
         debug('in findUserGroupsWithPagination findAllRelationForUserGroupResult', renderVar.userGroupRelations);
         return res.render('admin/user-groups', renderVar);
       })
-      .catch( function(err) {
+      .catch((err) => {
         debug('Error on find all relations', err);
         return res.json(ApiResponse.error('Error'));
       });
@@ -701,7 +696,7 @@ module.exports = function(crowi, app) {
       relatedPages: [],
     };
 
-    const userGroup = await UserGroup.findOne({ _id: userGroupId});
+    const userGroup = await UserGroup.findOne({ _id: userGroupId });
 
     if (userGroup == null) {
       logger.error('no userGroup is exists. ', userGroupId);
@@ -716,7 +711,7 @@ module.exports = function(crowi, app) {
       // get all not related users for group
       UserGroupRelation.findUserByNotRelatedGroup(userGroup),
       // get all related pages
-      Page.find({grant: Page.GRANT_USER_GROUP, grantedGroup: { $in: [userGroup] }}),
+      Page.find({ grant: Page.GRANT_USER_GROUP, grantedGroup: { $in: [userGroup] } }),
     ]);
     renderVar.userGroupRelations = resolves[0];
     renderVar.notRelatedusers = resolves[1];
@@ -725,7 +720,7 @@ module.exports = function(crowi, app) {
     return res.render('admin/user-group-detail', renderVar);
   };
 
-  //グループの生成
+  // グループの生成
   actions.userGroup.create = function(req, res) {
     const form = req.form.createGroupForm;
     if (req.form.isValid) {
@@ -750,7 +745,6 @@ module.exports = function(crowi, app) {
 
   //
   actions.userGroup.update = function(req, res) {
-
     const userGroupId = req.params.userGroupId;
     const name = crowi.xss.process(req.body.name);
 
@@ -760,9 +754,9 @@ module.exports = function(crowi, app) {
         req.flash('errorMessage', 'グループの検索に失敗しました。');
         return new Promise();
       }
-      else {
-        // 名前存在チェック
-        return UserGroup.isRegisterableName(name)
+
+      // 名前存在チェック
+      return UserGroup.isRegisterableName(name)
         .then((isRegisterableName) => {
           // 既に存在するグループ名に更新しようとした場合はエラー
           if (!isRegisterableName) {
@@ -778,10 +772,9 @@ module.exports = function(crowi, app) {
             });
           }
         });
-      }
     })
     .then(() => {
-      return res.redirect('/admin/user-group-detail/' + userGroupId);
+      return res.redirect(`/admin/user-group-detail/${userGroupId}`);
     });
   };
 
@@ -832,12 +825,13 @@ module.exports = function(crowi, app) {
       UserGroupRelation.createRelation(userGroup, user);
     })
     .then((result) => {
-      return res.redirect('/admin/user-group-detail/' + userGroup.id);
-    }).catch((err) => {
-      debug('Error on create user-group relation', err);
-      req.flash('errorMessage', 'Error on create user-group relation');
-      return res.redirect('/admin/user-group-detail/' + userGroup.id);
-    });
+      return res.redirect(`/admin/user-group-detail/${userGroup.id}`);
+    })
+.catch((err) => {
+  debug('Error on create user-group relation', err);
+  req.flash('errorMessage', 'Error on create user-group relation');
+  return res.redirect(`/admin/user-group-detail/${userGroup.id}`);
+});
   };
 
   actions.userGroupRelation.remove = function(req, res) {
@@ -846,42 +840,39 @@ module.exports = function(crowi, app) {
     const relationId = req.params.relationId;
 
     UserGroupRelation.removeById(relationId)
-    .then(() =>{
-      return res.redirect('/admin/user-group-detail/' + userGroupId);
+    .then(() => {
+      return res.redirect(`/admin/user-group-detail/${userGroupId}`);
     })
     .catch((err) => {
       debug('Error on remove user-group-relation', err);
       req.flash('errorMessage', 'グループのユーザ削除に失敗しました。');
     });
-
   };
 
   // Importer management
   actions.importer = {};
   actions.importer.index = function(req, res) {
-
-    var settingForm;
-    settingForm = Config.setupConfigFormData('crowi', req.config);
+    const settingForm = Config.setupConfigFormData('crowi', req.config);
 
     return res.render('admin/importer', {
-      settingForm: settingForm,
+      settingForm,
     });
   };
 
   actions.api = {};
   actions.api.appSetting = function(req, res) {
-    var form = req.form.settingForm;
+    const form = req.form.settingForm;
 
     if (req.form.isValid) {
       debug('form content', form);
 
       // mail setting ならここで validation
       if (form['mail:from']) {
-        validateMailSetting(req, form, function(err, data) {
+        validateMailSetting(req, form, (err, data) => {
           debug('Error validate mail setting: ', err, data);
           if (err) {
             req.form.errors.push('SMTPを利用したテストメール送信に失敗しました。設定をみなおしてください。');
-            return res.json({status: false, message: req.form.errors.join('\n')});
+            return res.json({ status: false, message: req.form.errors.join('\n') });
           }
 
           return saveSetting(req, res, form);
@@ -892,7 +883,7 @@ module.exports = function(crowi, app) {
       }
     }
     else {
-      return res.json({status: false, message: req.form.errors.join('\n')});
+      return res.json({ status: false, message: req.form.errors.join('\n') });
     }
   };
 
@@ -900,18 +891,18 @@ module.exports = function(crowi, app) {
     const form = req.form.settingForm;
 
     if (!req.form.isValid) {
-      return res.json({status: false, message: req.form.errors.join('\n')});
+      return res.json({ status: false, message: req.form.errors.join('\n') });
     }
 
     debug('form content', form);
 
     try {
       await crowi.configManager.updateConfigsInTheSameNamespace('crowi', form);
-      return res.json({status: true});
+      return res.json({ status: true });
     }
     catch (err) {
       logger.error(err);
-      return res.json({status: false});
+      return res.json({ status: false });
     }
   };
 
@@ -922,14 +913,14 @@ module.exports = function(crowi, app) {
     if (isPublicWikiOnly) {
       const basicName = form['security:basicName'];
       const basicSecret = form['security:basicSecret'];
-      if (basicName != '' || basicSecret != '') {
+      if (basicName !== '' || basicSecret !== '') {
         req.form.errors.push('Public Wikiのため、Basic認証は利用できません。');
-        return res.json({status: false, message: req.form.errors.join('\n')});
+        return res.json({ status: false, message: req.form.errors.join('\n') });
       }
       const guestMode = form['security:restrictGuestMode'];
-      if ( guestMode == 'Deny' ) {
+      if (guestMode === 'Deny') {
         req.form.errors.push('Private Wikiへの設定変更はできません。');
-        return res.json({status: false, message: req.form.errors.join('\n')});
+        return res.json({ status: false, message: req.form.errors.join('\n') });
       }
     }
 
@@ -937,16 +928,15 @@ module.exports = function(crowi, app) {
       debug('form content', form);
       return saveSetting(req, res, form);
     }
-    else {
-      return res.json({status: false, message: req.form.errors.join('\n')});
-    }
+
+    return res.json({ status: false, message: req.form.errors.join('\n') });
   };
 
   actions.api.securityPassportLdapSetting = function(req, res) {
-    var form = req.form.settingForm;
+    const form = req.form.settingForm;
 
     if (!req.form.isValid) {
-      return res.json({status: false, message: req.form.errors.join('\n')});
+      return res.json({ status: false, message: req.form.errors.join('\n') });
     }
 
     debug('form content', form);
@@ -963,7 +953,7 @@ module.exports = function(crowi, app) {
         return;
       })
       .then(() => {
-        res.json({status: true});
+        res.json({ status: true });
       });
   };
 
@@ -973,7 +963,7 @@ module.exports = function(crowi, app) {
     validateSamlSettingForm(req.form, req.t);
 
     if (!req.form.isValid) {
-      return res.json({status: false, message: req.form.errors.join('\n')});
+      return res.json({ status: false, message: req.form.errors.join('\n') });
     }
 
     debug('form content', form);
@@ -989,18 +979,18 @@ module.exports = function(crowi, app) {
       catch (err) {
         // reset
         await crowi.passportService.resetSamlStrategy();
-        return res.json({status: false, message: err.message});
+        return res.json({ status: false, message: err.message });
       }
     }
 
-    return res.json({status: true});
+    return res.json({ status: true });
   };
 
   actions.api.securityPassportGoogleSetting = async(req, res) => {
     const form = req.form.settingForm;
 
     if (!req.form.isValid) {
-      return res.json({status: false, message: req.form.errors.join('\n')});
+      return res.json({ status: false, message: req.form.errors.join('\n') });
     }
 
     debug('form content', form);
@@ -1017,18 +1007,18 @@ module.exports = function(crowi, app) {
       catch (err) {
         // reset
         await crowi.passportService.resetGoogleStrategy();
-        return res.json({status: false, message: err.message});
+        return res.json({ status: false, message: err.message });
       }
     }
 
-    return res.json({status: true});
+    return res.json({ status: true });
   };
 
   actions.api.securityPassportGitHubSetting = async(req, res) => {
     const form = req.form.settingForm;
 
     if (!req.form.isValid) {
-      return res.json({status: false, message: req.form.errors.join('\n')});
+      return res.json({ status: false, message: req.form.errors.join('\n') });
     }
 
     debug('form content', form);
@@ -1045,18 +1035,18 @@ module.exports = function(crowi, app) {
       catch (err) {
         // reset
         await crowi.passportService.resetGitHubStrategy();
-        return res.json({status: false, message: err.message});
+        return res.json({ status: false, message: err.message });
       }
     }
 
-    return res.json({status: true});
+    return res.json({ status: true });
   };
 
   actions.api.securityPassportTwitterSetting = async(req, res) => {
     const form = req.form.settingForm;
 
     if (!req.form.isValid) {
-      return res.json({status: false, message: req.form.errors.join('\n')});
+      return res.json({ status: false, message: req.form.errors.join('\n') });
     }
 
     debug('form content', form);
@@ -1074,11 +1064,11 @@ module.exports = function(crowi, app) {
       catch (err) {
         // reset
         await crowi.passportService.resetTwitterStrategy();
-        return res.json({status: false, message: err.message});
+        return res.json({ status: false, message: err.message });
       }
     }
 
-    return res.json({status: true});
+    return res.json({ status: true });
   };
   actions.api.customizeSetting = function(req, res) {
     const form = req.form.settingForm;
@@ -1087,9 +1077,8 @@ module.exports = function(crowi, app) {
       debug('form content', form);
       return saveSetting(req, res, form);
     }
-    else {
-      return res.json({status: false, message: req.form.errors.join('\n')});
-    }
+
+    return res.json({ status: false, message: req.form.errors.join('\n') });
   };
 
   actions.api.customizeSetting = function(req, res) {
@@ -1099,66 +1088,68 @@ module.exports = function(crowi, app) {
       debug('form content', form);
       return saveSetting(req, res, form);
     }
-    else {
-      return res.json({status: false, message: req.form.errors.join('\n')});
-    }
+
+    return res.json({ status: false, message: req.form.errors.join('\n') });
   };
 
   // app.post('/_api/admin/notifications.add'    , admin.api.notificationAdd);
   actions.api.notificationAdd = function(req, res) {
-    var UpdatePost = crowi.model('UpdatePost');
-    var pathPattern = req.body.pathPattern;
-    var channel = req.body.channel;
+    const UpdatePost = crowi.model('UpdatePost');
+    const pathPattern = req.body.pathPattern;
+    const channel = req.body.channel;
 
     debug('notification.add', pathPattern, channel);
     UpdatePost.create(pathPattern, channel, req.user)
-    .then(function(doc) {
-      debug('Successfully save updatePost', doc);
-
-      // fixme: うーん
-      doc.creator = doc.creator._id.toString();
-      return res.json(ApiResponse.success({updatePost: doc}));
-    }).catch(function(err) {
-      debug('Failed to save updatePost', err);
-      return res.json(ApiResponse.error());
-    });
+      .then((doc) => {
+        debug('Successfully save updatePost', doc);
+
+        // fixme: うーん
+        doc.creator = doc.creator._id.toString();
+        return res.json(ApiResponse.success({ updatePost: doc }));
+      })
+      .catch((err) => {
+        debug('Failed to save updatePost', err);
+        return res.json(ApiResponse.error());
+      });
   };
 
   // app.post('/_api/admin/notifications.remove' , admin.api.notificationRemove);
   actions.api.notificationRemove = function(req, res) {
-    var UpdatePost = crowi.model('UpdatePost');
-    var id = req.body.id;
+    const UpdatePost = crowi.model('UpdatePost');
+    const id = req.body.id;
 
     UpdatePost.remove(id)
-    .then(function() {
-      debug('Successfully remove updatePost');
+      .then(() => {
+        debug('Successfully remove updatePost');
 
-      return res.json(ApiResponse.success({}));
-    }).catch(function(err) {
-      debug('Failed to remove updatePost', err);
-      return res.json(ApiResponse.error());
-    });
+        return res.json(ApiResponse.success({}));
+      })
+      .catch((err) => {
+        debug('Failed to remove updatePost', err);
+        return res.json(ApiResponse.error());
+      });
   };
 
   // app.get('/_api/admin/users.search' , admin.api.userSearch);
   actions.api.usersSearch = function(req, res) {
     const User = crowi.model('User');
-    const email =req.query.email;
+    const email = req.query.email;
 
     User.findUsersByPartOfEmail(email, {})
-    .then(users => {
-      const result = {
-        data: users
-      };
-      return res.json(ApiResponse.success(result));
-    }).catch(err => {
-      return res.json(ApiResponse.error());
-    });
+      .then((users) => {
+        const result = {
+          data: users,
+        };
+        return res.json(ApiResponse.success(result));
+      })
+      .catch((err) => {
+        return res.json(ApiResponse.error());
+      });
   };
 
   actions.api.toggleIsEnabledForGlobalNotification = async(req, res) => {
     const id = req.query.id;
-    const isEnabled = (req.query.isEnabled == 'true');
+    const isEnabled = (req.query.isEnabled === 'true');
 
     try {
       if (isEnabled) {
@@ -1185,7 +1176,7 @@ module.exports = function(crowi, app) {
     const form = req.form.settingForm;
 
     if (!req.form.isValid) {
-      return res.json({status: false, message: req.form.errors.join('\n')});
+      return res.json({ status: false, message: req.form.errors.join('\n') });
     }
 
     await saveSetting(req, res, form);
@@ -1202,7 +1193,7 @@ module.exports = function(crowi, app) {
     const form = req.form.settingForm;
 
     if (!req.form.isValid) {
-      return res.json({status: false, message: req.form.errors.join('\n')});
+      return res.json({ status: false, message: req.form.errors.join('\n') });
     }
 
     await saveSetting(req, res, form);
@@ -1323,7 +1314,7 @@ module.exports = function(crowi, app) {
       .then(() => {
         debug('Data is successfully indexed. ------------------ ✧✧');
       })
-      .catch(err => {
+      .catch((err) => {
         logger.error('Error', err);
       });
 
@@ -1338,9 +1329,9 @@ module.exports = function(crowi, app) {
    * @param {any} form
    */
   function saveSetting(req, res, form) {
-    Config.updateNamespaceByArray('crowi', form, function(err, config) {
+    Config.updateNamespaceByArray('crowi', form, (err, config) => {
       Config.updateConfigCache('crowi', config);
-      return res.json({status: true});
+      return res.json({ status: true });
     });
   }
 
@@ -1386,7 +1377,7 @@ module.exports = function(crowi, app) {
       from: form['mail:from'],
       to: req.user.email,
       subject: 'Wiki管理設定のアップデートによるメール通知',
-      text: 'このメールは、WikiのSMTP設定のアップデートにより送信されています。'
+      text: 'このメールは、WikiのSMTP設定のアップデートにより送信されています。',
     }, callback);
   }
 
@@ -1408,4 +1399,3 @@ module.exports = function(crowi, app) {
 
   return actions;
 };
-

+ 5 - 4
src/server/routes/apiv3/healthcheck.js

@@ -1,14 +1,15 @@
 const loggerFactory = require('@alias/logger');
-const logger = loggerFactory('growi:routes:apiv3:healthcheck');   // eslint-disable-line no-unused-vars
+
+const logger = loggerFactory('growi:routes:apiv3:healthcheck'); // eslint-disable-line no-unused-vars
 
 const express = require('express');
+
 const router = express.Router();
 
 const helmet = require('helmet');
 
 module.exports = (crowi) => {
-
-  router.get('/', helmet.noCache(), async function(req, res) {
+  router.get('/', helmet.noCache(), async(req, res) => {
     const connectToMiddlewares = req.query.connectToMiddlewares;
 
     // return 200 w/o connecting to MongoDB and Elasticsearch
@@ -28,7 +29,7 @@ module.exports = (crowi) => {
       res.status(200).send({ mongo: 'OK', esInfo });
     }
     catch (err) {
-      res.status(503).send({err});
+      res.status(503).send({ err });
     }
   });
 

+ 3 - 1
src/server/routes/apiv3/index.js

@@ -1,7 +1,9 @@
 const loggerFactory = require('@alias/logger');
-const logger = loggerFactory('growi:routes:apiv3');   // eslint-disable-line no-unused-vars
+
+const logger = loggerFactory('growi:routes:apiv3'); // eslint-disable-line no-unused-vars
 
 const express = require('express');
+
 const router = express.Router();
 
 module.exports = (crowi) => {

+ 115 - 101
src/server/routes/page.js

@@ -1,22 +1,21 @@
+/* eslint-disable no-use-before-define */
 module.exports = function(crowi, app) {
-  'use strict';
-
-  const debug = require('debug')('growi:routes:page')
-    , logger = require('@alias/logger')('growi:routes:page')
-    , pathUtils = require('@commons/util/path-utils')
-    , Page = crowi.model('Page')
-    , User = crowi.model('User')
-    , Config   = crowi.model('Config')
-    , config   = crowi.getConfig()
-    , Bookmark = crowi.model('Bookmark')
-    , UpdatePost = crowi.model('UpdatePost')
-    , ApiResponse = require('../util/apiResponse')
-    , interceptorManager = crowi.getInterceptorManager()
-    , swig = require('swig-templates')
-    , getToday = require('../util/getToday')
-    , globalNotificationService = crowi.getGlobalNotificationService()
-
-    , actions = {};
+  const debug = require('debug')('growi:routes:page');
+  const logger = require('@alias/logger')('growi:routes:page');
+  const pathUtils = require('@commons/util/path-utils');
+  const Page = crowi.model('Page');
+  const User = crowi.model('User');
+  const Config = crowi.model('Config');
+  const config = crowi.getConfig();
+  const Bookmark = crowi.model('Bookmark');
+  const UpdatePost = crowi.model('UpdatePost');
+  const ApiResponse = require('../util/apiResponse');
+  const interceptorManager = crowi.getInterceptorManager();
+  const swig = require('swig-templates');
+  const getToday = require('../util/getToday');
+  const globalNotificationService = crowi.getGlobalNotificationService();
+
+  const actions = {};
 
   const PORTAL_STATUS_NOT_EXISTS = 0;
   const PORTAL_STATUS_EXISTS = 1;
@@ -25,17 +24,17 @@ module.exports = function(crowi, app) {
   // register page events
 
   const pageEvent = crowi.event('page');
-  pageEvent.on('create', function(page, user, socketClientId) {
-    page = serializeToObj(page);
-    crowi.getIo().sockets.emit('page:create', {page, user, socketClientId});
+  pageEvent.on('create', (page, user, socketClientId) => {
+    page = serializeToObj(page); // eslint-disable-line no-param-reassign
+    crowi.getIo().sockets.emit('page:create', { page, user, socketClientId });
   });
-  pageEvent.on('update', function(page, user, socketClientId) {
-    page = serializeToObj(page);
-    crowi.getIo().sockets.emit('page:update', {page, user, socketClientId});
+  pageEvent.on('update', (page, user, socketClientId) => {
+    page = serializeToObj(page); // eslint-disable-line no-param-reassign
+    crowi.getIo().sockets.emit('page:update', { page, user, socketClientId });
   });
-  pageEvent.on('delete', function(page, user, socketClientId) {
-    page = serializeToObj(page);
-    crowi.getIo().sockets.emit('page:delete', {page, user, socketClientId});
+  pageEvent.on('delete', (page, user, socketClientId) => {
+    page = serializeToObj(page); // eslint-disable-line no-param-reassign
+    crowi.getIo().sockets.emit('page:delete', { page, user, socketClientId });
   });
 
 
@@ -60,8 +59,10 @@ module.exports = function(crowi, app) {
   }
 
   function generatePager(offset, limit, totalCount) {
-    let next = null,
-      prev = null;
+    let next = null;
+
+
+    let prev = null;
 
     if (offset > 0) {
       prev = offset - limit;
@@ -78,9 +79,9 @@ module.exports = function(crowi, app) {
     }
 
     return {
-      prev: prev,
-      next: next,
-      offset: offset,
+      prev,
+      next,
+      offset,
     };
   }
 
@@ -88,17 +89,17 @@ module.exports = function(crowi, app) {
   // TODO create '/service/user-notification' module
   async function notifyToSlackByUser(page, user, slackChannels, updateOrCreate, previousRevision) {
     await page.updateSlackChannel(slackChannels)
-      .catch(err => {
+      .catch((err) => {
         logger.error('Error occured in updating slack channels: ', err);
       });
 
     if (crowi.slack) {
-      const promises = slackChannels.split(',').map(function(chan) {
+      const promises = slackChannels.split(',').map((chan) => {
         return crowi.slack.postPage(page, user, chan, updateOrCreate, previousRevision);
       });
 
       Promise.all(promises)
-      .catch(err => {
+      .catch((err) => {
         logger.error('Error occured in sending slack notification: ', err);
       });
     }
@@ -120,7 +121,7 @@ module.exports = function(crowi, app) {
 
     if (userData != null) {
       renderVars.pageUser = userData;
-      renderVars.bookmarkList = await Bookmark.findByUser(userData, {limit: 10, populatePage: true, requestUser: requestUser});
+      renderVars.bookmarkList = await Bookmark.findByUser(userData, { limit: 10, populatePage: true, requestUser });
     }
   }
 
@@ -138,7 +139,7 @@ module.exports = function(crowi, app) {
     const SEENER_THRESHOLD = 10;
 
     const queryOptions = {
-      offset: offset,
+      offset,
       limit: limit + 1,
       includeTrashed: path.startsWith('/trash/'),
       isRegExpEscapedFromPath,
@@ -167,7 +168,7 @@ module.exports = function(crowi, app) {
   }
 
   async function showPageForPresentation(req, res, next) {
-    let path = getPathFromRequest(req);
+    const path = getPathFromRequest(req);
     const revisionId = req.query.revision;
 
     let page = await Page.findByPathAndViewer(path, req.user);
@@ -211,7 +212,7 @@ module.exports = function(crowi, app) {
     }
 
     const limit = 50;
-    const offset = parseInt(req.query.offset)  || 0;
+    const offset = parseInt(req.query.offset) || 0;
 
     await addRenderVarsForDescendants(renderVars, portalPath, req.user, offset, limit);
 
@@ -227,18 +228,18 @@ module.exports = function(crowi, app) {
 
     if (page == null) {
       // check the page is forbidden or just does not exist.
-      req.isForbidden = await Page.count({path}) > 0;
+      req.isForbidden = await Page.count({ path }) > 0;
       return next();
     }
-    else if (page.redirectTo) {
+    if (page.redirectTo) {
       debug(`Redirect to '${page.redirectTo}'`);
-      return res.redirect(encodeURI(page.redirectTo + '?redirectFrom=' + pathUtils.encodePagePath(path)));
+      return res.redirect(encodeURI(`${page.redirectTo}?redirectFrom=${pathUtils.encodePagePath(path)}`));
     }
 
     logger.debug('Page is found when processing pageShowForGrowiBehavior', page._id, page.path);
 
     const limit = 50;
-    const offset = parseInt(req.query.offset)  || 0;
+    const offset = parseInt(req.query.offset) || 0;
     const renderVars = {};
 
     let view = 'customlayout-selector/page';
@@ -263,15 +264,14 @@ module.exports = function(crowi, app) {
     return res.render(view, renderVars);
   }
 
-  const getSlackChannels = async page => {
+  const getSlackChannels = async(page) => {
     if (page.extended.slack) {
       return page.extended.slack;
     }
-    else {
-      const data = await UpdatePost.findSettingsByPath(page.path);
-      const channels = data.map(e => e.channel).join(', ');
-      return channels;
-    }
+
+    const data = await UpdatePost.findSettingsByPath(page.path);
+    const channels = data.map((e) => { return e.channel }).join(', ');
+    return channels;
   };
 
   /**
@@ -282,7 +282,7 @@ module.exports = function(crowi, app) {
    */
   async function getPortalPageState(path, user) {
     const portalPath = Page.addSlashOfEnd(path);
-    let page = await Page.findByPathAndViewer(portalPath, user);
+    const page = await Page.findByPathAndViewer(portalPath, user);
 
     if (page == null) {
       // check the page is forbidden or just does not exist.
@@ -293,7 +293,6 @@ module.exports = function(crowi, app) {
   }
 
 
-
   actions.showTopPage = function(req, res) {
     return showPageListForCrowiBehavior(req, res);
   };
@@ -301,18 +300,21 @@ module.exports = function(crowi, app) {
   /**
    * switch action by behaviorType
    */
+  /* eslint-disable no-else-return */
   actions.showPageWithEndOfSlash = function(req, res, next) {
     const behaviorType = Config.behaviorType(config);
 
-    if (!behaviorType || 'crowi' === behaviorType) {
+    if (!behaviorType || behaviorType === 'crowi') {
       return showPageListForCrowiBehavior(req, res, next);
     }
     else {
-      let path = getPathFromRequest(req);   // end of slash should be omitted
+      const path = getPathFromRequest(req); // end of slash should be omitted
       // redirect and showPage action will be triggered
       return res.redirect(path);
     }
   };
+  /* eslint-enable no-else-return */
+
   /**
    * switch action
    *   - presentation mode
@@ -327,26 +329,28 @@ module.exports = function(crowi, app) {
     const behaviorType = Config.behaviorType(config);
 
     // check whether this page has portal page
-    if (!behaviorType || 'crowi' === behaviorType) {
+    if (!behaviorType || behaviorType === 'crowi') {
       const portalPagePath = pathUtils.addTrailingSlash(getPathFromRequest(req));
-      let hasPortalPage = await Page.count({ path: portalPagePath }) > 0;
+      const hasPortalPage = await Page.count({ path: portalPagePath }) > 0;
 
       if (hasPortalPage) {
         logger.debug('The portal page is found', portalPagePath);
-        return res.redirect(encodeURI(portalPagePath + '?redirectFrom=' + pathUtils.encodePagePath(req.path)));
+        return res.redirect(encodeURI(`${portalPagePath}?redirectFrom=${pathUtils.encodePagePath(req.path)}`));
       }
     }
 
     // delegate to showPageForGrowiBehavior
     return showPageForGrowiBehavior(req, res, next);
   };
+
   /**
    * switch action by behaviorType
    */
+  /* eslint-disable no-else-return */
   actions.trashPageListShowWrapper = function(req, res) {
     const behaviorType = Config.behaviorType(config);
 
-    if (!behaviorType || 'crowi' === behaviorType) {
+    if (!behaviorType || behaviorType === 'crowi') {
       // Crowi behavior for '/trash/*'
       return actions.deletedPageListShow(req, res);
     }
@@ -355,13 +359,16 @@ module.exports = function(crowi, app) {
       return res.redirect('/trash');
     }
   };
+  /* eslint-enable no-else-return */
+
   /**
    * switch action by behaviorType
    */
+  /* eslint-disable no-else-return */
   actions.trashPageShowWrapper = function(req, res) {
     const behaviorType = Config.behaviorType(config);
 
-    if (!behaviorType || 'crowi' === behaviorType) {
+    if (!behaviorType || behaviorType === 'crowi') {
       // redirect to '/trash/'
       return res.redirect('/trash/');
     }
@@ -369,23 +376,26 @@ module.exports = function(crowi, app) {
       // Crowi behavior for '/trash/*'
       return actions.deletedPageListShow(req, res);
     }
-
   };
+  /* eslint-enable no-else-return */
+
   /**
    * switch action by behaviorType
    */
+  /* eslint-disable no-else-return */
   actions.deletedPageListShowWrapper = function(req, res) {
     const behaviorType = Config.behaviorType(config);
 
-    if (!behaviorType || 'crowi' === behaviorType) {
+    if (!behaviorType || behaviorType === 'crowi') {
       // Crowi behavior for '/trash/*'
       return actions.deletedPageListShow(req, res);
     }
     else {
-      const path = '/trash' + getPathFromRequest(req);
+      const path = `/trash${getPathFromRequest(req)}`;
       return res.redirect(path);
     }
   };
+  /* eslint-enable no-else-return */
 
   actions.notFound = async function(req, res) {
     const path = getPathFromRequest(req);
@@ -417,26 +427,26 @@ module.exports = function(crowi, app) {
     }
 
     const limit = 50;
-    const offset = parseInt(req.query.offset)  || 0;
+    const offset = parseInt(req.query.offset) || 0;
     await addRenderVarsForDescendants(renderVars, path, req.user, offset, limit);
 
     return res.render(view, renderVars);
   };
 
   actions.deletedPageListShow = async function(req, res) {
-    const path = '/trash' + getPathFromRequest(req);
+    const path = `/trash${getPathFromRequest(req)}`;
     const limit = 50;
-    const offset = parseInt(req.query.offset)  || 0;
+    const offset = parseInt(req.query.offset) || 0;
 
     const queryOptions = {
-      offset: offset,
+      offset,
       limit: limit + 1,
       includeTrashed: true,
     };
 
     const renderVars = {
       page: null,
-      path: path,
+      path,
       pages: [],
     };
 
@@ -449,7 +459,6 @@ module.exports = function(crowi, app) {
     renderVars.pager = generatePager(result.offset, result.limit, result.totalCount);
     renderVars.pages = pathUtils.encodePagesPath(result.pages);
     res.render('customlayout-selector/page_list', renderVars);
-
   };
 
   /**
@@ -468,7 +477,8 @@ module.exports = function(crowi, app) {
   };
 
 
-  const api = actions.api = {};
+  const api = {};
+  actions.api = api;
 
   /**
    * @api {get} /pages.list List pages by user
@@ -481,7 +491,7 @@ module.exports = function(crowi, app) {
   api.list = async function(req, res) {
     const username = req.query.user || null;
     const path = req.query.path || null;
-    const limit = + req.query.limit || 50;
+    const limit = +req.query.limit || 50;
     const offset = parseInt(req.query.offset) || 0;
 
     const queryOptions = { offset, limit: limit + 1 };
@@ -534,7 +544,7 @@ module.exports = function(crowi, app) {
     const grant = req.body.grant || null;
     const grantUserGroupId = req.body.grantUserGroupId || null;
     const overwriteScopesOfDescendants = req.body.overwriteScopesOfDescendants || null;
-    const isSlackEnabled = !!req.body.isSlackEnabled;   // cast to boolean
+    const isSlackEnabled = !!req.body.isSlackEnabled; // cast to boolean
     const slackChannels = req.body.slackChannels || null;
     const socketClientId = req.body.socketClientId || undefined;
 
@@ -543,12 +553,14 @@ module.exports = function(crowi, app) {
     }
 
     // check page existence
-    const isExist = await Page.count({path: pagePath}) > 0;
+    const isExist = await Page.count({ path: pagePath }) > 0;
     if (isExist) {
       return res.json(ApiResponse.error('Page exists', 'already_exists'));
     }
 
-    const options = {grant, grantUserGroupId, overwriteScopesOfDescendants, socketClientId};
+    const options = {
+      grant, grantUserGroupId, overwriteScopesOfDescendants, socketClientId,
+    };
     const createdPage = await Page.create(pagePath, body, req.user, options);
 
     const result = { page: serializeToObj(createdPage) };
@@ -596,10 +608,10 @@ module.exports = function(crowi, app) {
     const grant = req.body.grant || null;
     const grantUserGroupId = req.body.grantUserGroupId || null;
     const overwriteScopesOfDescendants = req.body.overwriteScopesOfDescendants || null;
-    const isSlackEnabled = !!req.body.isSlackEnabled;                     // cast to boolean
+    const isSlackEnabled = !!req.body.isSlackEnabled; // cast to boolean
     const slackChannels = req.body.slackChannels || null;
-    const pageTags = req.body.pageTags || null;
-    const isSyncRevisionToHackmd = !!req.body.isSyncRevisionToHackmd;     // cast to boolean
+    // const pageTags = req.body.pageTags || null;
+    const isSyncRevisionToHackmd = !!req.body.isSyncRevisionToHackmd; // cast to boolean
     const socketClientId = req.body.socketClientId || undefined;
 
     if (pageId === null || pageBody === null) {
@@ -607,7 +619,7 @@ module.exports = function(crowi, app) {
     }
 
     // check page existence
-    const isExist = await Page.count({_id: pageId}) > 0;
+    const isExist = await Page.count({ _id: pageId }) > 0;
     if (!isExist) {
       return res.json(ApiResponse.error(`Page('${pageId}' is not found or forbidden`, 'notfound_or_forbidden'));
     }
@@ -618,7 +630,7 @@ module.exports = function(crowi, app) {
       return res.json(ApiResponse.error('Posted param "revisionId" is outdated.', 'outdated'));
     }
 
-    const options = {isSyncRevisionToHackmd, socketClientId};
+    const options = { isSyncRevisionToHackmd, socketClientId };
     if (grant != null) {
       options.grant = grant;
     }
@@ -702,7 +714,7 @@ module.exports = function(crowi, app) {
     }
 
     const result = {};
-    result.page = page;   // TODO consider to use serializeToObj method -- 2018.08.06 Yuki Takei
+    result.page = page; // TODO consider to use serializeToObj method -- 2018.08.06 Yuki Takei
 
     return res.json(ApiResponse.success(result));
   };
@@ -720,7 +732,7 @@ module.exports = function(crowi, app) {
     if (!pageId) {
       return res.json(ApiResponse.error('page_id required'));
     }
-    else if (!req.user) {
+    if (!req.user) {
       return res.json(ApiResponse.error('user required'));
     }
 
@@ -754,7 +766,7 @@ module.exports = function(crowi, app) {
     if (!pageId) {
       return res.json(ApiResponse.error('page_id required'));
     }
-    else if (!req.user) {
+    if (!req.user) {
       return res.json(ApiResponse.error('user required'));
     }
 
@@ -796,7 +808,7 @@ module.exports = function(crowi, app) {
     if (!pageId) {
       return res.json(ApiResponse.error('page_id required'));
     }
-    else if (req.user == null) {
+    if (req.user == null) {
       return res.json(ApiResponse.error('user required'));
     }
 
@@ -834,17 +846,19 @@ module.exports = function(crowi, app) {
     }
 
     UpdatePost.findSettingsByPath(path)
-    .then(function(data) {
-      data = data.map(function(e) {
-        return e.channel;
+      .then((data) => {
+        // eslint-disable-next-line no-param-reassign
+        data = data.map((e) => {
+          return e.channel;
+        });
+        debug('Found updatePost data', data);
+        const result = { updatePost: data };
+        return res.json(ApiResponse.success(result));
+      })
+      .catch((err) => {
+        debug('Error occured while get setting', err);
+        return res.json(ApiResponse.error({}));
       });
-      debug('Found updatePost data', data);
-      const result = {updatePost: data};
-      return res.json(ApiResponse.success(result));
-    }).catch(function(err) {
-      debug('Error occured while get setting', err);
-      return res.json(ApiResponse.error({}));
-    });
   };
 
   /**
@@ -865,7 +879,7 @@ module.exports = function(crowi, app) {
     // get recursively flag
     const isRecursively = (req.body.recursively != null);
 
-    const options = {socketClientId};
+    const options = { socketClientId };
 
     let page = await Page.findByIdAndViewer(pageId, req.user);
 
@@ -904,7 +918,7 @@ module.exports = function(crowi, app) {
 
     debug('Page deleted', page.path);
     const result = {};
-    result.page = page;   // TODO consider to use serializeToObj method -- 2018.08.06 Yuki Takei
+    result.page = page; // TODO consider to use serializeToObj method -- 2018.08.06 Yuki Takei
 
     res.json(ApiResponse.success(result));
 
@@ -934,10 +948,10 @@ module.exports = function(crowi, app) {
       }
 
       if (isRecursively) {
-        page = await Page.revertDeletedPageRecursively(page, req.user, {socketClientId});
+        page = await Page.revertDeletedPageRecursively(page, req.user, { socketClientId });
       }
       else {
-        page = await Page.revertDeletedPage(page, req.user, {socketClientId});
+        page = await Page.revertDeletedPage(page, req.user, { socketClientId });
       }
     }
     catch (err) {
@@ -946,7 +960,7 @@ module.exports = function(crowi, app) {
     }
 
     const result = {};
-    result.page = page;   // TODO consider to use serializeToObj method -- 2018.08.06 Yuki Takei
+    result.page = page; // TODO consider to use serializeToObj method -- 2018.08.06 Yuki Takei
 
     return res.json(ApiResponse.success(result));
   };
@@ -1009,7 +1023,7 @@ module.exports = function(crowi, app) {
     }
 
     const result = {};
-    result.page = page;   // TODO consider to use serializeToObj method -- 2018.08.06 Yuki Takei
+    result.page = page; // TODO consider to use serializeToObj method -- 2018.08.06 Yuki Takei
 
     res.json(ApiResponse.success(result));
 
@@ -1085,12 +1099,12 @@ module.exports = function(crowi, app) {
       return res.json(ApiResponse.error(`Page (id='${pageId}') is not a user home`));
     }
 
-    const limit = + req.query.limit || 50;
-    const offset = + req.query.offset || 0;
-    const queryOptions = { offset: offset, limit: limit };
+    const limit = +req.query.limit || 50;
+    const offset = +req.query.offset || 0;
+    const queryOptions = { offset, limit };
 
     try {
-      let result = await Page.findListByCreator(page.creator, req.user, queryOptions);
+      const result = await Page.findListByCreator(page.creator, req.user, queryOptions);
       result.pages = pathUtils.encodePagesPath(result.pages);
 
       return res.json(ApiResponse.success(result));

+ 14 - 11
src/server/routes/revision.js

@@ -1,6 +1,4 @@
 module.exports = function(crowi, app) {
-  'use strict';
-
   const debug = require('debug')('growi:routes:revision');
   const logger = require('@alias/logger')('growi:routes:revision');
   const Page = crowi.model('Page');
@@ -55,12 +53,14 @@ module.exports = function(crowi, app) {
 
     if (pageId && crowi.isPageId(pageId)) {
       Page.findByIdAndViewer(pageId, req.user)
-      .then(function(pageData) {
+      .then((pageData) => {
         debug('Page found', pageData._id, pageData.path);
         return Revision.findRevisionIdList(pageData.path);
-      }).then(function(revisions) {
-        return res.json(ApiResponse.success({revisions}));
-      }).catch(function(err) {
+      })
+      .then((revisions) => {
+        return res.json(ApiResponse.success({ revisions }));
+      })
+      .catch((err) => {
         return res.json(ApiResponse.error(err));
       });
     }
@@ -83,20 +83,23 @@ module.exports = function(crowi, app) {
 
     if (pageId) {
       Page.findByIdAndViewer(pageId, req.user)
-      .then(function(pageData) {
+      .then((pageData) => {
         debug('Page found', pageData._id, pageData.path);
         return Revision.findRevisionList(pageData.path, {});
-      }).then(function(revisions) {
+      })
+      .then((revisions) => {
         return res.json(ApiResponse.success(revisions));
-      }).catch(function(err) {
+      })
+      .catch((err) => {
         return res.json(ApiResponse.error(err));
       });
     }
     else if (revisionIds.length > 0) {
       Revision.findRevisions(revisionIds)
-      .then(function(revisions) {
+      .then((revisions) => {
         return res.json(ApiResponse.success(revisions));
-      }).catch(function(err) {
+      })
+      .catch((err) => {
         return res.json(ApiResponse.error(err));
       });
     }

+ 4 - 4
src/server/routes/search.js

@@ -1,12 +1,11 @@
 module.exports = function(crowi, app) {
-  'use strict';
-
   // var debug = require('debug')('growi:routes:search')
   const Page = crowi.model('Page');
   const ApiResponse = require('../util/apiResponse');
   const ApiPaginate = require('../util/apiPaginate');
+
   const actions = {};
-  const api = (actions.api = {});
+  const api = {};
 
   actions.searchPage = function(req, res) {
     const keyword = req.query.q || null;
@@ -75,7 +74,7 @@ module.exports = function(crowi, app) {
       result.meta = esResult.meta;
       result.totalCount = findResult.totalCount;
       result.data = findResult.pages
-        .map(page => {
+        .map((page) => {
           page.bookmarkCount = (page._source && page._source.bookmark_count) || 0;
           return page;
         })
@@ -91,5 +90,6 @@ module.exports = function(crowi, app) {
     return res.json(ApiResponse.success(result));
   };
 
+  actions.api = api;
   return actions;
 };

+ 21 - 22
src/server/routes/user.js

@@ -1,40 +1,39 @@
 module.exports = function(crowi, app) {
-  'use strict';
+  const User = crowi.model('User');
+  const Bookmark = crowi.model('Bookmark');
+  const ApiResponse = require('../util/apiResponse');
 
-  var Page = crowi.model('Page')
-    , User = crowi.model('User')
-    , Revision = crowi.model('Revision')
-    , Bookmark = crowi.model('Bookmark')
-    , ApiResponse = require('../util/apiResponse')
-    , actions = {}
-    , api = {};
+  const actions = {};
+
+
+  const api = {};
 
   actions.api = api;
 
   api.bookmarks = function(req, res) {
-    var options = {
+    const options = {
       skip: req.query.offset || 0,
       limit: req.query.limit || 50,
     };
-    Bookmark.findByUser(req.user, options, function(err, bookmarks) {
+    Bookmark.findByUser(req.user, options, (err, bookmarks) => {
       res.json(bookmarks);
     });
   };
 
   api.checkUsername = function(req, res) {
-    var username = req.query.username;
+    const username = req.query.username;
 
     User.findUserByUsername(username)
-    .then(function(userData) {
-      if (userData) {
-        return res.json({ valid: false });
-      }
-      else {
+      .then((userData) => {
+        if (userData) {
+          return res.json({ valid: false });
+        }
+
         return res.json({ valid: true });
-      }
-    }).catch(function(err) {
-      return res.json({ valid: true });
-    });
+      })
+      .catch((err) => {
+        return res.json({ valid: true });
+      });
   };
 
   /**
@@ -58,9 +57,9 @@ module.exports = function(crowi, app) {
     const data = {};
     try {
       const users = await userFetcher.populate(User.IMAGE_POPULATION);
-      data.users = users.map(user => {
+      data.users = users.map((user) => {
         // omit email
-        if (true !== user.isEmailPublished) { // compare to 'true' because Crowi original data doesn't have 'isEmailPublished'
+        if (user.isEmailPublished !== true) { // compare to 'true' because Crowi original data doesn't have 'isEmailPublished'
           user.email = undefined;
         }
         return user.toObject({ virtuals: true });