Explorar o código

support retrieving accessTokenParser from other package

Yuki Takei hai 1 ano
pai
achega
394225d37f

+ 9 - 0
apps/app/src/server/crowi/index.js

@@ -19,6 +19,7 @@ import loggerFactory from '~/utils/logger';
 import { projectRoot } from '~/utils/project-dir-utils';
 
 import UserEvent from '../events/user';
+import { accessTokenParser } from '../middlewares/access-token-parser';
 import { aclService as aclServiceSingletonInstance } from '../service/acl';
 import AppService from '../service/app';
 import AttachmentService from '../service/attachment';
@@ -51,6 +52,12 @@ const sep = path.sep;
 
 class Crowi {
 
+  /**
+   * For retrieving other packages
+   * @type {(req: import('express').Request, res: import('express').Response, next: import('express').NextFunction) => Promise<void>}
+   */
+  accessTokenParser;
+
   /** @type {AppService} */
   appService;
 
@@ -79,6 +86,8 @@ class Crowi {
 
     this.express = null;
 
+    this.accessTokenParser = accessTokenParser;
+
     this.config = {};
     this.configManager = null;
     this.s2sMessagingService = null;

+ 1 - 1
packages/remark-attachment-refs/src/server/routes/refs.ts

@@ -69,7 +69,7 @@ const loginRequiredFallback = (req, res) => {
 export const routesFactory = (crowi): any => {
 
   const loginRequired = crowi.require('../middlewares/login-required')(crowi, true, loginRequiredFallback);
-  const accessTokenParser = crowi.require('../middlewares/access-token-parser')(crowi);
+  const accessTokenParser = crowi.accessTokenParser;
 
   const router = Router();
 

+ 9 - 3
packages/remark-lsx/src/server/index.ts

@@ -35,18 +35,24 @@ const lsxValidator = [
   query('options.*').optional().isString(),
 ];
 
-const paramValidator = (req: Request, _: Response, next: NextFunction) => {
+const paramValidator = (req: Request, res: Response, next: NextFunction) => {
   const errObjArray = validationResult(req);
+
   if (errObjArray.isEmpty()) {
     return next();
   }
-  return new Error('Invalid lsx parameter');
+
+  const errs = errObjArray.array().map((err) => {
+    return new Error(`Invalid lsx parameter: ${err.param}: ${err.msg}`);
+  });
+
+  res.status(400).json({ errors: errs.map(err => err.message) });
 };
 
 // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-explicit-any
 const middleware = (crowi: any, app: any): void => {
   const loginRequired = crowi.require('../middlewares/login-required')(crowi, true, loginRequiredFallback);
-  const accessTokenParser = crowi.require('../middlewares/access-token-parser')(crowi);
+  const accessTokenParser = crowi.accessTokenParser;
 
   app.get('/_api/lsx', accessTokenParser, loginRequired, lsxValidator, paramValidator, listPages);
 };