|
@@ -1,6 +1,10 @@
|
|
|
import type { IUserHasId } from '@growi/core';
|
|
import type { IUserHasId } from '@growi/core';
|
|
|
import { SCOPE } from '@growi/core/dist/interfaces';
|
|
import { SCOPE } from '@growi/core/dist/interfaces';
|
|
|
import { serializeUserSecurely } from '@growi/core/dist/models/serializers';
|
|
import { serializeUserSecurely } from '@growi/core/dist/models/serializers';
|
|
|
|
|
+import {
|
|
|
|
|
+ isUserPage,
|
|
|
|
|
+ isUsersTopPage,
|
|
|
|
|
+} from '@growi/core/dist/utils/page-path-utils';
|
|
|
import mongoose, { type HydratedDocument } from 'mongoose';
|
|
import mongoose, { type HydratedDocument } from 'mongoose';
|
|
|
|
|
|
|
|
import { SupportedAction, SupportedTargetModel } from '~/interfaces/activity';
|
|
import { SupportedAction, SupportedTargetModel } from '~/interfaces/activity';
|
|
@@ -10,6 +14,7 @@ import { generateAddActivityMiddleware } from '~/server/middlewares/add-activity
|
|
|
import type { BookmarkDocument, BookmarkModel } from '~/server/models/bookmark';
|
|
import type { BookmarkDocument, BookmarkModel } from '~/server/models/bookmark';
|
|
|
import type { PageDocument, PageModel } from '~/server/models/page';
|
|
import type { PageDocument, PageModel } from '~/server/models/page';
|
|
|
import { serializeBookmarkSecurely } from '~/server/models/serializers/bookmark-serializer';
|
|
import { serializeBookmarkSecurely } from '~/server/models/serializers/bookmark-serializer';
|
|
|
|
|
+import { configManager } from '~/server/service/config-manager';
|
|
|
import { preNotifyService } from '~/server/service/pre-notify';
|
|
import { preNotifyService } from '~/server/service/pre-notify';
|
|
|
import loggerFactory from '~/utils/logger';
|
|
import loggerFactory from '~/utils/logger';
|
|
|
|
|
|
|
@@ -237,11 +242,12 @@ module.exports = (crowi) => {
|
|
|
'bookmarks',
|
|
'bookmarks',
|
|
|
{ owner: userId },
|
|
{ owner: userId },
|
|
|
);
|
|
);
|
|
|
|
|
+
|
|
|
const userRootBookmarks = await Bookmark.find({
|
|
const userRootBookmarks = await Bookmark.find({
|
|
|
_id: { $nin: bookmarkIdsInFolders },
|
|
_id: { $nin: bookmarkIdsInFolders },
|
|
|
user: userId,
|
|
user: userId,
|
|
|
})
|
|
})
|
|
|
- .populate({
|
|
|
|
|
|
|
+ .populate<{ page: PageDocument }>({
|
|
|
path: 'page',
|
|
path: 'page',
|
|
|
model: 'Page',
|
|
model: 'Page',
|
|
|
populate: {
|
|
populate: {
|
|
@@ -251,8 +257,20 @@ module.exports = (crowi) => {
|
|
|
})
|
|
})
|
|
|
.exec();
|
|
.exec();
|
|
|
|
|
|
|
|
|
|
+ const isHidingUserPages = configManager.getConfig(
|
|
|
|
|
+ 'security:isHidingUserPages',
|
|
|
|
|
+ );
|
|
|
|
|
+
|
|
|
|
|
+ const filteredBookmarks = isHidingUserPages
|
|
|
|
|
+ ? userRootBookmarks.filter(
|
|
|
|
|
+ (bookmark) =>
|
|
|
|
|
+ !isUserPage(bookmark.page.path) &&
|
|
|
|
|
+ !isUsersTopPage(bookmark.page.path),
|
|
|
|
|
+ )
|
|
|
|
|
+ : userRootBookmarks;
|
|
|
|
|
+
|
|
|
// serialize Bookmark
|
|
// serialize Bookmark
|
|
|
- const serializedUserRootBookmarks = userRootBookmarks.map((bookmark) =>
|
|
|
|
|
|
|
+ const serializedUserRootBookmarks = filteredBookmarks.map((bookmark) =>
|
|
|
serializeBookmarkSecurely(bookmark),
|
|
serializeBookmarkSecurely(bookmark),
|
|
|
);
|
|
);
|
|
|
|
|
|