|
|
@@ -1,7 +1,7 @@
|
|
|
module.exports = function(crowi, app) {
|
|
|
'use strict';
|
|
|
|
|
|
- var debug = require('debug')('crowi:routes:admin')
|
|
|
+ var debug = require('debug')('growi:routes:admin')
|
|
|
, fs = require('fs')
|
|
|
, models = crowi.models
|
|
|
, Page = models.Page
|
|
|
@@ -43,14 +43,16 @@ module.exports = function(crowi, app) {
|
|
|
if (pagerMin === 1) {
|
|
|
if (MAX_PAGE_LIST < pagesCount) {
|
|
|
pagerMax = MAX_PAGE_LIST;
|
|
|
- } else {
|
|
|
+ }
|
|
|
+ else {
|
|
|
pagerMax = pagesCount;
|
|
|
}
|
|
|
}
|
|
|
if (pagerMax === pagesCount) {
|
|
|
if ((pagerMax - MAX_PAGE_LIST) < 1) {
|
|
|
pagerMin = 1;
|
|
|
- } else {
|
|
|
+ }
|
|
|
+ else {
|
|
|
pagerMin = pagerMax - MAX_PAGE_LIST;
|
|
|
}
|
|
|
}
|
|
|
@@ -121,7 +123,8 @@ module.exports = function(crowi, app) {
|
|
|
req.flash('successMessage', ['Successfully updated!']);
|
|
|
return res.redirect('/admin/markdown');
|
|
|
});
|
|
|
- } else {
|
|
|
+ }
|
|
|
+ else {
|
|
|
req.flash('errorMessage', req.form.errors);
|
|
|
return res.redirect('/admin/markdown');
|
|
|
}
|
|
|
@@ -134,17 +137,17 @@ module.exports = function(crowi, app) {
|
|
|
settingForm = Config.setupCofigFormData('crowi', req.config);
|
|
|
|
|
|
const highlightJsCssSelectorOptions = {
|
|
|
- "github": { name: '[Light] Github', border: false },
|
|
|
- "github-gist": { name: '[Light] Github Gist', border: true },
|
|
|
- "atom-one-light": { name: '[Light] Atom One Light', border: true },
|
|
|
- "xcode": { name: '[Light] Xcode', border: true },
|
|
|
- "vs": { name: '[Light] Vs', border: true },
|
|
|
- "atom-one-dark": { name: '[Dark] Atom One Dark', border: false },
|
|
|
- "hybrid": { name: '[Dark] Hybrid', border: false },
|
|
|
- "monokai": { name: '[Dark] Monokai', border: false },
|
|
|
- "tomorrow-night": { name: '[Dark] Tomorrow Night', border: false },
|
|
|
- "vs2015": { name: '[Dark] Vs 2015', border: false },
|
|
|
- }
|
|
|
+ 'github': { name: '[Light] Github', border: false },
|
|
|
+ 'github-gist': { name: '[Light] Github Gist', border: true },
|
|
|
+ 'atom-one-light': { name: '[Light] Atom One Light', border: true },
|
|
|
+ 'xcode': { name: '[Light] Xcode', border: true },
|
|
|
+ 'vs': { name: '[Light] Vs', border: true },
|
|
|
+ 'atom-one-dark': { name: '[Dark] Atom One Dark', border: false },
|
|
|
+ 'hybrid': { name: '[Dark] Hybrid', border: false },
|
|
|
+ 'monokai': { name: '[Dark] Monokai', border: false },
|
|
|
+ 'tomorrow-night': { name: '[Dark] Tomorrow Night', border: false },
|
|
|
+ 'vs2015': { name: '[Dark] Vs 2015', border: false },
|
|
|
+ };
|
|
|
|
|
|
return res.render('admin/customize', {
|
|
|
settingForm: settingForm,
|
|
|
@@ -198,7 +201,8 @@ module.exports = function(crowi, app) {
|
|
|
return res.redirect('/admin/notification');
|
|
|
});
|
|
|
});
|
|
|
- } else {
|
|
|
+ }
|
|
|
+ else {
|
|
|
req.flash('errorMessage', req.form.errors);
|
|
|
return res.redirect('/admin/notification');
|
|
|
}
|
|
|
@@ -217,16 +221,17 @@ module.exports = function(crowi, app) {
|
|
|
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!']);
|
|
|
- }
|
|
|
+ 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!']);
|
|
|
+ }
|
|
|
|
|
|
- return res.redirect('/admin/notification');
|
|
|
- });
|
|
|
+ return res.redirect('/admin/notification');
|
|
|
+ });
|
|
|
}).catch(err => {
|
|
|
debug('oauth response ERROR', err);
|
|
|
req.flash('errorMessage', ['Failed to fetch access_token. Please do connect again.']);
|
|
|
@@ -254,7 +259,8 @@ module.exports = function(crowi, app) {
|
|
|
return res.redirect('/admin/notification#slack-incoming-webhooks');
|
|
|
});
|
|
|
});
|
|
|
- } else {
|
|
|
+ }
|
|
|
+ else {
|
|
|
req.flash('errorMessage', req.form.errors);
|
|
|
return res.redirect('/admin/notification#slack-incoming-webhooks');
|
|
|
}
|
|
|
@@ -290,7 +296,7 @@ module.exports = function(crowi, app) {
|
|
|
});
|
|
|
})
|
|
|
.then(function() {
|
|
|
- return search.buildIndex()
|
|
|
+ return search.buildIndex();
|
|
|
})
|
|
|
.then(function(data) {
|
|
|
if (!data.errors) {
|
|
|
@@ -302,7 +308,8 @@ module.exports = function(crowi, app) {
|
|
|
if (!data.errors) {
|
|
|
debug('Data is successfully indexed.');
|
|
|
req.flash('successMessage', 'Data is successfully indexed.');
|
|
|
- } else {
|
|
|
+ }
|
|
|
+ else {
|
|
|
debug('Data index error.', data.errors);
|
|
|
req.flash('errorMessage', `Data index error: ${data.errors}`);
|
|
|
}
|
|
|
@@ -336,12 +343,14 @@ module.exports = function(crowi, app) {
|
|
|
User.createUsersByInvitation(form.emailList.split('\n'), toSendEmail, function(err, userList) {
|
|
|
if (err) {
|
|
|
req.flash('errorMessage', req.form.errors.join('\n'));
|
|
|
- } else {
|
|
|
+ }
|
|
|
+ else {
|
|
|
req.flash('createdUser', userList);
|
|
|
}
|
|
|
return res.redirect('/admin/users');
|
|
|
});
|
|
|
- } else {
|
|
|
+ }
|
|
|
+ else {
|
|
|
req.flash('errorMessage', req.form.errors.join('\n'));
|
|
|
return res.redirect('/admin/users');
|
|
|
}
|
|
|
@@ -353,7 +362,8 @@ module.exports = function(crowi, app) {
|
|
|
userData.makeAdmin(function(err, userData) {
|
|
|
if (err === null) {
|
|
|
req.flash('successMessage', userData.name + 'さんのアカウントを管理者に設定しました。');
|
|
|
- } else {
|
|
|
+ }
|
|
|
+ else {
|
|
|
req.flash('errorMessage', '更新に失敗しました。');
|
|
|
debug(err, userData);
|
|
|
}
|
|
|
@@ -368,7 +378,8 @@ module.exports = function(crowi, app) {
|
|
|
userData.removeFromAdmin(function(err, userData) {
|
|
|
if (err === null) {
|
|
|
req.flash('successMessage', userData.name + 'さんのアカウントを管理者から外しました。');
|
|
|
- } else {
|
|
|
+ }
|
|
|
+ else {
|
|
|
req.flash('errorMessage', '更新に失敗しました。');
|
|
|
debug(err, userData);
|
|
|
}
|
|
|
@@ -383,7 +394,8 @@ module.exports = function(crowi, app) {
|
|
|
userData.statusActivate(function(err, userData) {
|
|
|
if (err === null) {
|
|
|
req.flash('successMessage', userData.name + 'さんのアカウントを有効化しました');
|
|
|
- } else {
|
|
|
+ }
|
|
|
+ else {
|
|
|
req.flash('errorMessage', '更新に失敗しました。');
|
|
|
debug(err, userData);
|
|
|
}
|
|
|
@@ -399,7 +411,8 @@ module.exports = function(crowi, app) {
|
|
|
userData.statusSuspend(function(err, userData) {
|
|
|
if (err === null) {
|
|
|
req.flash('successMessage', userData.name + 'さんのアカウントを利用停止にしました');
|
|
|
- } else {
|
|
|
+ }
|
|
|
+ else {
|
|
|
req.flash('errorMessage', '更新に失敗しました。');
|
|
|
debug(err, userData);
|
|
|
}
|
|
|
@@ -436,7 +449,7 @@ module.exports = function(crowi, app) {
|
|
|
throw new Error(err.message);
|
|
|
}
|
|
|
return userData;
|
|
|
- })
|
|
|
+ });
|
|
|
})
|
|
|
.then((userData) => {
|
|
|
return Page.removePageByPath(`/user/${username}`)
|
|
|
@@ -461,7 +474,8 @@ module.exports = function(crowi, app) {
|
|
|
if (err) {
|
|
|
debug('Error while removing user.', err, id);
|
|
|
req.flash('errorMessage', '完全な削除に失敗しました。');
|
|
|
- } else {
|
|
|
+ }
|
|
|
+ else {
|
|
|
req.flash('successMessage', '削除しました');
|
|
|
}
|
|
|
return res.redirect('/admin/users');
|
|
|
@@ -481,7 +495,7 @@ module.exports = function(crowi, app) {
|
|
|
debug('Error on reseting password', err);
|
|
|
return res.json(ApiResponse.error('Error'));
|
|
|
});
|
|
|
- }
|
|
|
+ };
|
|
|
|
|
|
actions.externalAccount = {};
|
|
|
actions.externalAccount.index = function(req, res) {
|
|
|
@@ -494,7 +508,7 @@ module.exports = function(crowi, app) {
|
|
|
return res.render('admin/external-accounts', {
|
|
|
accounts: result.docs,
|
|
|
pager: pager
|
|
|
- })
|
|
|
+ });
|
|
|
});
|
|
|
};
|
|
|
|
|
|
@@ -515,13 +529,13 @@ module.exports = function(crowi, app) {
|
|
|
};
|
|
|
|
|
|
actions.userGroup = {};
|
|
|
- actions.userGroup.index = function (req, res) {
|
|
|
+ actions.userGroup.index = function(req, res) {
|
|
|
var page = parseInt(req.query.page) || 1;
|
|
|
var renderVar = {
|
|
|
- userGroups : [],
|
|
|
- userGroupRelations : new Map(),
|
|
|
- pager : null,
|
|
|
- }
|
|
|
+ userGroups: [],
|
|
|
+ userGroupRelations: new Map(),
|
|
|
+ pager: null,
|
|
|
+ };
|
|
|
|
|
|
UserGroup.findUserGroupsWithPagination({ page: page })
|
|
|
.then((result) => {
|
|
|
@@ -539,31 +553,31 @@ module.exports = function(crowi, app) {
|
|
|
});
|
|
|
})
|
|
|
.then((allRelationsPromise) => {
|
|
|
- return Promise.all(allRelationsPromise)
|
|
|
+ return Promise.all(allRelationsPromise);
|
|
|
})
|
|
|
.then((relations) => {
|
|
|
renderVar.userGroupRelations = new Map(relations);
|
|
|
- debug("in findUserGroupsWithPagination findAllRelationForUserGroupResult", renderVar.userGroupRelations);
|
|
|
+ debug('in findUserGroupsWithPagination findAllRelationForUserGroupResult', renderVar.userGroupRelations);
|
|
|
return res.render('admin/user-groups', renderVar);
|
|
|
})
|
|
|
.catch( function(err) {
|
|
|
- debug('Error on find all relations', err);
|
|
|
- return res.json(ApiResponse.error('Error'));
|
|
|
+ debug('Error on find all relations', err);
|
|
|
+ return res.json(ApiResponse.error('Error'));
|
|
|
});
|
|
|
};
|
|
|
|
|
|
// グループ詳細
|
|
|
- actions.userGroup.detail = function (req, res) {
|
|
|
+ actions.userGroup.detail = function(req, res) {
|
|
|
var name = req.params.name;
|
|
|
var renderVar = {
|
|
|
userGroup: null,
|
|
|
userGroupRelations: [],
|
|
|
pageGroupRelations: [],
|
|
|
notRelatedusers: []
|
|
|
- }
|
|
|
+ };
|
|
|
var targetUserGroup = null;
|
|
|
UserGroup.findUserGroupByName(name)
|
|
|
- .then(function (userGroup) {
|
|
|
+ .then(function(userGroup) {
|
|
|
targetUserGroup = userGroup;
|
|
|
if (targetUserGroup == null) {
|
|
|
req.flash('errorMessage', 'グループがありません');
|
|
|
@@ -595,15 +609,15 @@ module.exports = function(crowi, app) {
|
|
|
debug('Error on get userGroupDetail', err);
|
|
|
return res.redirect('/admin/user-groups');
|
|
|
});
|
|
|
- }
|
|
|
+ };
|
|
|
|
|
|
//グループの生成
|
|
|
- actions.userGroup.create = function (req, res) {
|
|
|
+ actions.userGroup.create = function(req, res) {
|
|
|
var form = req.form.createGroupForm;
|
|
|
if (req.form.isValid) {
|
|
|
UserGroup.createGroupByName(form.userGroupName)
|
|
|
.then((newUserGroup) => {
|
|
|
- req.flash('successMessage', newUserGroup.name)
|
|
|
+ req.flash('successMessage', newUserGroup.name);
|
|
|
req.flash('createdUserGroup', newUserGroup);
|
|
|
return res.redirect('/admin/user-groups');
|
|
|
})
|
|
|
@@ -611,14 +625,15 @@ module.exports = function(crowi, app) {
|
|
|
debug('create userGroup error:', err);
|
|
|
req.flash('errorMessage', '同じグループ名が既に存在します。');
|
|
|
});
|
|
|
- } else {
|
|
|
+ }
|
|
|
+ else {
|
|
|
req.flash('errorMessage', req.form.errors.join('\n'));
|
|
|
return res.redirect('/admin/user-groups');
|
|
|
}
|
|
|
};
|
|
|
|
|
|
//
|
|
|
- actions.userGroup.update = function (req, res) {
|
|
|
+ actions.userGroup.update = function(req, res) {
|
|
|
|
|
|
var userGroupId = req.params.userGroupId;
|
|
|
var name = req.body.name;
|
|
|
@@ -654,7 +669,7 @@ module.exports = function(crowi, app) {
|
|
|
});
|
|
|
};
|
|
|
|
|
|
- actions.userGroup.uploadGroupPicture = function (req, res) {
|
|
|
+ actions.userGroup.uploadGroupPicture = function(req, res) {
|
|
|
var fileUploader = require('../util/fileUploader')(crowi, app);
|
|
|
//var storagePlugin = new pluginService('storage');
|
|
|
//var storage = require('../service/storage').StorageService(config);
|
|
|
@@ -669,7 +684,7 @@ module.exports = function(crowi, app) {
|
|
|
});
|
|
|
}
|
|
|
|
|
|
- UserGroup.findById(userGroupId, function (err, userGroupData) {
|
|
|
+ UserGroup.findById(userGroupId, function(err, userGroupData) {
|
|
|
if (!userGroupData) {
|
|
|
return res.json({
|
|
|
'status': false,
|
|
|
@@ -691,11 +706,11 @@ module.exports = function(crowi, app) {
|
|
|
var tmpFileStream = fs.createReadStream(tmpPath, { flags: 'r', encoding: null, fd: null, mode: '0666', autoClose: true });
|
|
|
|
|
|
fileUploader.uploadFile(filePath, tmpFile.mimetype, tmpFileStream, {})
|
|
|
- .then(function (data) {
|
|
|
+ .then(function(data) {
|
|
|
var imageUrl = fileUploader.generateUrl(filePath);
|
|
|
userGroupData.updateImage(imageUrl)
|
|
|
.then(() => {
|
|
|
- fs.unlink(tmpPath, function (err) {
|
|
|
+ fs.unlink(tmpPath, function(err) {
|
|
|
if (err) {
|
|
|
debug('Error while deleting tmp file.', err);
|
|
|
}
|
|
|
@@ -707,7 +722,7 @@ module.exports = function(crowi, app) {
|
|
|
});
|
|
|
});
|
|
|
});
|
|
|
- }).catch(function (err) {
|
|
|
+ }).catch(function(err) {
|
|
|
debug('Uploading error', err);
|
|
|
|
|
|
return res.json({
|
|
|
@@ -719,7 +734,7 @@ module.exports = function(crowi, app) {
|
|
|
|
|
|
};
|
|
|
|
|
|
- actions.userGroup.deletePicture = function (req, res) {
|
|
|
+ actions.userGroup.deletePicture = function(req, res) {
|
|
|
|
|
|
var userGroupId = req.params.userGroupId;
|
|
|
let userGroupName = null;
|
|
|
@@ -753,12 +768,12 @@ module.exports = function(crowi, app) {
|
|
|
};
|
|
|
|
|
|
// app.post('/_api/admin/user-group/delete' , admin.userGroup.removeCompletely);
|
|
|
- actions.userGroup.removeCompletely = function (req, res) {
|
|
|
+ actions.userGroup.removeCompletely = function(req, res) {
|
|
|
const id = req.body.user_group_id;
|
|
|
|
|
|
UserGroup.removeCompletelyById(id)
|
|
|
.then(() => {
|
|
|
- req.flash('successMessage', '削除しました');
|
|
|
+ req.flash('successMessage', '削除しました');
|
|
|
return res.redirect('/admin/user-groups');
|
|
|
})
|
|
|
.catch((err) => {
|
|
|
@@ -766,12 +781,12 @@ module.exports = function(crowi, app) {
|
|
|
req.flash('errorMessage', '完全な削除に失敗しました。');
|
|
|
return res.redirect('/admin/user-groups');
|
|
|
});
|
|
|
- }
|
|
|
+ };
|
|
|
|
|
|
actions.userGroupRelation = {};
|
|
|
actions.userGroupRelation.index = function(req, res) {
|
|
|
|
|
|
- }
|
|
|
+ };
|
|
|
|
|
|
actions.userGroupRelation.create = function(req, res) {
|
|
|
const User = crowi.model('User');
|
|
|
@@ -795,18 +810,18 @@ module.exports = function(crowi, app) {
|
|
|
userGroup = resolves[0];
|
|
|
user = resolves[1];
|
|
|
// Relation を作成
|
|
|
- UserGroupRelation.createRelation(userGroup, user)
|
|
|
+ UserGroupRelation.createRelation(userGroup, user);
|
|
|
})
|
|
|
.then((result) => {
|
|
|
return res.redirect('/admin/user-group-detail/' + userGroup.name);
|
|
|
}).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.name);
|
|
|
+ return res.redirect('/admin/user-group-detail/' + userGroup.name);
|
|
|
});
|
|
|
- }
|
|
|
+ };
|
|
|
|
|
|
- actions.userGroupRelation.remove = function (req, res) {
|
|
|
+ actions.userGroupRelation.remove = function(req, res) {
|
|
|
const UserGroupRelation = crowi.model('UserGroupRelation');
|
|
|
var name = req.params.name;
|
|
|
var relationId = req.params.relationId;
|
|
|
@@ -821,7 +836,7 @@ module.exports = function(crowi, app) {
|
|
|
req.flash('errorMessage', 'グループのユーザ削除に失敗しました。');
|
|
|
});
|
|
|
|
|
|
- }
|
|
|
+ };
|
|
|
|
|
|
actions.api = {};
|
|
|
actions.api.appSetting = function(req, res) {
|
|
|
@@ -841,10 +856,12 @@ module.exports = function(crowi, app) {
|
|
|
|
|
|
return saveSetting(req, res, form);
|
|
|
});
|
|
|
- } else {
|
|
|
+ }
|
|
|
+ else {
|
|
|
return saveSetting(req, res, form);
|
|
|
}
|
|
|
- } else {
|
|
|
+ }
|
|
|
+ else {
|
|
|
return res.json({status: false, message: req.form.errors.join('\n')});
|
|
|
}
|
|
|
};
|
|
|
@@ -855,7 +872,8 @@ module.exports = function(crowi, app) {
|
|
|
if (req.form.isValid) {
|
|
|
debug('form content', form);
|
|
|
return saveSetting(req, res, form);
|
|
|
- } else {
|
|
|
+ }
|
|
|
+ else {
|
|
|
return res.json({status: false, message: req.form.errors.join('\n')});
|
|
|
}
|
|
|
};
|
|
|
@@ -891,10 +909,11 @@ module.exports = function(crowi, app) {
|
|
|
if (req.form.isValid) {
|
|
|
debug('form content', form);
|
|
|
return saveSetting(req, res, form);
|
|
|
- } else {
|
|
|
+ }
|
|
|
+ else {
|
|
|
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) {
|
|
|
@@ -955,8 +974,7 @@ module.exports = function(crowi, app) {
|
|
|
* @param {any} res
|
|
|
* @param {any} form
|
|
|
*/
|
|
|
- function saveSetting(req, res, form)
|
|
|
- {
|
|
|
+ function saveSetting(req, res, form) {
|
|
|
Config.updateNamespaceByArray('crowi', form, function(err, config) {
|
|
|
Config.updateConfigCache('crowi', config);
|
|
|
return res.json({status: true});
|
|
|
@@ -973,8 +991,8 @@ module.exports = function(crowi, app) {
|
|
|
return new Promise((resolve, reject) => {
|
|
|
Config.updateNamespaceByArray('crowi', form, (err, config) => {
|
|
|
if (err) {
|
|
|
- return reject(err)
|
|
|
- };
|
|
|
+ return reject(err);
|
|
|
+ }
|
|
|
|
|
|
Config.updateConfigCache('crowi', config);
|
|
|
return resolve();
|
|
|
@@ -982,8 +1000,7 @@ module.exports = function(crowi, app) {
|
|
|
});
|
|
|
}
|
|
|
|
|
|
- function validateMailSetting(req, form, callback)
|
|
|
- {
|
|
|
+ function validateMailSetting(req, form, callback) {
|
|
|
var mailer = crowi.mailer;
|
|
|
var option = {
|
|
|
host: form['mail:smtpHost'],
|