@hemia/core 0.0.7 → 0.0.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -322,6 +322,13 @@ class AppFactory {
322
322
  const app = express();
323
323
  app.use(express.json(options.jsonOptions));
324
324
  app.use(express.urlencoded({ extended: true, ...options.urlencodedOptions }));
325
+ if (plugins && Array.isArray(plugins) && plugins.length > 0) {
326
+ for (const plugin of plugins) {
327
+ if (plugin && typeof plugin === 'function') {
328
+ await plugin(container);
329
+ }
330
+ }
331
+ }
325
332
  if (options.middlewares && Array.isArray(options.middlewares)) {
326
333
  options.middlewares.forEach(middleware => {
327
334
  app.use(middleware);
@@ -344,20 +351,23 @@ class AppFactory {
344
351
  }
345
352
  next();
346
353
  });
347
- if (plugins && Array.isArray(plugins) && plugins.length > 0) {
348
- for (const plugin of plugins) {
349
- if (plugin && typeof plugin === 'function') {
350
- await plugin(container);
351
- }
352
- }
353
- }
354
354
  if (!container.isBound(Reflector)) {
355
355
  container.bind(Reflector).toSelf().inSingletonScope();
356
356
  }
357
357
  const autoControllerList = ControllerRegistry.getAll();
358
+ const validAutoControllers = autoControllerList.filter(controllerClass => {
359
+ if (container.isBound(controllerClass)) {
360
+ return true;
361
+ }
362
+ const isManual = Reflect.getMetadata(METADATA_KEYS.MANUAL_REGISTER, controllerClass);
363
+ if (isManual) {
364
+ return false;
365
+ }
366
+ return true;
367
+ });
358
368
  const controllers = Array.from(new Set([
359
369
  ...(options.controllers || []),
360
- ...autoControllerList,
370
+ ...validAutoControllers,
361
371
  ]));
362
372
  controllers.forEach(controllerClass => {
363
373
  if (!container.isBound(controllerClass)) {
@@ -461,7 +471,11 @@ let JWTGuard = class JWTGuard {
461
471
  }
462
472
  async canActivate(context) {
463
473
  const request = context.switchToHttp().getRequest();
464
- const sessionId = request.headers['x-session'] || request.cookies['x-session'];
474
+ const cookieName = process.env.AUTH_COOKIE_NAME;
475
+ if (!cookieName) {
476
+ return false;
477
+ }
478
+ const sessionId = request.headers[cookieName] || request.cookies?.[cookieName];
465
479
  if (!sessionId) {
466
480
  return false;
467
481
  }
@@ -324,6 +324,13 @@ class AppFactory {
324
324
  const app = express();
325
325
  app.use(express.json(options.jsonOptions));
326
326
  app.use(express.urlencoded({ extended: true, ...options.urlencodedOptions }));
327
+ if (plugins && Array.isArray(plugins) && plugins.length > 0) {
328
+ for (const plugin of plugins) {
329
+ if (plugin && typeof plugin === 'function') {
330
+ await plugin(container);
331
+ }
332
+ }
333
+ }
327
334
  if (options.middlewares && Array.isArray(options.middlewares)) {
328
335
  options.middlewares.forEach(middleware => {
329
336
  app.use(middleware);
@@ -346,20 +353,23 @@ class AppFactory {
346
353
  }
347
354
  next();
348
355
  });
349
- if (plugins && Array.isArray(plugins) && plugins.length > 0) {
350
- for (const plugin of plugins) {
351
- if (plugin && typeof plugin === 'function') {
352
- await plugin(container);
353
- }
354
- }
355
- }
356
356
  if (!container.isBound(exports.Reflector)) {
357
357
  container.bind(exports.Reflector).toSelf().inSingletonScope();
358
358
  }
359
359
  const autoControllerList = common.ControllerRegistry.getAll();
360
+ const validAutoControllers = autoControllerList.filter(controllerClass => {
361
+ if (container.isBound(controllerClass)) {
362
+ return true;
363
+ }
364
+ const isManual = Reflect.getMetadata(common.METADATA_KEYS.MANUAL_REGISTER, controllerClass);
365
+ if (isManual) {
366
+ return false;
367
+ }
368
+ return true;
369
+ });
360
370
  const controllers = Array.from(new Set([
361
371
  ...(options.controllers || []),
362
- ...autoControllerList,
372
+ ...validAutoControllers,
363
373
  ]));
364
374
  controllers.forEach(controllerClass => {
365
375
  if (!container.isBound(controllerClass)) {
@@ -463,7 +473,11 @@ exports.JWTGuard = class JWTGuard {
463
473
  }
464
474
  async canActivate(context) {
465
475
  const request = context.switchToHttp().getRequest();
466
- const sessionId = request.headers['x-session'] || request.cookies['x-session'];
476
+ const cookieName = process.env.AUTH_COOKIE_NAME;
477
+ if (!cookieName) {
478
+ return false;
479
+ }
480
+ const sessionId = request.headers[cookieName] || request.cookies?.[cookieName];
467
481
  if (!sessionId) {
468
482
  return false;
469
483
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hemia/core",
3
- "version": "0.0.7",
3
+ "version": "0.0.10",
4
4
  "description": "Core utilities for Hemia projects",
5
5
  "main": "dist/hemia-core.js",
6
6
  "module": "dist/hemia-core.esm.js",
@@ -11,16 +11,17 @@
11
11
  "build": "npm run clean && npm run tscBuild",
12
12
  "test": "jest --detectOpenHandles",
13
13
  "test:coverage": "jest --coverage",
14
- "test:watch": "jest --watch"
14
+ "test:watch": "jest --watch",
15
+ "prepublish": "npm run build"
15
16
  },
16
17
  "devDependencies": {
17
18
  "@rollup/plugin-commonjs": "^26.0.1",
18
19
  "@rollup/plugin-json": "^6.1.0",
19
20
  "@rollup/plugin-node-resolve": "^15.2.3",
20
- "@hemia/common": "^0.0.9",
21
+ "@hemia/common": "^0.0.14",
21
22
  "@hemia/app-context": "^0.0.6",
22
23
  "@hemia/trace-manager": "^0.0.9",
23
- "@hemia/auth-sdk": "^0.0.10",
24
+ "@hemia/auth-sdk": "^0.0.13",
24
25
  "@types/express": "^5.0.5",
25
26
  "express": "^5.1.0",
26
27
  "inversify": "^7.10.4",