Skip to content

Commit

Permalink
Merge branch 'master' into feat/page-bulk-export
Browse files Browse the repository at this point in the history
  • Loading branch information
arafubeatbox committed Aug 13, 2024
2 parents 2591f22 + b8b8618 commit 812f0b8
Show file tree
Hide file tree
Showing 70 changed files with 421 additions and 313 deletions.
4 changes: 3 additions & 1 deletion .github/workflows/reusable-app-prod.yml
Original file line number Diff line number Diff line change
Expand Up @@ -348,7 +348,9 @@ jobs:

runs-on: ubuntu-latest
container:
image: mcr.microsoft.com/playwright:latest
# Match the Playwright version
# https://github.com/microsoft/playwright/issues/20010
image: mcr.microsoft.com/playwright:v1.46.0-jammy

strategy:
fail-fast: false
Expand Down
2 changes: 1 addition & 1 deletion apps/app/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -210,7 +210,7 @@
"usehooks-ts": "^2.6.0",
"validator": "^13.7.0",
"ws": "^8.17.1",
"xss": "^1.0.14",
"xss": "^1.0.15",
"y-mongodb-provider": "^0.2.0",
"y-socket.io": "^1.1.3",
"yjs": "^13.6.18"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ type Props = {
activityList: IActivityHasId[]
}

const formatDate = (date) => {
const formatDate = (date: Date): string => {
return format(new Date(date), 'yyyy/MM/dd HH:mm:ss');
};

Expand Down
Original file line number Diff line number Diff line change
@@ -1,19 +1,19 @@
import { ErrorV3 } from '@growi/core/dist/models';
import { Router, Request } from 'express';
import type { Router, Request } from 'express';

import { IExternalUserGroupRelationHasId } from '~/features/external-user-group/interfaces/external-user-group';
import type { IExternalUserGroupRelationHasId } from '~/features/external-user-group/interfaces/external-user-group';
import ExternalUserGroupRelation from '~/features/external-user-group/server/models/external-user-group-relation';
import Crowi from '~/server/crowi';
import type Crowi from '~/server/crowi';
import { serializeUserGroupRelationSecurely } from '~/server/models/serializers/user-group-relation-serializer';
import type { ApiV3Response } from '~/server/routes/apiv3/interfaces/apiv3-response';
import loggerFactory from '~/utils/logger';

import { ApiV3Response } from '../../../../../server/routes/apiv3/interfaces/apiv3-response';

const logger = loggerFactory('growi:routes:apiv3:user-group-relation'); // eslint-disable-line no-unused-vars

const express = require('express');
const { query } = require('express-validator');

const { serializeUserGroupRelationSecurely } = require('~/server/models/serializers/user-group-relation-serializer');

const router = express.Router();

Expand Down
4 changes: 2 additions & 2 deletions apps/app/src/interfaces/crowi-request.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
import type { IUser } from '@growi/core';
import type { Request } from 'express';
import type { Document } from 'mongoose';
import type { HydratedDocument } from 'mongoose';


export interface CrowiProperties {

user?: IUser & Document,
user?: HydratedDocument<IUser>,

// eslint-disable-next-line @typescript-eslint/no-explicit-any
crowi: any,
Expand Down
3 changes: 2 additions & 1 deletion apps/app/src/server/middlewares/access-token-parser.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import { serializeUserSecurely } from '@growi/core/dist/models/serializers';

import loggerFactory from '~/utils/logger';

const { serializeUserSecurely } = require('../models/serializers/user-serializer');

const logger = loggerFactory('growi:middleware:access-token-parser');

Expand Down
2 changes: 1 addition & 1 deletion apps/app/src/server/models/attachment.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import path from 'path';
import type { IAttachment } from '@growi/core';
import { addSeconds } from 'date-fns/addSeconds';
import {
Schema, type Model, type Document, Types,
Schema, type Model, type Document,
} from 'mongoose';
import mongoosePaginate from 'mongoose-paginate-v2';
import uniqueValidator from 'mongoose-unique-validator';
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
const { serializePageSecurely } = require('./page-serializer');
import { serializePageSecurely } from './page-serializer';

function serializeInsecurePageAttributes(bookmark) {
if (bookmark.page != null && bookmark.page._id != null) {
Expand Down
1 change: 0 additions & 1 deletion apps/app/src/server/models/serializers/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,3 @@ export * from './bookmark-serializer';
export * from './page-serializer';
export * from './revision-serializer';
export * from './user-group-relation-serializer';
export * from './user-serializer';
2 changes: 1 addition & 1 deletion apps/app/src/server/models/serializers/page-serializer.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
const { serializeUserSecurely } = require('./user-serializer');
import { serializeUserSecurely } from '@growi/core/dist/models/serializers';

function depopulate(page, attributeName) {
// revert the ObjectID
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
const { serializeUserSecurely } = require('./user-serializer');
import { serializeUserSecurely } from '@growi/core/dist/models/serializers';

function serializeInsecureUserAttributes(revision) {
if (revision.author != null && revision.author._id != null) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
const { serializeUserSecurely } = require('./user-serializer');
import { serializeUserSecurely } from '@growi/core/dist/models/serializers';

function serializeInsecureUserAttributes(userGroupRelation) {
if (userGroupRelation.relatedUser != null && userGroupRelation.relatedUser._id != null) {
Expand Down
35 changes: 0 additions & 35 deletions apps/app/src/server/models/serializers/user-serializer.js

This file was deleted.

3 changes: 1 addition & 2 deletions apps/app/src/server/models/user.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
/* eslint-disable no-use-before-define */
import { omitInsecureAttributes } from '@growi/core/dist/models/serializers';
import { pagePathUtils } from '@growi/core/dist/utils';

import { i18n } from '^/config/next-i18next.config';
Expand All @@ -15,8 +16,6 @@ const mongoose = require('mongoose');
const mongoosePaginate = require('mongoose-paginate-v2');
const uniqueValidator = require('mongoose-unique-validator');

const { omitInsecureAttributes } = require('./serializers/user-serializer');

const logger = loggerFactory('growi:models:user');

module.exports = function(crowi) {
Expand Down
22 changes: 12 additions & 10 deletions apps/app/src/server/routes/apiv3/activity.ts
Original file line number Diff line number Diff line change
@@ -1,16 +1,17 @@
import { serializeUserSecurely } from '@growi/core/dist/models/serializers';
import { parseISO, addMinutes, isValid } from 'date-fns';
import express, { Request, Router } from 'express';
import type { Request, Router } from 'express';
import express from 'express';
import { query } from 'express-validator';

import { IActivity, ISearchFilter } from '~/interfaces/activity';
import type { IActivity, ISearchFilter } from '~/interfaces/activity';
import Activity from '~/server/models/activity';
import loggerFactory from '~/utils/logger';

import Crowi from '../../crowi';
import type Crowi from '../../crowi';
import { apiV3FormValidator } from '../../middlewares/apiv3-form-validator';
import { serializeUserSecurely } from '../../models/serializers/user-serializer';

import { ApiV3Response } from './interfaces/apiv3-response';
import type { ApiV3Response } from './interfaces/apiv3-response';


const logger = loggerFactory('growi:routes:apiv3:activity');
Expand Down Expand Up @@ -96,19 +97,20 @@ module.exports = (crowi: Crowi): Router => {
const paginateResult = await Activity.paginate(
query,
{
lean: true,
limit,
offset,
sort: { createdAt: -1 },
populate: 'user',
},
);

const User = crowi.model('User');
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 = {
Expand Down
9 changes: 4 additions & 5 deletions apps/app/src/server/routes/apiv3/attachment.js
Original file line number Diff line number Diff line change
@@ -1,10 +1,13 @@
import { ErrorV3 } from '@growi/core/dist/models';
import { serializeUserSecurely } from '@growi/core/dist/models/serializers';
import express from 'express';
import multer from 'multer';
import autoReap from 'multer-autoreap';

import { SupportedAction } from '~/interfaces/activity';
import { AttachmentType } from '~/server/interfaces/attachment';
import { Attachment } from '~/server/models';
import { Attachment } from '~/server/models/attachment';
import { serializePageSecurely, serializeRevisionSecurely } from '~/server/models/serializers';
import loggerFactory from '~/utils/logger';

import { generateAddActivityMiddleware } from '../../middlewares/add-activity';
Expand All @@ -14,16 +17,12 @@ import { excludeReadOnlyUser } from '../../middlewares/exclude-read-only-user';


const logger = loggerFactory('growi:routes:apiv3:attachment'); // eslint-disable-line no-unused-vars
const express = require('express');

const router = express.Router();
const {
query, param, body,
} = require('express-validator');

const { serializePageSecurely } = require('../../models/serializers/page-serializer');
const { serializeRevisionSecurely } = require('../../models/serializers/revision-serializer');
const { serializeUserSecurely } = require('../../models/serializers/user-serializer');

/**
* @swagger
Expand Down
3 changes: 2 additions & 1 deletion apps/app/src/server/routes/apiv3/bookmarks.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
import { serializeUserSecurely } from '@growi/core/dist/models/serializers';

import { SupportedAction, SupportedTargetModel } from '~/interfaces/activity';
import { generateAddActivityMiddleware } from '~/server/middlewares/add-activity';
import { serializeBookmarkSecurely } from '~/server/models/serializers/bookmark-serializer';
Expand All @@ -12,7 +14,6 @@ const logger = loggerFactory('growi:routes:apiv3:bookmarks'); // eslint-disable-
const express = require('express');
const { body, query, param } = require('express-validator');

const { serializeUserSecurely } = require('../../models/serializers/user-serializer');

const router = express.Router();

Expand Down
2 changes: 1 addition & 1 deletion apps/app/src/server/routes/apiv3/customize-setting.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import multer from 'multer';
import { GrowiPlugin } from '~/features/growi-plugin/server/models';
import { SupportedAction } from '~/interfaces/activity';
import { AttachmentType } from '~/server/interfaces/attachment';
import { Attachment } from '~/server/models';
import { Attachment } from '~/server/models/attachment';
import loggerFactory from '~/utils/logger';

import { generateAddActivityMiddleware } from '../../middlewares/add-activity';
Expand Down
2 changes: 1 addition & 1 deletion apps/app/src/server/routes/apiv3/forgot-password.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { ErrorV3 } from '@growi/core/dist/models';
import { serializeUserSecurely } from '@growi/core/dist/models/serializers';
import { format, subSeconds } from 'date-fns';

import { SupportedAction } from '~/interfaces/activity';
Expand All @@ -17,7 +18,6 @@ const logger = loggerFactory('growi:routes:apiv3:forgotPassword'); // eslint-dis
const express = require('express');
const { body } = require('express-validator');

const { serializeUserSecurely } = require('../../models/serializers/user-serializer');

const router = express.Router();

Expand Down
13 changes: 8 additions & 5 deletions apps/app/src/server/routes/apiv3/g2g-transfer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,21 +2,24 @@ import { createReadStream } from 'fs';
import path from 'path';

import { ErrorV3 } from '@growi/core/dist/models';
import express, { NextFunction, Request, Router } from 'express';
import type { NextFunction, Request, Router } from 'express';
import express from 'express';
import { body } from 'express-validator';
import multer from 'multer';

import { isG2GTransferError } from '~/server/models/vo/g2g-transfer-error';
import { configManager } from '~/server/service/config-manager';
import { exportService } from '~/server/service/export';
import { IDataGROWIInfo, X_GROWI_TRANSFER_KEY_HEADER_NAME } from '~/server/service/g2g-transfer';
import type { IDataGROWIInfo } from '~/server/service/g2g-transfer';
import { X_GROWI_TRANSFER_KEY_HEADER_NAME } from '~/server/service/g2g-transfer';
import loggerFactory from '~/utils/logger';
import { TransferKey } from '~/utils/vo/transfer-key';


import Crowi from '../../crowi';
import type Crowi from '../../crowi';
import { apiV3FormValidator } from '../../middlewares/apiv3-form-validator';

import { ApiV3Response } from './interfaces/apiv3-response';
import type { ApiV3Response } from './interfaces/apiv3-response';

interface AuthorizedRequest extends Request {
user?: any
Expand All @@ -38,7 +41,7 @@ const validator = {
module.exports = (crowi: Crowi): Router => {
const {
g2gTransferPusherService, g2gTransferReceiverService, importService,
growiBridgeService, configManager,
growiBridgeService,
} = crowi;
if (g2gTransferPusherService == null || g2gTransferReceiverService == null || exportService == null || importService == null
|| growiBridgeService == null || configManager == null) {
Expand Down
Loading

0 comments on commit 812f0b8

Please sign in to comment.