Yuki Takei 1 год назад
Родитель
Сommit
02ef747e7e

+ 2 - 2
apps/app/src/server/middlewares/access-token-parser.js

@@ -1,6 +1,6 @@
-import loggerFactory from '~/utils/logger';
+import { serializeUserSecurely } from '@growi/core/dist/models/serializers';
 
 
-import { serializeUserSecurely } from '../models/serializers';
+import loggerFactory from '~/utils/logger';
 
 
 
 
 const logger = loggerFactory('growi:middleware:access-token-parser');
 const logger = loggerFactory('growi:middleware:access-token-parser');

+ 1 - 1
apps/app/src/server/models/serializers/page-serializer.js

@@ -1,4 +1,4 @@
-import { serializeUserSecurely } from './user-serializer';
+import { serializeUserSecurely } from '@growi/core/dist/models/serializers';
 
 
 function depopulate(page, attributeName) {
 function depopulate(page, attributeName) {
   // revert the ObjectID
   // revert the ObjectID

+ 1 - 1
apps/app/src/server/models/serializers/revision-serializer.js

@@ -1,4 +1,4 @@
-import { serializeUserSecurely } from './user-serializer';
+import { serializeUserSecurely } from '@growi/core/dist/models/serializers';
 
 
 function serializeInsecureUserAttributes(revision) {
 function serializeInsecureUserAttributes(revision) {
   if (revision.author != null && revision.author._id != null) {
   if (revision.author != null && revision.author._id != null) {

+ 1 - 1
apps/app/src/server/models/serializers/user-group-relation-serializer.js

@@ -1,4 +1,4 @@
-import { serializeUserSecurely } from './user-serializer';
+import { serializeUserSecurely } from '@growi/core/dist/models/serializers';
 
 
 function serializeInsecureUserAttributes(userGroupRelation) {
 function serializeInsecureUserAttributes(userGroupRelation) {
   if (userGroupRelation.relatedUser != null && userGroupRelation.relatedUser._id != null) {
   if (userGroupRelation.relatedUser != null && userGroupRelation.relatedUser._id != null) {

+ 6 - 5
apps/app/src/server/routes/apiv3/activity.ts

@@ -8,7 +8,7 @@ import loggerFactory from '~/utils/logger';
 
 
 import Crowi from '../../crowi';
 import Crowi from '../../crowi';
 import { apiV3FormValidator } from '../../middlewares/apiv3-form-validator';
 import { apiV3FormValidator } from '../../middlewares/apiv3-form-validator';
-import { serializeUserSecurely } from '../../models/serializers/user-serializer';
+import { serializeUserSecurely } from '@growi/core/dist/models/serializers';
 
 
 import { ApiV3Response } from './interfaces/apiv3-response';
 import { ApiV3Response } from './interfaces/apiv3-response';
 
 
@@ -105,10 +105,11 @@ module.exports = (crowi: Crowi): Router => {
 
 
       const User = crowi.model('User');
       const User = crowi.model('User');
       const serializedDocs = paginateResult.docs.map((doc: IActivity) => {
       const serializedDocs = paginateResult.docs.map((doc: IActivity) => {
-        if (doc.user != null && doc.user instanceof User) {
-          doc.user = serializeUserSecurely(doc.user);
-        }
-        return doc;
+        const { user, ...rest } = doc;
+        return {
+          user: serializeUserSecurely(user),
+          ...rest,
+        };
       });
       });
 
 
       const serializedPaginationResult = {
       const serializedPaginationResult = {

+ 2 - 1
apps/app/src/server/routes/apiv3/attachment.js

@@ -1,4 +1,5 @@
 import { ErrorV3 } from '@growi/core/dist/models';
 import { ErrorV3 } from '@growi/core/dist/models';
+import { serializeUserSecurely } from '@growi/core/dist/models/serializers';
 import express from 'express';
 import express from 'express';
 import multer from 'multer';
 import multer from 'multer';
 import autoReap from 'multer-autoreap';
 import autoReap from 'multer-autoreap';
@@ -6,7 +7,7 @@ import autoReap from 'multer-autoreap';
 import { SupportedAction } from '~/interfaces/activity';
 import { SupportedAction } from '~/interfaces/activity';
 import { AttachmentType } from '~/server/interfaces/attachment';
 import { AttachmentType } from '~/server/interfaces/attachment';
 import { Attachment } from '~/server/models/attachment';
 import { Attachment } from '~/server/models/attachment';
-import { serializePageSecurely, serializeRevisionSecurely, serializeUserSecurely } from '~/server/models/serializers';
+import { serializePageSecurely, serializeRevisionSecurely } from '~/server/models/serializers';
 import loggerFactory from '~/utils/logger';
 import loggerFactory from '~/utils/logger';
 
 
 import { generateAddActivityMiddleware } from '../../middlewares/add-activity';
 import { generateAddActivityMiddleware } from '../../middlewares/add-activity';

+ 1 - 1
apps/app/src/server/routes/apiv3/bookmarks.js

@@ -1,6 +1,6 @@
 import { SupportedAction, SupportedTargetModel } from '~/interfaces/activity';
 import { SupportedAction, SupportedTargetModel } from '~/interfaces/activity';
 import { generateAddActivityMiddleware } from '~/server/middlewares/add-activity';
 import { generateAddActivityMiddleware } from '~/server/middlewares/add-activity';
-import { serializeUserSecurely } from '~/server/models/serializers';
+import { serializeUserSecurely } from '@growi/core/dist/models/serializers';
 import { serializeBookmarkSecurely } from '~/server/models/serializers/bookmark-serializer';
 import { serializeBookmarkSecurely } from '~/server/models/serializers/bookmark-serializer';
 import { preNotifyService } from '~/server/service/pre-notify';
 import { preNotifyService } from '~/server/service/pre-notify';
 import loggerFactory from '~/utils/logger';
 import loggerFactory from '~/utils/logger';

+ 1 - 1
apps/app/src/server/routes/apiv3/forgot-password.js

@@ -1,11 +1,11 @@
 import { ErrorV3 } from '@growi/core/dist/models';
 import { ErrorV3 } from '@growi/core/dist/models';
+import { serializeUserSecurely } from '@growi/core/dist/models/serializers';
 import { format, subSeconds } from 'date-fns';
 import { format, subSeconds } from 'date-fns';
 
 
 import { SupportedAction } from '~/interfaces/activity';
 import { SupportedAction } from '~/interfaces/activity';
 import { generateAddActivityMiddleware } from '~/server/middlewares/add-activity';
 import { generateAddActivityMiddleware } from '~/server/middlewares/add-activity';
 import injectResetOrderByTokenMiddleware from '~/server/middlewares/inject-reset-order-by-token-middleware';
 import injectResetOrderByTokenMiddleware from '~/server/middlewares/inject-reset-order-by-token-middleware';
 import PasswordResetOrder from '~/server/models/password-reset-order';
 import PasswordResetOrder from '~/server/models/password-reset-order';
-import { serializeUserSecurely } from '~/server/models/serializers';
 import { configManager } from '~/server/service/config-manager';
 import { configManager } from '~/server/service/config-manager';
 import loggerFactory from '~/utils/logger';
 import loggerFactory from '~/utils/logger';
 
 

+ 1 - 1
apps/app/src/server/routes/apiv3/in-app-notification.ts

@@ -1,9 +1,9 @@
+import { serializeUserSecurely } from '@growi/core/dist/models/serializers';
 import express from 'express';
 import express from 'express';
 
 
 import { SupportedAction } from '~/interfaces/activity';
 import { SupportedAction } from '~/interfaces/activity';
 import type { CrowiRequest } from '~/interfaces/crowi-request';
 import type { CrowiRequest } from '~/interfaces/crowi-request';
 import { generateAddActivityMiddleware } from '~/server/middlewares/add-activity';
 import { generateAddActivityMiddleware } from '~/server/middlewares/add-activity';
-import { serializeUserSecurely } from '~/server/models/serializers';
 
 
 import type { IInAppNotification } from '../../../interfaces/in-app-notification';
 import type { IInAppNotification } from '../../../interfaces/in-app-notification';
 
 

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

@@ -15,7 +15,8 @@ import type Crowi from '~/server/crowi';
 import { generateAddActivityMiddleware } from '~/server/middlewares/add-activity';
 import { generateAddActivityMiddleware } from '~/server/middlewares/add-activity';
 import { GlobalNotificationSettingEvent } from '~/server/models/GlobalNotificationSetting';
 import { GlobalNotificationSettingEvent } from '~/server/models/GlobalNotificationSetting';
 import type { PageDocument, PageModel } from '~/server/models/page';
 import type { PageDocument, PageModel } from '~/server/models/page';
-import { serializePageSecurely, serializeRevisionSecurely, serializeUserSecurely } from '~/server/models/serializers';
+import { serializePageSecurely, serializeRevisionSecurely } from '~/server/models/serializers';
+import { serializeUserSecurely } from '@growi/core/dist/models/serializers';
 import { preNotifyService } from '~/server/service/pre-notify';
 import { preNotifyService } from '~/server/service/pre-notify';
 import { normalizeLatestRevisionIfBroken } from '~/server/service/revision/normalize-latest-revision-if-broken';
 import { normalizeLatestRevisionIfBroken } from '~/server/service/revision/normalize-latest-revision-if-broken';
 import { getYjsService } from '~/server/service/yjs';
 import { getYjsService } from '~/server/service/yjs';

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

@@ -17,7 +17,7 @@ import { generateAddActivityMiddleware } from '../../../middlewares/add-activity
 import { apiV3FormValidator } from '../../../middlewares/apiv3-form-validator';
 import { apiV3FormValidator } from '../../../middlewares/apiv3-form-validator';
 import { excludeReadOnlyUser } from '../../../middlewares/exclude-read-only-user';
 import { excludeReadOnlyUser } from '../../../middlewares/exclude-read-only-user';
 import { serializePageSecurely } from '../../../models/serializers/page-serializer';
 import { serializePageSecurely } from '../../../models/serializers/page-serializer';
-import { serializeUserSecurely } from '../../../models/serializers/user-serializer';
+import { serializeUserSecurely } from '@growi/core/dist/models/serializers';
 import { isV5ConversionError } from '../../../models/vo/v5-conversion-error';
 import { isV5ConversionError } from '../../../models/vo/v5-conversion-error';
 
 
 
 

+ 1 - 1
apps/app/src/server/routes/apiv3/revisions.js

@@ -1,8 +1,8 @@
 import { ErrorV3 } from '@growi/core/dist/models';
 import { ErrorV3 } from '@growi/core/dist/models';
+import { serializeUserSecurely } from '@growi/core/dist/models/serializers';
 import express from 'express';
 import express from 'express';
 
 
 import { Revision } from '~/server/models/revision';
 import { Revision } from '~/server/models/revision';
-import { serializeUserSecurely } from '~/server/models/serializers';
 import { normalizeLatestRevisionIfBroken } from '~/server/service/revision/normalize-latest-revision-if-broken';
 import { normalizeLatestRevisionIfBroken } from '~/server/service/revision/normalize-latest-revision-if-broken';
 import loggerFactory from '~/utils/logger';
 import loggerFactory from '~/utils/logger';
 
 

+ 1 - 1
apps/app/src/server/routes/apiv3/user-group.js

@@ -1,12 +1,12 @@
 import { GroupType } from '@growi/core';
 import { GroupType } from '@growi/core';
 import { ErrorV3 } from '@growi/core/dist/models';
 import { ErrorV3 } from '@growi/core/dist/models';
+import { serializeUserSecurely } from '@growi/core/dist/models/serializers';
 import express from 'express';
 import express from 'express';
 import {
 import {
   body, param, query, sanitizeQuery,
   body, param, query, sanitizeQuery,
 } from 'express-validator';
 } from 'express-validator';
 
 
 import { SupportedAction } from '~/interfaces/activity';
 import { SupportedAction } from '~/interfaces/activity';
-import { serializeUserSecurely } from '~/server/models/serializers';
 import { serializeUserGroupRelationSecurely } from '~/server/models/serializers/user-group-relation-serializer';
 import { serializeUserGroupRelationSecurely } from '~/server/models/serializers/user-group-relation-serializer';
 import UserGroup from '~/server/models/user-group';
 import UserGroup from '~/server/models/user-group';
 import UserGroupRelation from '~/server/models/user-group-relation';
 import UserGroupRelation from '~/server/models/user-group-relation';

+ 2 - 1
apps/app/src/server/routes/apiv3/users.js

@@ -2,6 +2,7 @@
 import path from 'path';
 import path from 'path';
 
 
 import { ErrorV3 } from '@growi/core/dist/models';
 import { ErrorV3 } from '@growi/core/dist/models';
+import { serializeUserSecurely } from '@growi/core/dist/models/serializers';
 import { userHomepagePath } from '@growi/core/dist/utils/page-path-utils';
 import { userHomepagePath } from '@growi/core/dist/utils/page-path-utils';
 import express from 'express';
 import express from 'express';
 import { body, query } from 'express-validator';
 import { body, query } from 'express-validator';
@@ -11,7 +12,7 @@ import ExternalUserGroupRelation from '~/features/external-user-group/server/mod
 import { SupportedAction } from '~/interfaces/activity';
 import { SupportedAction } from '~/interfaces/activity';
 import Activity from '~/server/models/activity';
 import Activity from '~/server/models/activity';
 import ExternalAccount from '~/server/models/external-account';
 import ExternalAccount from '~/server/models/external-account';
-import { serializePageSecurely, serializeUserSecurely } from '~/server/models/serializers';
+import { serializePageSecurely } from '~/server/models/serializers';
 import UserGroupRelation from '~/server/models/user-group-relation';
 import UserGroupRelation from '~/server/models/user-group-relation';
 import { configManager } from '~/server/service/config-manager';
 import { configManager } from '~/server/service/config-manager';
 import { deleteCompletelyUserHomeBySystem } from '~/server/service/page/delete-completely-user-home-by-system';
 import { deleteCompletelyUserHomeBySystem } from '~/server/service/page/delete-completely-user-home-by-system';

+ 1 - 1
apps/app/src/server/routes/comment.js

@@ -4,7 +4,7 @@ import { SupportedAction, SupportedTargetModel, SupportedEventModel } from '~/in
 import loggerFactory from '~/utils/logger';
 import loggerFactory from '~/utils/logger';
 
 
 import { GlobalNotificationSettingEvent } from '../models/GlobalNotificationSetting';
 import { GlobalNotificationSettingEvent } from '../models/GlobalNotificationSetting';
-import { serializeUserSecurely } from '../models/serializers';
+import { serializeUserSecurely } from '@growi/core/dist/models/serializers';
 import { preNotifyService } from '../service/pre-notify';
 import { preNotifyService } from '../service/pre-notify';
 
 
 /**
 /**

+ 7 - 12
apps/app/src/server/service/search-delegator/private-legacy-pages.ts

@@ -1,15 +1,16 @@
 import type { IPage } from '@growi/core';
 import type { IPage } from '@growi/core';
+import { serializeUserSecurely } from '@growi/core/dist/models/serializers';
 import mongoose from 'mongoose';
 import mongoose from 'mongoose';
 
 
 import { SearchDelegatorName } from '~/interfaces/named-query';
 import { SearchDelegatorName } from '~/interfaces/named-query';
-import { ISearchResult } from '~/interfaces/search';
-import { PageModel, PageDocument, PageQueryBuilder } from '~/server/models/page';
+import type { ISearchResult } from '~/interfaces/search';
+import type { PageModel, PageDocument, PageQueryBuilder } from '~/server/models/page';
+import { serializePageSecurely } from '~/server/models/serializers';
 
 
-import {
+import type {
   QueryTerms, MongoTermsKey,
   QueryTerms, MongoTermsKey,
   SearchableData, SearchDelegator, UnavailableTermsKey, MongoQueryTerms,
   SearchableData, SearchDelegator, UnavailableTermsKey, MongoQueryTerms,
 } from '../../interfaces/search';
 } from '../../interfaces/search';
-import { serializeUserSecurely } from '../../models/serializers/user-serializer';
 
 
 
 
 const AVAILABLE_KEYS = ['match', 'not_match', 'prefix', 'not_prefix'];
 const AVAILABLE_KEYS = ['match', 'not_match', 'prefix', 'not_prefix'];
@@ -47,21 +48,15 @@ class PrivateLegacyPagesDelegator implements SearchDelegator<IPage, MongoTermsKe
 
 
     const total = await countQueryBuilder.query.count();
     const total = await countQueryBuilder.query.count();
 
 
-    const _pages: PageDocument[] = await findQueryBuilder
+    const pages: PageDocument[] = await findQueryBuilder
       .addConditionToPagenate(offset, limit)
       .addConditionToPagenate(offset, limit)
       .query
       .query
       .populate('creator')
       .populate('creator')
       .populate('lastUpdateUser')
       .populate('lastUpdateUser')
       .exec();
       .exec();
 
 
-    const pages = _pages.map((page) => {
-      page.creator = serializeUserSecurely(page.creator);
-      page.lastUpdateUser = serializeUserSecurely(page.lastUpdateUser);
-      return page;
-    });
-
     return {
     return {
-      data: pages,
+      data: pages.map(page => serializePageSecurely(page)),
       meta: {
       meta: {
         total,
         total,
         hitsCount: pages.length,
         hitsCount: pages.length,

+ 1 - 1
apps/app/src/server/service/search.ts

@@ -13,7 +13,7 @@ import type {
 } from '../interfaces/search';
 } from '../interfaces/search';
 import NamedQuery from '../models/named-query';
 import NamedQuery from '../models/named-query';
 import type { PageModel } from '../models/page';
 import type { PageModel } from '../models/page';
-import { serializeUserSecurely } from '../models/serializers/user-serializer';
+import { serializeUserSecurely } from '@growi/core/dist/models/serializers';
 import { SearchError } from '../models/vo/search-error';
 import { SearchError } from '../models/vo/search-error';
 import { hasIntersection } from '../util/compare-objectId';
 import { hasIntersection } from '../util/compare-objectId';