Sfoglia il codice sorgente

fix: Handle grant values as numbers and update grantedGroups in revisions

maeshinshin 1 anno fa
parent
commit
106d2cc510

+ 2 - 2
apps/app/src/server/models/obsolete-page.js

@@ -268,11 +268,11 @@ export const getPageSchema = (crowi) => {
 
     this.grant = grant || GRANT_PUBLIC;
 
-    if (grant === GRANT_OWNER) {
+    if (Number(grant) === GRANT_OWNER) {
       this.grantedUsers.push(user?._id ?? user);
     }
 
-    if (grant === GRANT_USER_GROUP) {
+    if (Number(grant) === GRANT_USER_GROUP) {
       this.grantedGroups = grantUserGroupIds;
     }
   };

+ 8 - 0
apps/app/src/server/models/page.ts

@@ -787,6 +787,14 @@ export async function pushRevision(pageData, newRevision, user) {
   pageData.lastUpdateUser = user?._id ?? user;
   pageData.updatedAt = Date.now();
 
+  // Set the _id of grantedGroups to revision._id
+  if (pageData.grantedGroups.length > 0) {
+    pageData.grantedGroups = pageData.grantedGroups.map(group => ({
+      ...group,
+      _id: newRevision._id,
+    }));
+  }
+
   return pageData.save();
 }
 

+ 1 - 1
apps/app/src/server/service/page/index.ts

@@ -4182,7 +4182,7 @@ class PageService implements IPageService {
       : clonedPageData.grantedGroups;
 
     const grantedUserIds = clonedPageData.grantedUserIds || [user._id];
-    const shouldBeOnTree = grant !== PageGrant.GRANT_RESTRICTED;
+    const shouldBeOnTree = Number(grant) !== PageGrant.GRANT_RESTRICTED;
     const isChildrenExist = await Page.count({ path: new RegExp(`^${escapeStringRegexp(addTrailingSlash(clonedPageData.path))}`), parent: { $ne: null } });
 
     const isGrantChangeable = await this.pageGrantService.validateGrantChange(user, pageData.grantedGroups, grant, grantUserGroupIds);