@cryptexlabs/codex-nodejs-common 0.1.11 → 0.1.15

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.
package/lib/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cryptexlabs/codex-nodejs-common",
3
- "version": "0.1.11",
3
+ "version": "0.1.15",
4
4
  "description": "Common code for Assistant applications",
5
5
  "main": "lib/src/index.js",
6
6
  "repository": "git@gitlab.com:cryptexlabs/public/codex-nodejs-common.git",
@@ -47,6 +47,7 @@
47
47
  "@types/jest": "^27.0.1",
48
48
  "@types/js-yaml": "^3.12.5",
49
49
  "@types/supertest": "^2.0.10",
50
+ "@types/uuid": "^8.3.1",
50
51
  "husky": "^4.3.6",
51
52
  "jest": "^27.0.6",
52
53
  "nodemon": "^2.0.6",
@@ -3,6 +3,8 @@ import { AuthorizationRequestInterface } from "./authorization-request.interface
3
3
  export declare class HttpAuthzGuardUtil {
4
4
  private readonly context;
5
5
  private _token;
6
+ readonly params: any;
7
+ readonly query: any;
6
8
  constructor(context: ExecutionContext);
7
9
  isAuthorized(...authzRequests: AuthorizationRequestInterface[]): boolean;
8
10
  private _doesScopeAuthorizeRequest;
@@ -8,7 +8,10 @@ class HttpAuthzGuardUtil {
8
8
  constructor(context) {
9
9
  this.context = context;
10
10
  const request = context.switchToHttp().getRequest();
11
- const authorizationHeader = request.headers.Authorization;
11
+ const authorizationHeader = request.headers.authorization;
12
+ if (!authorizationHeader) {
13
+ throw new common_1.HttpException("Unauthorized", common_1.HttpStatus.UNAUTHORIZED);
14
+ }
12
15
  const bearerTokenParts = authorizationHeader.trim().split("Bearer ");
13
16
  if (bearerTokenParts.length !== 2) {
14
17
  throw new common_1.HttpException("Unauthorized", common_1.HttpStatus.UNAUTHORIZED);
@@ -19,6 +22,8 @@ class HttpAuthzGuardUtil {
19
22
  throw new common_1.HttpException("Unauthorized", common_1.HttpStatus.UNAUTHORIZED);
20
23
  }
21
24
  this._token = decodedToken;
25
+ this.params = request.params;
26
+ this.query = request.query;
22
27
  }
23
28
  isAuthorized(...authzRequests) {
24
29
  const scopes = this._token.scopes;
@@ -37,6 +42,9 @@ class HttpAuthzGuardUtil {
37
42
  }
38
43
  for (let i = 0; i < authzRequests.length; i++) {
39
44
  const request = authzRequests[i];
45
+ if (!authorizationAllowances[i]) {
46
+ return false;
47
+ }
40
48
  const allowance = authorizationAllowances[i];
41
49
  if (!allowance.isRequestAllowed(request)) {
42
50
  return false;
@@ -1 +1 @@
1
- {"version":3,"file":"http-authz-guard.util.js","sourceRoot":"","sources":["../../../src/auth/http-authz-guard.util.ts"],"names":[],"mappings":";;;AAAA,2CAA6E;AAC7E,oCAAoC;AAEpC,uEAAmE;AAEnE,MAAa,kBAAkB;IAG7B,YAA6B,OAAyB;QAAzB,YAAO,GAAP,OAAO,CAAkB;QACpD,MAAM,OAAO,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,UAAU,EAAE,CAAC;QACpD,MAAM,mBAAmB,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC;QAC1D,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACrE,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE;YACjC,MAAM,IAAI,sBAAa,CAAC,cAAc,EAAE,mBAAU,CAAC,YAAY,CAAC,CAAC;SAClE;QAED,MAAM,WAAW,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;QACxC,MAAM,YAAY,GAAG,GAAG,CAAC,MAAM,CAAC,WAAW,CAAmB,CAAC;QAC/D,IAAI,CAAC,YAAY,EAAE;YACjB,MAAM,IAAI,sBAAa,CAAC,cAAc,EAAE,mBAAU,CAAC,YAAY,CAAC,CAAC;SAClE;QAED,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC;IAC7B,CAAC;IAEM,YAAY,CAAC,GAAG,aAA8C;QACnE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;QAElC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;YAC1B,IAAI,IAAI,CAAC,0BAA0B,CAAC,KAAK,EAAE,aAAa,CAAC,EAAE;gBACzD,OAAO,IAAI,CAAC;aACb;SACF;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,0BAA0B,CAChC,KAAa,EACb,aAA8C;QAE9C,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAE/B,MAAM,uBAAuB,GAAG,EAAE,CAAC;QACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;YACxC,uBAAuB,CAAC,IAAI,CAC1B,IAAI,gDAAsB,CACxB,IAAI,CAAC,MAAM,CAAC,GAAG,EACf,KAAK,CAAC,CAAC,CAAC,EACR,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,EACZ,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CACb,CACF,CAAC;SACH;QAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC7C,MAAM,OAAO,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;YACjC,MAAM,SAAS,GAAG,uBAAuB,CAAC,CAAC,CAAC,CAAC;YAC7C,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE;gBACxC,OAAO,KAAK,CAAC;aACd;SACF;QAED,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AA5DD,gDA4DC"}
1
+ {"version":3,"file":"http-authz-guard.util.js","sourceRoot":"","sources":["../../../src/auth/http-authz-guard.util.ts"],"names":[],"mappings":";;;AAAA,2CAA6E;AAC7E,oCAAoC;AAEpC,uEAAmE;AAEnE,MAAa,kBAAkB;IAK7B,YAA6B,OAAyB;QAAzB,YAAO,GAAP,OAAO,CAAkB;QACpD,MAAM,OAAO,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,UAAU,EAAE,CAAC;QACpD,MAAM,mBAAmB,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC;QAC1D,IAAI,CAAC,mBAAmB,EAAE;YACxB,MAAM,IAAI,sBAAa,CAAC,cAAc,EAAE,mBAAU,CAAC,YAAY,CAAC,CAAC;SAClE;QACD,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACrE,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE;YACjC,MAAM,IAAI,sBAAa,CAAC,cAAc,EAAE,mBAAU,CAAC,YAAY,CAAC,CAAC;SAClE;QAED,MAAM,WAAW,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;QACxC,MAAM,YAAY,GAAG,GAAG,CAAC,MAAM,CAAC,WAAW,CAAmB,CAAC;QAC/D,IAAI,CAAC,YAAY,EAAE;YACjB,MAAM,IAAI,sBAAa,CAAC,cAAc,EAAE,mBAAU,CAAC,YAAY,CAAC,CAAC;SAClE;QAED,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC;QAC3B,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;IAC7B,CAAC;IAEM,YAAY,CAAC,GAAG,aAA8C;QACnE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;QAElC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;YAC1B,IAAI,IAAI,CAAC,0BAA0B,CAAC,KAAK,EAAE,aAAa,CAAC,EAAE;gBACzD,OAAO,IAAI,CAAC;aACb;SACF;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,0BAA0B,CAChC,KAAa,EACb,aAA8C;QAE9C,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAE/B,MAAM,uBAAuB,GAAG,EAAE,CAAC;QACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;YACxC,uBAAuB,CAAC,IAAI,CAC1B,IAAI,gDAAsB,CACxB,IAAI,CAAC,MAAM,CAAC,GAAG,EACf,KAAK,CAAC,CAAC,CAAC,EACR,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,EACZ,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CACb,CACF,CAAC;SACH;QAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC7C,MAAM,OAAO,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;YACjC,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC,EAAE;gBAC/B,OAAO,KAAK,CAAC;aACd;YACD,MAAM,SAAS,GAAG,uBAAuB,CAAC,CAAC,CAAC,CAAC;YAC7C,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE;gBACxC,OAAO,KAAK,CAAC;aACd;SACF;QAED,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAtED,gDAsEC"}
@@ -0,0 +1 @@
1
+ export declare function ApiPagination(): <TFunction extends Function, Y>(target: object | TFunction, propertyKey?: string | symbol, descriptor?: TypedPropertyDescriptor<Y>) => void;
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ApiPagination = void 0;
4
+ const swagger_1 = require("@nestjs/swagger");
5
+ const common_1 = require("@nestjs/common");
6
+ function ApiPagination() {
7
+ return common_1.applyDecorators(...[
8
+ swagger_1.ApiQuery({
9
+ name: "page",
10
+ required: true,
11
+ example: 1,
12
+ }),
13
+ swagger_1.ApiQuery({
14
+ name: "pageSize",
15
+ required: true,
16
+ example: 10,
17
+ }),
18
+ ]);
19
+ }
20
+ exports.ApiPagination = ApiPagination;
21
+ //# sourceMappingURL=api-pagination.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-pagination.js","sourceRoot":"","sources":["../../../src/decorator/api-pagination.ts"],"names":[],"mappings":";;;AAAA,6CAA2C;AAC3C,2CAAiD;AAEjD,SAAgB,aAAa;IAC3B,OAAO,wBAAe,CACpB,GAAG;QACD,kBAAQ,CAAC;YACP,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,IAAI;YACd,OAAO,EAAE,CAAC;SACX,CAAC;QACF,kBAAQ,CAAC;YACP,IAAI,EAAE,UAAU;YAChB,QAAQ,EAAE,IAAI;YACd,OAAO,EAAE,EAAE;SACZ,CAAC;KACH,CACF,CAAC;AACJ,CAAC;AAfD,sCAeC"}
@@ -1 +1,2 @@
1
1
  export * from "./api-meta-headers";
2
+ export * from "./api-pagination";
@@ -11,4 +11,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
11
11
  };
12
12
  Object.defineProperty(exports, "__esModule", { value: true });
13
13
  __exportStar(require("./api-meta-headers"), exports);
14
+ __exportStar(require("./api-pagination"), exports);
14
15
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/decorator/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qDAAmC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/decorator/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qDAAmC;AACnC,mDAAiC"}
@@ -1,3 +1,5 @@
1
1
  export declare class ArrayUtil {
2
2
  static paginate(array: any, pageNumber: any, pageSize: any): any;
3
+ static unique(array: any): any;
4
+ static intersection(array1: any, array2: any): any;
3
5
  }
@@ -5,6 +5,12 @@ class ArrayUtil {
5
5
  static paginate(array, pageNumber, pageSize) {
6
6
  return array.slice((pageNumber - 1) * pageSize, pageNumber * pageSize);
7
7
  }
8
+ static unique(array) {
9
+ return array.filter((v, i, a) => a.indexOf(v) === i);
10
+ }
11
+ static intersection(array1, array2) {
12
+ return array1.filter((value) => array2.includes(value));
13
+ }
8
14
  }
9
15
  exports.ArrayUtil = ArrayUtil;
10
16
  //# sourceMappingURL=array.util.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"array.util.js","sourceRoot":"","sources":["../../../src/util/array.util.ts"],"names":[],"mappings":";;;AAAA,MAAa,SAAS;IACpB,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,UAAU,EAAE,QAAQ;QAEzC,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,QAAQ,EAAE,UAAU,GAAG,QAAQ,CAAC,CAAC;IACzE,CAAC;CACF;AALD,8BAKC"}
1
+ {"version":3,"file":"array.util.js","sourceRoot":"","sources":["../../../src/util/array.util.ts"],"names":[],"mappings":";;;AAAA,MAAa,SAAS;IACpB,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,UAAU,EAAE,QAAQ;QAEzC,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,QAAQ,EAAE,UAAU,GAAG,QAAQ,CAAC,CAAC;IACzE,CAAC;IACD,MAAM,CAAC,MAAM,CAAC,KAAK;QACjB,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IACvD,CAAC;IACD,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM;QAChC,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IAC1D,CAAC;CACF;AAXD,8BAWC"}
@@ -1,3 +1,4 @@
1
1
  export * from "./string.util";
2
2
  export * from "./array.util";
3
3
  export * from "./locale.util";
4
+ export * from "./time.util";
@@ -13,4 +13,5 @@ Object.defineProperty(exports, "__esModule", { value: true });
13
13
  __exportStar(require("./string.util"), exports);
14
14
  __exportStar(require("./array.util"), exports);
15
15
  __exportStar(require("./locale.util"), exports);
16
+ __exportStar(require("./time.util"), exports);
16
17
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/util/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,gDAA8B;AAC9B,+CAA6B;AAC7B,gDAA8B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/util/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,gDAA8B;AAC9B,+CAA6B;AAC7B,gDAA8B;AAC9B,8CAA4B"}
@@ -1 +1 @@
1
- {"version":3,"file":"string.util.js","sourceRoot":"","sources":["../../../src/util/string.util.ts"],"names":[],"mappings":";;;AAAA,iCAAiC;AACjC,MAAa,UAAU;IACrB,gBAAuB,CAAC;IAEjB,MAAM,CAAC,aAAa,CAAC,GAAW;QACrC,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC;IAC3E,CAAC;IAEM,MAAM,CAAC,aAAa,CAAC,IAAY,EAAE,GAAW;QACnD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAChC,MAAM,UAAU,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;QAC9B,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,IAAI,EAAE,EAAE;YAC9B,OAAO,IAAI,CAAC;SACb;QACD,IAAI,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE;YACnC,IACE,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,EAAE,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAC5D,UAAU,CACX,EACD;gBACA,OAAO,IAAI,CAAC;aACb;SACF;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAEM,MAAM,CAAC,WAAW,CAAC,GAAG;QAC3B,OAAO,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC5D,CAAC;IAEM,MAAM,CAAC,YAAY,CAAC,GAAG;QAC5B,OAAO,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC7D,CAAC;IAEM,MAAM,CAAC,MAAM,CAAC,GAAG;QACtB,OAAO,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC/D,CAAC;IAEM,MAAM,CAAC,MAAM,CAAC,GAAG;QACtB,OAAO,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC/D,CAAC;CACF;AAxCD,gCAwCC"}
1
+ {"version":3,"file":"string.util.js","sourceRoot":"","sources":["../../../src/util/string.util.ts"],"names":[],"mappings":";;;AAAA,iCAAiC;AACjC,MAAa,UAAU;IACrB,gBAAuB,CAAC;IACjB,MAAM,CAAC,aAAa,CAAC,GAAW;QACrC,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC;IAC3E,CAAC;IAEM,MAAM,CAAC,aAAa,CAAC,IAAY,EAAE,GAAW;QACnD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAChC,MAAM,UAAU,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;QAC9B,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,IAAI,EAAE,EAAE;YAC9B,OAAO,IAAI,CAAC;SACb;QACD,IAAI,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE;YACnC,IACE,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,EAAE,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAC5D,UAAU,CACX,EACD;gBACA,OAAO,IAAI,CAAC;aACb;SACF;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAEM,MAAM,CAAC,WAAW,CAAC,GAAG;QAC3B,OAAO,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC5D,CAAC;IAEM,MAAM,CAAC,YAAY,CAAC,GAAG;QAC5B,OAAO,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC7D,CAAC;IAEM,MAAM,CAAC,MAAM,CAAC,GAAG;QACtB,OAAO,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC/D,CAAC;IAEM,MAAM,CAAC,MAAM,CAAC,GAAG;QACtB,OAAO,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC/D,CAAC;CACF;AAvCD,gCAuCC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cryptexlabs/codex-nodejs-common",
3
- "version": "0.1.11",
3
+ "version": "0.1.15",
4
4
  "description": "Common code for Assistant applications",
5
5
  "main": "lib/src/index.js",
6
6
  "repository": "git@gitlab.com:cryptexlabs/public/codex-nodejs-common.git",
@@ -47,6 +47,7 @@
47
47
  "@types/jest": "^27.0.1",
48
48
  "@types/js-yaml": "^3.12.5",
49
49
  "@types/supertest": "^2.0.10",
50
+ "@types/uuid": "^8.3.1",
50
51
  "husky": "^4.3.6",
51
52
  "jest": "^27.0.6",
52
53
  "nodemon": "^2.0.6",
@@ -16,7 +16,7 @@ describe("HttpAuthzGuardUtil", () => {
16
16
  const authorizationHeader = `Bearer ${token}`;
17
17
  return {
18
18
  headers: {
19
- Authorization: authorizationHeader,
19
+ authorization: authorizationHeader,
20
20
  },
21
21
  };
22
22
  };
@@ -5,10 +5,15 @@ import { AuthorizationAllowance } from "./authorization-allowance";
5
5
 
6
6
  export class HttpAuthzGuardUtil {
7
7
  private _token: any;
8
+ public readonly params: any;
9
+ public readonly query: any;
8
10
 
9
11
  constructor(private readonly context: ExecutionContext) {
10
12
  const request = context.switchToHttp().getRequest();
11
- const authorizationHeader = request.headers.Authorization;
13
+ const authorizationHeader = request.headers.authorization;
14
+ if (!authorizationHeader) {
15
+ throw new HttpException("Unauthorized", HttpStatus.UNAUTHORIZED);
16
+ }
12
17
  const bearerTokenParts = authorizationHeader.trim().split("Bearer ");
13
18
  if (bearerTokenParts.length !== 2) {
14
19
  throw new HttpException("Unauthorized", HttpStatus.UNAUTHORIZED);
@@ -21,6 +26,8 @@ export class HttpAuthzGuardUtil {
21
26
  }
22
27
 
23
28
  this._token = decodedToken;
29
+ this.params = request.params;
30
+ this.query = request.query;
24
31
  }
25
32
 
26
33
  public isAuthorized(...authzRequests: AuthorizationRequestInterface[]) {
@@ -55,6 +62,9 @@ export class HttpAuthzGuardUtil {
55
62
 
56
63
  for (let i = 0; i < authzRequests.length; i++) {
57
64
  const request = authzRequests[i];
65
+ if (!authorizationAllowances[i]) {
66
+ return false;
67
+ }
58
68
  const allowance = authorizationAllowances[i];
59
69
  if (!allowance.isRequestAllowed(request)) {
60
70
  return false;
@@ -0,0 +1,19 @@
1
+ import { ApiQuery } from "@nestjs/swagger";
2
+ import { applyDecorators } from "@nestjs/common";
3
+
4
+ export function ApiPagination() {
5
+ return applyDecorators(
6
+ ...[
7
+ ApiQuery({
8
+ name: "page",
9
+ required: true,
10
+ example: 1,
11
+ }),
12
+ ApiQuery({
13
+ name: "pageSize",
14
+ required: true,
15
+ example: 10,
16
+ }),
17
+ ]
18
+ );
19
+ }
@@ -1 +1,2 @@
1
1
  export * from "./api-meta-headers";
2
+ export * from "./api-pagination";
@@ -3,4 +3,10 @@ export class ArrayUtil {
3
3
  // human-readable page numbers usually start with 1, so we reduce 1 in the first argument
4
4
  return array.slice((pageNumber - 1) * pageSize, pageNumber * pageSize);
5
5
  }
6
+ static unique(array) {
7
+ return array.filter((v, i, a) => a.indexOf(v) === i);
8
+ }
9
+ static intersection(array1, array2) {
10
+ return array1.filter((value) => array2.includes(value));
11
+ }
6
12
  }
package/src/util/index.ts CHANGED
@@ -1,3 +1,4 @@
1
1
  export * from "./string.util";
2
2
  export * from "./array.util";
3
3
  export * from "./locale.util";
4
+ export * from "./time.util";
@@ -1,7 +1,6 @@
1
1
  import * as crypto from "crypto";
2
2
  export class StringUtil {
3
3
  private constructor() {}
4
-
5
4
  public static isRegexString(str: string) {
6
5
  return str.substr(0, 1) === "/" && str.substr(str.length - 1, 1) === "/";
7
6
  }