|
|
@@ -6,6 +6,7 @@ module.exports = function(crowi, app) {
|
|
|
, Page = models.Page
|
|
|
, User = models.User
|
|
|
, UserGroup = models.UserGroup
|
|
|
+ , UserGroupRelation = models.UserGroupRelation
|
|
|
, Config = models.Config
|
|
|
, PluginUtils = require('../plugins/plugin-utils')
|
|
|
, pluginUtils = new PluginUtils()
|
|
|
@@ -478,13 +479,58 @@ module.exports = function(crowi, app) {
|
|
|
|
|
|
UserGroup.findUserGroupsWithPagination({ page: page }, function (err, result) {
|
|
|
const pager = createPager(result.total, result.limit, result.page, result.pages, MAX_PAGE_LIST);
|
|
|
+ var userGroups = result.docs
|
|
|
+ var groupRelations = new Map();
|
|
|
+ if (userGroups) {
|
|
|
+ userGroups.forEach(group => {
|
|
|
+ UserGroupRelation.findAllRelationForUserGroup(group)
|
|
|
+ .then(function(relations) {
|
|
|
+ debug(group);
|
|
|
+ debug(relations);
|
|
|
+ groupRelations.set(group, relations);
|
|
|
+ debug('groupRelations is ', groupRelations);
|
|
|
+ }).catch(function(err) {
|
|
|
+ debug('Error on find all relations', err);
|
|
|
+ return res.json(ApiResponse.error('Error'));
|
|
|
+ });
|
|
|
+ });
|
|
|
+ }
|
|
|
return res.render('admin/user-groups', {
|
|
|
- userGroups: result.docs,
|
|
|
+ userGroups: userGroups,
|
|
|
+ userGroupRelations: groupRelations,
|
|
|
pager: pager
|
|
|
});
|
|
|
});
|
|
|
};
|
|
|
|
|
|
+ // グループ詳細
|
|
|
+ actions.userGroup.detail = function (req, res) {
|
|
|
+ var name = req.params.name;
|
|
|
+ UserGroup.findUserGroupByName(name)
|
|
|
+ .then( function(data) {
|
|
|
+ var userGroup = data
|
|
|
+ var groupRelations = [];
|
|
|
+ if (userGroup) {
|
|
|
+ UserGroupRelation.findAllRelationForUserGroup(userGroup)
|
|
|
+ .then(function (data) {
|
|
|
+ debug('user-group-detail succeed', data);
|
|
|
+ return res.render('admin/user-group-detail', {
|
|
|
+ userGroup: userGroup,
|
|
|
+ userGroupRelations: data
|
|
|
+ });
|
|
|
+ }).catch(function (err) {
|
|
|
+ debug('Error on find all relations', err);
|
|
|
+ return res.json(ApiResponse.error('Error'));
|
|
|
+ });
|
|
|
+ }
|
|
|
+ })
|
|
|
+ .catch(function(err) {
|
|
|
+ debug('Error on get userGroupDetail', err);
|
|
|
+ return res.json(ApiResponse.error('Error'));
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ //グループの生成
|
|
|
actions.userGroup.create = function (req, res) {
|
|
|
var form = req.form.createGroupForm;
|
|
|
if (req.form.isValid) {
|
|
|
@@ -568,16 +614,69 @@ module.exports = function(crowi, app) {
|
|
|
actions.userGroup.removeCompletely = function (req, res) {
|
|
|
const id = req.body.user_group_id;
|
|
|
|
|
|
- UserGroup.removeCompletelyById(id)
|
|
|
- .then(function (data) {
|
|
|
- data.user = User.filterToPublicFields(data.user);
|
|
|
- return res.json(ApiResponse.success(data));
|
|
|
- }).catch(function (err) {
|
|
|
- debug('Error on reseting password', err);
|
|
|
+ UserGroup.removeCompletelyById(id, function (err, removed) {
|
|
|
+ if (err) {
|
|
|
+ debug('Error while removing userGroup.', err, id);
|
|
|
+ req.flash('errorMessage', '完全な削除に失敗しました。');
|
|
|
+ } else {
|
|
|
+ req.flash('successMessage', '削除しました');
|
|
|
+ }
|
|
|
+ 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');
|
|
|
+ const UserGroup = crowi.model('UserGroup');
|
|
|
+ const UserGroupRelation = crowi.model('UserGroupRelation');
|
|
|
+
|
|
|
+ // ユーザを名前で検索
|
|
|
+ User.findUserByUsername(req.body.user_name)
|
|
|
+ .then((user) => {
|
|
|
+ // ユーザグループをIDで検索
|
|
|
+ UserGroup.findById(req.body.user_group_id, function(err, userGroup) {
|
|
|
+ if (err) {
|
|
|
+ debug('Error on create user-group relation', err);
|
|
|
+ return res.json(ApiResponse.error('Error'));
|
|
|
+ }
|
|
|
+ // Relation を作成
|
|
|
+ UserGroupRelation.createRelation(userGroup, user, function (err, data) {
|
|
|
+ if (err) {
|
|
|
+ debug('Error on create user-group relation', err);
|
|
|
+ return res.json(ApiResponse.error('Error'));
|
|
|
+ }
|
|
|
+ return res.json(ApiResponse.success(data));
|
|
|
+ });
|
|
|
+
|
|
|
+ });
|
|
|
+
|
|
|
+ }).catch((err) => {
|
|
|
+ debug('Error on create user-group relation', err);
|
|
|
return res.json(ApiResponse.error('Error'));
|
|
|
});
|
|
|
}
|
|
|
|
|
|
+ actions.userGroupRelation.remove = function (req, res) {
|
|
|
+ const UserGroupRelation = crowi.model('UserGroupRelation');
|
|
|
+ var name = req.params.name;
|
|
|
+ var relationId = req.params.relationId;
|
|
|
+
|
|
|
+ debug(name, relationId);
|
|
|
+ UserGroupRelation.removeById(relationId, function(err) {
|
|
|
+ if (err) {
|
|
|
+ debug('Error on remove user-group-relation', err);
|
|
|
+ req.flash('errorMessage', 'グループのユーザ削除に失敗しました。');
|
|
|
+ }
|
|
|
+ return res.redirect('/admin/user-group-detail/' + name);
|
|
|
+ });
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
actions.api = {};
|
|
|
actions.api.appSetting = function(req, res) {
|
|
|
var form = req.form.settingForm;
|