|
|
@@ -2,8 +2,10 @@ module.exports = function(crowi, app) {
|
|
|
'use strict';
|
|
|
|
|
|
var debug = require('debug')('crowi:routes:admin')
|
|
|
+ , fs = require('fs')
|
|
|
, models = crowi.models
|
|
|
, Page = models.Page
|
|
|
+ , PageGroupRelation = models.PageGroupRelation
|
|
|
, User = models.User
|
|
|
, UserGroup = models.UserGroup
|
|
|
, UserGroupRelation = models.UserGroupRelation
|
|
|
@@ -510,27 +512,35 @@ module.exports = function(crowi, app) {
|
|
|
if (userGroup) {
|
|
|
UserGroupRelation.findAllRelationForUserGroup(userGroup)
|
|
|
.then(function (relations) {
|
|
|
- User.findAllUsers(null)
|
|
|
- .then(function (users) {
|
|
|
- debug('users', users);
|
|
|
- users = users.filter( function(user) {
|
|
|
- var relation = relations.find( function(relation) {
|
|
|
- return relation.relatedUser._id.toString() == user._id.toString();
|
|
|
+ PageGroupRelation.findAllRelationForUserGroup(userGroup)
|
|
|
+ .then(function (pageRelations) {
|
|
|
+ User.findAllUsers(null)
|
|
|
+ .then(function (users) {
|
|
|
+ debug('users', users);
|
|
|
+ users = users.filter( function(user) {
|
|
|
+ var relation = relations.find( function(relation) {
|
|
|
+ return relation.relatedUser._id.toString() == user._id.toString();
|
|
|
+ });
|
|
|
+ return relation == null || relation == undefined;
|
|
|
});
|
|
|
- return relation == null || relation == undefined;
|
|
|
- });
|
|
|
- debug('users', users);
|
|
|
- debug('user-group-detail succeed', relations);
|
|
|
- return res.render('admin/user-group-detail', {
|
|
|
- userGroup: userGroup,
|
|
|
- userGroupRelations: relations,
|
|
|
- notRelatedusers: users
|
|
|
+ debug('users', users);
|
|
|
+ debug('user-group-detail succeed', relations);
|
|
|
+ return res.render('admin/user-group-detail', {
|
|
|
+ userGroup: userGroup,
|
|
|
+ userGroupRelations: relations,
|
|
|
+ pageGroupRelations: pageRelations,
|
|
|
+ notRelatedusers: users
|
|
|
+ });
|
|
|
+ })
|
|
|
+ .catch(function(err) {
|
|
|
+ debug('Error on find all relations', err);
|
|
|
+ return res.json(ApiResponse.error('Error'));
|
|
|
});
|
|
|
- })
|
|
|
- .catch(function(err) {
|
|
|
- debug('Error on find all relations', err);
|
|
|
- return res.json(ApiResponse.error('Error'));
|
|
|
- });
|
|
|
+ })
|
|
|
+ .catch(function (err) {
|
|
|
+ debug('Error on find all relations', err);
|
|
|
+ return res.json(ApiResponse.error('Error'));
|
|
|
+ });
|
|
|
}).catch(function (err) {
|
|
|
debug('Error on find all relations', err);
|
|
|
return res.json(ApiResponse.error('Error'));
|
|
|
@@ -575,11 +585,47 @@ module.exports = function(crowi, app) {
|
|
|
}
|
|
|
};
|
|
|
|
|
|
+ //
|
|
|
+ actions.userGroup.update = function (req, res) {
|
|
|
+
|
|
|
+ var userGroupId = req.params.userGroupId;
|
|
|
+ var name = req.body.name;
|
|
|
+
|
|
|
+ UserGroup.findById(userGroupId, function (err, userGroupData) {
|
|
|
+ if (!userGroupData) {
|
|
|
+ req.flash('errorMessage', 'グループの検索に失敗しました。');
|
|
|
+ return res.redirect('/admin/user-groups');
|
|
|
+ }
|
|
|
+
|
|
|
+ // 名前存在チェック
|
|
|
+ UserGroup.isRegisterableName(name, function (isRegisterableName) {
|
|
|
+ // 既に存在するグループ名に更新しようとした場合はエラー
|
|
|
+ if (!isRegisterableName) {
|
|
|
+ req.flash('errorMessage', 'グループ名が既に存在します。');
|
|
|
+ return res.redirect('/admin/user-group-detail/' + userGroupData.name);
|
|
|
+ }
|
|
|
+
|
|
|
+ userGroupData.updateName(name, function (err, updatedName) {
|
|
|
+ if (err) {
|
|
|
+ req.flash('errorMessage', 'グループ名の更新に失敗しました。');
|
|
|
+ return res.redirect('/admin/user-group-detail/' + userGroupData.name);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ req.flash('successMessage', 'グループ名を更新しました。');
|
|
|
+ return res.redirect('/admin/user-group-detail/' + name);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ });
|
|
|
+ });
|
|
|
+ };
|
|
|
+
|
|
|
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);
|
|
|
|
|
|
+ var userGroupId = req.params.userGroupId;
|
|
|
+
|
|
|
var tmpFile = req.file || null;
|
|
|
if (!tmpFile) {
|
|
|
return res.json({
|
|
|
@@ -588,43 +634,69 @@ module.exports = function(crowi, app) {
|
|
|
});
|
|
|
}
|
|
|
|
|
|
- var tmpPath = tmpFile.path;
|
|
|
- var filePath = User.createUserPictureFilePath(req.user, tmpFile.filename + tmpFile.originalname);
|
|
|
- var acceptableFileType = /image\/.+/;
|
|
|
-
|
|
|
- if (!tmpFile.mimetype.match(acceptableFileType)) {
|
|
|
- return res.json({
|
|
|
- 'status': false,
|
|
|
- 'message': 'File type error. Only image files is allowed to set as user picture.',
|
|
|
- });
|
|
|
- }
|
|
|
+ UserGroup.findById(userGroupId, function (err, userGroupData) {
|
|
|
+ if (!userGroupData) {
|
|
|
+ return res.json({
|
|
|
+ 'status': false,
|
|
|
+ 'message': 'UserGroup error.'
|
|
|
+ });
|
|
|
+ }
|
|
|
|
|
|
- var tmpFileStream = fs.createReadStream(tmpPath, { flags: 'r', encoding: null, fd: null, mode: '0666', autoClose: true });
|
|
|
+ var tmpPath = tmpFile.path;
|
|
|
+ var filePath = UserGroup.createUserGroupPictureFilePath(userGroupData, tmpFile.filename + tmpFile.originalname);
|
|
|
+ var acceptableFileType = /image\/.+/;
|
|
|
|
|
|
- fileUploader.uploadFile(filePath, tmpFile.mimetype, tmpFileStream, {})
|
|
|
- .then(function (data) {
|
|
|
- var imageUrl = fileUploader.generateUrl(filePath);
|
|
|
- req.userGroup.updateImage(imageUrl, function (err, data) {
|
|
|
- fs.unlink(tmpPath, function (err) {
|
|
|
- if (err) {
|
|
|
- debug('Error while deleting tmp file.', err);
|
|
|
- }
|
|
|
+ if (!tmpFile.mimetype.match(acceptableFileType)) {
|
|
|
+ return res.json({
|
|
|
+ 'status': false,
|
|
|
+ 'message': 'File type error. Only image files is allowed to set as user picture.',
|
|
|
+ });
|
|
|
+ }
|
|
|
|
|
|
- return res.json({
|
|
|
- 'status': true,
|
|
|
- 'url': imageUrl,
|
|
|
- 'message': '',
|
|
|
+ var tmpFileStream = fs.createReadStream(tmpPath, { flags: 'r', encoding: null, fd: null, mode: '0666', autoClose: true });
|
|
|
+
|
|
|
+ fileUploader.uploadFile(filePath, tmpFile.mimetype, tmpFileStream, {})
|
|
|
+ .then(function (data) {
|
|
|
+ var imageUrl = fileUploader.generateUrl(filePath);
|
|
|
+ userGroupData.updateImage(imageUrl, function (err, data) {
|
|
|
+ fs.unlink(tmpPath, function (err) {
|
|
|
+ if (err) {
|
|
|
+ debug('Error while deleting tmp file.', err);
|
|
|
+ }
|
|
|
+
|
|
|
+ return res.json({
|
|
|
+ 'status': true,
|
|
|
+ 'url': imageUrl,
|
|
|
+ 'message': '',
|
|
|
+ });
|
|
|
});
|
|
|
});
|
|
|
- });
|
|
|
- }).catch(function (err) {
|
|
|
- debug('Uploading error', err);
|
|
|
+ }).catch(function (err) {
|
|
|
+ debug('Uploading error', err);
|
|
|
|
|
|
- return res.json({
|
|
|
- 'status': false,
|
|
|
- 'message': 'Error while uploading to ',
|
|
|
+ return res.json({
|
|
|
+ 'status': false,
|
|
|
+ 'message': 'Error while uploading to ',
|
|
|
+ });
|
|
|
});
|
|
|
+ });
|
|
|
+
|
|
|
+ };
|
|
|
+
|
|
|
+ actions.userGroup.deletePicture = function (req, res) {
|
|
|
+
|
|
|
+ var userGroupId = req.params.userGroupId;
|
|
|
+
|
|
|
+ UserGroup.findById(userGroupId, function (err, userGroupData) {
|
|
|
+ if (!userGroupData) {
|
|
|
+ req.flash('errorMessage', 'Error while deleting group picture');
|
|
|
+ }
|
|
|
+
|
|
|
+ userGroupData.deleteImage(function (err, data) {
|
|
|
+ req.flash('successMessage', 'Deleted group picture');
|
|
|
});
|
|
|
+ return res.redirect('/admin/user-group-detail/' + userGroupData.name);
|
|
|
+ });
|
|
|
};
|
|
|
|
|
|
// app.post('/_api/admin/user-group/delete' , admin.userGroup.removeCompletely);
|