Просмотр исходного кода

Hide user content from general users in recent changes tab

arvid-e 3 месяцев назад
Родитель
Сommit
5c312c3af5

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

@@ -89,6 +89,7 @@ export type FindRecentUpdatedPagesOption = {
   desc: number;
   hideRestrictedByOwner: boolean;
   hideRestrictedByGroup: boolean;
+  hideUserPages: boolean;
 };
 
 export type CreateMethod = (
@@ -936,6 +937,13 @@ schema.statics.findRecentUpdatedPages = async function (
   const baseQuery = this.find({});
   const queryBuilder = new PageQueryBuilder(baseQuery, includeEmpty);
 
+  const isAdmin = user?.admin ?? false;
+
+  // REMINDER: Change to addConditionToListByNotMatchPathAndChildren
+  if (options.hideUserPages && !isAdmin) {
+    queryBuilder.addConditionToListByNotMatch('/user');
+  }
+
   if (!options.includeTrashed) {
     queryBuilder.addConditionToExcludeTrashed();
   }

+ 5 - 0
apps/app/src/server/routes/apiv3/pages/index.js

@@ -193,6 +193,10 @@ module.exports = (crowi) => {
       const hideRestrictedByGroup = configManager.getConfig(
         'security:list-policy:hideRestrictedByGroup',
       );
+      const hideUserPages = configManager.getConfig(
+        'security:isHidingUserPages'
+      );
+
 
       /**
        * @type {import('~/server/models/page').FindRecentUpdatedPagesOption}
@@ -207,6 +211,7 @@ module.exports = (crowi) => {
         desc: -1,
         hideRestrictedByOwner,
         hideRestrictedByGroup,
+        hideUserPages,
       };
 
       try {