|
|
@@ -489,7 +489,7 @@ module.exports = function(crowi) {
|
|
|
return reject(pageNotFoundError);
|
|
|
}
|
|
|
|
|
|
- if (!pageData.isGrantedFor(userData)) {
|
|
|
+ if (!pageData.isGrantedFor(userData) && !self.isExistsGrantedGroupFor(pageData, userData)) {
|
|
|
return reject(new Error('Page is not granted for the user')); //PAGE_GRANT_ERROR, null);
|
|
|
}
|
|
|
|
|
|
@@ -792,7 +792,7 @@ module.exports = function(crowi) {
|
|
|
|
|
|
// グループに紐づけられたとき、関係性を生成
|
|
|
if (provGrant != GRANT_USER_GROUP && grant == GRANT_USER_GROUP) {
|
|
|
- UserGroupRelation.createRelation(userGroupData, page, function (err, relationData) {
|
|
|
+ PageGroupRelation.createRelation(userGroupData, page, function (err, relationData) {
|
|
|
if (err) {
|
|
|
return reject(err);
|
|
|
}
|
|
|
@@ -805,7 +805,7 @@ module.exports = function(crowi) {
|
|
|
|
|
|
pageSchema.statics.updateGrantUserGroup = function(page, userGroupData) {
|
|
|
var Page = this
|
|
|
- , UserGroupRelation = crowi.model('UserGroupRelation');
|
|
|
+ , PageGroupRelation = crowi.model('PageGroupRelation');
|
|
|
|
|
|
return new Promise(function (resolve, reject) {
|
|
|
page.grant = GRANT_USER_GROUP;
|
|
|
@@ -816,12 +816,13 @@ module.exports = function(crowi) {
|
|
|
return reject(err);
|
|
|
}
|
|
|
|
|
|
- UserGroupRelation.createRelation(userGroupData, page, function(err, relationData) {
|
|
|
+ PageGroupRelation.createRelation(userGroupData, page, function(err, relationData) {
|
|
|
+ debug('Page.updateGrant, saved grantedUsers.', err, relationData);
|
|
|
if (err) {
|
|
|
return reject(err);
|
|
|
}
|
|
|
});
|
|
|
- return resolve(data);
|
|
|
+ return resolve(relationData);
|
|
|
});
|
|
|
});
|
|
|
}
|
|
|
@@ -1218,6 +1219,28 @@ module.exports = function(crowi) {
|
|
|
return;
|
|
|
};
|
|
|
|
|
|
+ // 指定ページに紐づくユーザグループに、対象のユーザが含まれるかを確認
|
|
|
+ pageSchema.statics.isExistsGrantedGroupFor = function(pageData, userData) {
|
|
|
+ var PageGroupRelation = crowi.model('PageGroupRelation');
|
|
|
+ var UserGroupRelation = crowi.model('UserGroupRelation');
|
|
|
+
|
|
|
+ return new Promise(function (resolve, reject) {
|
|
|
+ PageGroupRelation.findByPage(pageData)
|
|
|
+ .then(function (pageRelation) {
|
|
|
+ UserGroupRelation.checkIsRelatedUserForGroup(userData, data.relatedGroup)
|
|
|
+ .then(function (checkResult) {
|
|
|
+ return resolve(checkResult);
|
|
|
+ })
|
|
|
+ .catch((err) => {
|
|
|
+ return reject(err);
|
|
|
+ });
|
|
|
+ })
|
|
|
+ .catch((err) => {
|
|
|
+ return reject(err);
|
|
|
+ });
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* return path that added slash to the end for specified path
|
|
|
*/
|