Procházet zdrojové kódy

refactor page.isUpdatable()

Shun Miyazawa před 2 roky
rodič
revize
0f39321b3b

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

@@ -1,10 +1,11 @@
-import { PageGrant, GroupType } from '@growi/core';
+import { GroupType } from '@growi/core';
 import { templateChecker, pagePathUtils, pathUtils } from '@growi/core/dist/utils';
 import { templateChecker, pagePathUtils, pathUtils } from '@growi/core/dist/utils';
 import escapeStringRegexp from 'escape-string-regexp';
 import escapeStringRegexp from 'escape-string-regexp';
 
 
 import { Comment } from '~/features/comment/server/models/comment';
 import { Comment } from '~/features/comment/server/models/comment';
 import ExternalUserGroup from '~/features/external-user-group/server/models/external-user-group';
 import ExternalUserGroup from '~/features/external-user-group/server/models/external-user-group';
 import ExternalUserGroupRelation from '~/features/external-user-group/server/models/external-user-group-relation';
 import ExternalUserGroupRelation from '~/features/external-user-group/server/models/external-user-group-relation';
+import { Origin } from '~/interfaces/apiv3';
 import loggerFactory from '~/utils/logger';
 import loggerFactory from '~/utils/logger';
 
 
 import UserGroup from './user-group';
 import UserGroup from './user-group';
@@ -141,7 +142,11 @@ export const getPageSchema = (crowi) => {
     return relations.map((relation) => { return relation.relatedTag.name });
     return relations.map((relation) => { return relation.relatedTag.name });
   };
   };
 
 
-  pageSchema.methods.isUpdatable = function(previousRevision) {
+  pageSchema.methods.isUpdatable = function(previousRevision, origin) {
+    if (origin === Origin.Editor) {
+      return true;
+    }
+
     const revision = this.latestRevision || this.revision;
     const revision = this.latestRevision || this.revision;
     // comparing ObjectId with string
     // comparing ObjectId with string
     // eslint-disable-next-line eqeqeq
     // eslint-disable-next-line eqeqeq

+ 1 - 3
apps/app/src/server/routes/apiv3/page/update-page.ts

@@ -132,8 +132,6 @@ export const updatePageHandlersFactory: UpdatePageHandlersFactory = (crowi) => {
         pageId, revisionId, body, origin,
         pageId, revisionId, body, origin,
       } = req.body;
       } = req.body;
 
 
-      const ignoreLatestRevision = origin === 'editor';
-
       // check page existence
       // check page existence
       const isExist = await Page.count({ _id: pageId }) > 0;
       const isExist = await Page.count({ _id: pageId }) > 0;
       if (!isExist) {
       if (!isExist) {
@@ -142,7 +140,7 @@ export const updatePageHandlersFactory: UpdatePageHandlersFactory = (crowi) => {
 
 
       // check revision
       // check revision
       const currentPage = await Page.findByIdAndViewer(pageId, req.user);
       const currentPage = await Page.findByIdAndViewer(pageId, req.user);
-      if (!ignoreLatestRevision && currentPage != null && !currentPage.isUpdatable(revisionId)) {
+      if (currentPage != null && !currentPage.isUpdatable(revisionId, origin)) {
         const latestRevision = await Revision.findById(currentPage.revision).populate('author');
         const latestRevision = await Revision.findById(currentPage.revision).populate('author');
         const returnLatestRevision = {
         const returnLatestRevision = {
           revisionId: latestRevision?._id.toString(),
           revisionId: latestRevision?._id.toString(),