@tsed/passport 7.0.0-alpha.1 → 7.0.0-beta.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.
Files changed (122) hide show
  1. package/jest.config.js +14 -0
  2. package/lib/{PassportModule.js → cjs/PassportModule.js} +13 -8
  3. package/lib/cjs/PassportModule.js.map +1 -0
  4. package/lib/{contants/index.js → cjs/contants/constants.js} +1 -1
  5. package/lib/cjs/contants/constants.js.map +1 -0
  6. package/lib/{decorators → cjs/decorators}/args.js +2 -2
  7. package/lib/cjs/decorators/args.js.map +1 -0
  8. package/lib/{decorators → cjs/decorators}/authenticate.js +4 -4
  9. package/lib/cjs/decorators/authenticate.js.map +1 -0
  10. package/lib/{decorators → cjs/decorators}/authorize.js +4 -4
  11. package/lib/cjs/decorators/authorize.js.map +1 -0
  12. package/lib/{decorators → cjs/decorators}/protocol.js +4 -4
  13. package/lib/cjs/decorators/protocol.js.map +1 -0
  14. package/lib/{domain → cjs/domain}/UserInfo.js +4 -4
  15. package/lib/cjs/domain/UserInfo.js.map +1 -0
  16. package/lib/{errors → cjs/errors}/PassportException.js +0 -0
  17. package/lib/cjs/errors/PassportException.js.map +1 -0
  18. package/lib/{index.js → cjs/index.js} +15 -10
  19. package/lib/cjs/index.js.map +1 -0
  20. package/lib/cjs/interfaces/BeforeInstall.js +3 -0
  21. package/lib/cjs/interfaces/BeforeInstall.js.map +1 -0
  22. package/lib/{interfaces → cjs/interfaces}/OnInstall.js +0 -0
  23. package/lib/cjs/interfaces/OnInstall.js.map +1 -0
  24. package/lib/{interfaces → cjs/interfaces}/OnVerify.js +0 -0
  25. package/lib/cjs/interfaces/OnVerify.js.map +1 -0
  26. package/lib/cjs/interfaces/ProtocolMethods.js +3 -0
  27. package/lib/cjs/interfaces/ProtocolMethods.js.map +1 -0
  28. package/lib/{interfaces → cjs/interfaces}/ProtocolOptions.js +0 -0
  29. package/lib/cjs/interfaces/ProtocolOptions.js.map +1 -0
  30. package/lib/{interfaces/IProtocol.js → cjs/interfaces/interfaces.js} +1 -1
  31. package/lib/cjs/interfaces/interfaces.js.map +1 -0
  32. package/lib/{middlewares → cjs/middlewares}/PassportMiddleware.js +6 -4
  33. package/lib/cjs/middlewares/PassportMiddleware.js.map +1 -0
  34. package/lib/cjs/package.json +3 -0
  35. package/lib/{services → cjs/services}/PassportSerializerService.js +4 -4
  36. package/lib/cjs/services/PassportSerializerService.js.map +1 -0
  37. package/lib/{services → cjs/services}/ProtocolsService.js +22 -14
  38. package/lib/cjs/services/ProtocolsService.js.map +1 -0
  39. package/lib/{utils → cjs/utils}/getProtocolsFromRequest.js +1 -1
  40. package/lib/cjs/utils/getProtocolsFromRequest.js.map +1 -0
  41. package/lib/esm/PassportModule.js +63 -0
  42. package/lib/esm/PassportModule.js.map +1 -0
  43. package/lib/esm/contants/constants.js +2 -0
  44. package/lib/esm/contants/constants.js.map +1 -0
  45. package/lib/esm/decorators/args.js +13 -0
  46. package/lib/esm/decorators/args.js.map +1 -0
  47. package/lib/esm/decorators/authenticate.js +15 -0
  48. package/lib/esm/decorators/authenticate.js.map +1 -0
  49. package/lib/esm/decorators/authorize.js +15 -0
  50. package/lib/esm/decorators/authorize.js.map +1 -0
  51. package/lib/esm/decorators/protocol.js +21 -0
  52. package/lib/esm/decorators/protocol.js.map +1 -0
  53. package/lib/esm/domain/UserInfo.js +18 -0
  54. package/lib/esm/domain/UserInfo.js.map +1 -0
  55. package/lib/esm/errors/PassportException.js +8 -0
  56. package/lib/esm/errors/PassportException.js.map +1 -0
  57. package/lib/esm/index.js +22 -0
  58. package/lib/esm/index.js.map +1 -0
  59. package/lib/esm/interfaces/BeforeInstall.js +2 -0
  60. package/lib/esm/interfaces/BeforeInstall.js.map +1 -0
  61. package/lib/esm/interfaces/OnInstall.js +2 -0
  62. package/lib/esm/interfaces/OnInstall.js.map +1 -0
  63. package/lib/esm/interfaces/OnVerify.js +2 -0
  64. package/lib/esm/interfaces/OnVerify.js.map +1 -0
  65. package/lib/esm/interfaces/ProtocolMethods.js +2 -0
  66. package/lib/esm/interfaces/ProtocolMethods.js.map +1 -0
  67. package/lib/esm/interfaces/ProtocolOptions.js +2 -0
  68. package/lib/esm/interfaces/ProtocolOptions.js.map +1 -0
  69. package/lib/esm/interfaces/interfaces.js +2 -0
  70. package/lib/esm/interfaces/interfaces.js.map +1 -0
  71. package/lib/esm/middlewares/PassportMiddleware.js +43 -0
  72. package/lib/esm/middlewares/PassportMiddleware.js.map +1 -0
  73. package/lib/esm/package.json +3 -0
  74. package/lib/esm/services/PassportSerializerService.js +39 -0
  75. package/lib/esm/services/PassportSerializerService.js.map +1 -0
  76. package/lib/esm/services/ProtocolsService.js +137 -0
  77. package/lib/esm/services/ProtocolsService.js.map +1 -0
  78. package/lib/esm/utils/getProtocolsFromRequest.js +32 -0
  79. package/lib/esm/utils/getProtocolsFromRequest.js.map +1 -0
  80. package/lib/{PassportModule.d.ts → types/PassportModule.d.ts} +2 -1
  81. package/lib/{contants/index.d.ts → types/contants/constants.d.ts} +0 -0
  82. package/lib/{decorators → types/decorators}/args.d.ts +0 -0
  83. package/lib/{decorators → types/decorators}/authenticate.d.ts +0 -0
  84. package/lib/{decorators → types/decorators}/authorize.d.ts +0 -0
  85. package/lib/{decorators → types/decorators}/protocol.d.ts +0 -0
  86. package/lib/{domain → types/domain}/UserInfo.d.ts +0 -0
  87. package/lib/{errors → types/errors}/PassportException.d.ts +0 -0
  88. package/lib/types/index.d.ts +21 -0
  89. package/lib/types/interfaces/BeforeInstall.d.ts +3 -0
  90. package/lib/{interfaces → types/interfaces}/OnInstall.d.ts +1 -1
  91. package/lib/{interfaces → types/interfaces}/OnVerify.d.ts +0 -0
  92. package/lib/types/interfaces/ProtocolMethods.d.ts +5 -0
  93. package/lib/{interfaces → types/interfaces}/ProtocolOptions.d.ts +2 -2
  94. package/lib/{interfaces/index.d.ts → types/interfaces/interfaces.d.ts} +3 -4
  95. package/lib/{middlewares → types/middlewares}/PassportMiddleware.d.ts +0 -0
  96. package/lib/{services → types/services}/PassportSerializerService.d.ts +0 -0
  97. package/lib/{services → types/services}/ProtocolsService.d.ts +2 -1
  98. package/lib/{utils → types/utils}/getProtocolsFromRequest.d.ts +0 -0
  99. package/package.json +32 -28
  100. package/readme.md +15 -17
  101. package/tsconfig.compile.esm.json +12 -0
  102. package/lib/PassportModule.js.map +0 -1
  103. package/lib/contants/index.js.map +0 -1
  104. package/lib/decorators/args.js.map +0 -1
  105. package/lib/decorators/authenticate.js.map +0 -1
  106. package/lib/decorators/authorize.js.map +0 -1
  107. package/lib/decorators/protocol.js.map +0 -1
  108. package/lib/domain/UserInfo.js.map +0 -1
  109. package/lib/errors/PassportException.js.map +0 -1
  110. package/lib/index.d.ts +0 -12
  111. package/lib/index.js.map +0 -1
  112. package/lib/interfaces/IProtocol.d.ts +0 -4
  113. package/lib/interfaces/IProtocol.js.map +0 -1
  114. package/lib/interfaces/OnInstall.js.map +0 -1
  115. package/lib/interfaces/OnVerify.js.map +0 -1
  116. package/lib/interfaces/ProtocolOptions.js.map +0 -1
  117. package/lib/interfaces/index.js +0 -8
  118. package/lib/interfaces/index.js.map +0 -1
  119. package/lib/middlewares/PassportMiddleware.js.map +0 -1
  120. package/lib/services/PassportSerializerService.js.map +0 -1
  121. package/lib/services/ProtocolsService.js.map +0 -1
  122. package/lib/utils/getProtocolsFromRequest.js.map +0 -1
package/jest.config.js ADDED
@@ -0,0 +1,14 @@
1
+ // For a detailed explanation regarding each configuration property, visit:
2
+ // https://jestjs.io/docs/en/configuration.html
3
+
4
+ module.exports = {
5
+ ...require("@tsed/jest-config")(__dirname, "passport"),
6
+ coverageThreshold: {
7
+ global: {
8
+ statements: 99.36,
9
+ branches: 80,
10
+ functions: 100,
11
+ lines: 99.32
12
+ }
13
+ }
14
+ };
@@ -15,10 +15,11 @@ let PassportModule = class PassportModule {
15
15
  this.protocolsService = protocolsService;
16
16
  this.passportSerializer = passportSerializer;
17
17
  }
18
- $onInit() {
18
+ async $onInit() {
19
19
  passport_1.default.serializeUser(this.passportSerializer.serialize.bind(this.passportSerializer));
20
20
  passport_1.default.deserializeUser(this.passportSerializer.deserialize.bind(this.passportSerializer));
21
- this.protocolsService.getProtocols().forEach((provider) => this.protocolsService.invoke(provider));
21
+ const promises = this.protocolsService.getProtocols().map((provider) => this.protocolsService.invoke(provider));
22
+ await Promise.all(promises);
22
23
  return undefined;
23
24
  }
24
25
  $beforeRoutesInit() {
@@ -26,7 +27,7 @@ let PassportModule = class PassportModule {
26
27
  switch (this.platformName) {
27
28
  case "express":
28
29
  this.app.use(passport_1.default.initialize({ userProperty }));
29
- this.app.use(passport_1.default.session({ pauseStream }));
30
+ !this.disableSession && this.app.use(passport_1.default.session({ pauseStream }));
30
31
  return;
31
32
  default:
32
33
  this.logger.warn(`Platform "${this.platformName}" not supported by @tsed/passport`);
@@ -34,23 +35,27 @@ let PassportModule = class PassportModule {
34
35
  }
35
36
  };
36
37
  tslib_1.__decorate([
37
- common_1.Constant("passport.userProperty"),
38
+ (0, common_1.Constant)("passport.userProperty"),
38
39
  tslib_1.__metadata("design:type", String)
39
40
  ], PassportModule.prototype, "userProperty", void 0);
40
41
  tslib_1.__decorate([
41
- common_1.Constant("passport.pauseStream"),
42
+ (0, common_1.Constant)("passport.pauseStream"),
42
43
  tslib_1.__metadata("design:type", Boolean)
43
44
  ], PassportModule.prototype, "pauseStream", void 0);
44
45
  tslib_1.__decorate([
45
- common_1.Constant("PLATFORM_NAME"),
46
+ (0, common_1.Constant)("passport.disableSession", false),
47
+ tslib_1.__metadata("design:type", Boolean)
48
+ ], PassportModule.prototype, "disableSession", void 0);
49
+ tslib_1.__decorate([
50
+ (0, common_1.Constant)("PLATFORM_NAME"),
46
51
  tslib_1.__metadata("design:type", String)
47
52
  ], PassportModule.prototype, "platformName", void 0);
48
53
  tslib_1.__decorate([
49
- common_1.Inject(),
54
+ (0, common_1.Inject)(),
50
55
  tslib_1.__metadata("design:type", common_1.Logger)
51
56
  ], PassportModule.prototype, "logger", void 0);
52
57
  PassportModule = tslib_1.__decorate([
53
- common_1.Module({
58
+ (0, common_1.Module)({
54
59
  scope: common_1.ProviderScope.SINGLETON
55
60
  }),
56
61
  tslib_1.__metadata("design:paramtypes", [common_1.PlatformApplication,
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PassportModule.js","sourceRoot":"","sources":["../../src/PassportModule.ts"],"names":[],"mappings":";;;;AAAA,yCAAsI;AACtI,gEAAgC;AAChC,oFAA+E;AAC/E,kEAA6D;AAE7D;;GAEG;AAIH,IAAa,cAAc,GAA3B,MAAa,cAAc;IAgBzB,YACU,GAAwB,EACxB,gBAAkC,EAClC,kBAA6C;QAF7C,QAAG,GAAH,GAAG,CAAqB;QACxB,qBAAgB,GAAhB,gBAAgB,CAAkB;QAClC,uBAAkB,GAAlB,kBAAkB,CAA2B;IACpD,CAAC;IAEJ,KAAK,CAAC,OAAO;QACX,kBAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;QACxF,kBAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;QAE5F,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,CAAC,GAAG,CAAC,CAAC,QAAkB,EAAE,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;QAE1H,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC5B,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,iBAAiB;QACf,MAAM,EAAC,YAAY,EAAE,WAAW,EAAC,GAAG,IAAI,CAAC;QACzC,QAAQ,IAAI,CAAC,YAAY,EAAE;YACzB,KAAK,SAAS;gBACZ,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,kBAAQ,CAAC,UAAU,CAAC,EAAC,YAAY,EAAC,CAAC,CAAC,CAAC;gBAClD,CAAC,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,kBAAQ,CAAC,OAAO,CAAC,EAAC,WAAW,EAAC,CAAC,CAAC,CAAC;gBAEtE,OAAO;YAET;gBACE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,YAAY,mCAAmC,CAAC,CAAC;SACvF;IACH,CAAC;CACF,CAAA;AA3CC;IADC,IAAA,iBAAQ,EAAC,uBAAuB,CAAC;;oDACb;AAGrB;IADC,IAAA,iBAAQ,EAAC,sBAAsB,CAAC;;mDACZ;AAGrB;IADC,IAAA,iBAAQ,EAAC,yBAAyB,EAAE,KAAK,CAAC;;sDACnB;AAGxB;IADC,IAAA,iBAAQ,EAAC,eAAe,CAAC;;oDACL;AAGrB;IADC,IAAA,eAAM,GAAE;sCACD,eAAM;8CAAC;AAdJ,cAAc;IAH1B,IAAA,eAAM,EAAC;QACN,KAAK,EAAE,sBAAa,CAAC,SAAS;KAC/B,CAAC;6CAkBe,4BAAmB;QACN,mCAAgB;QACd,qDAAyB;GAnB5C,cAAc,CA6C1B;AA7CY,wCAAc","sourcesContent":["import {BeforeRoutesInit, Constant, Inject, Module, OnInit, PlatformApplication, Provider, ProviderScope, Logger} from \"@tsed/common\";\nimport Passport from \"passport\";\nimport {PassportSerializerService} from \"./services/PassportSerializerService\";\nimport {ProtocolsService} from \"./services/ProtocolsService\";\n\n/**\n * @ignore\n */\n@Module({\n scope: ProviderScope.SINGLETON\n})\nexport class PassportModule implements OnInit, BeforeRoutesInit {\n @Constant(\"passport.userProperty\")\n userProperty: string;\n\n @Constant(\"passport.pauseStream\")\n pauseStream: boolean;\n\n @Constant(\"passport.disableSession\", false)\n disableSession: boolean;\n\n @Constant(\"PLATFORM_NAME\")\n platformName: string;\n\n @Inject()\n logger: Logger;\n\n constructor(\n private app: PlatformApplication,\n private protocolsService: ProtocolsService,\n private passportSerializer: PassportSerializerService\n ) {}\n\n async $onInit(): Promise<any> {\n Passport.serializeUser(this.passportSerializer.serialize.bind(this.passportSerializer));\n Passport.deserializeUser(this.passportSerializer.deserialize.bind(this.passportSerializer));\n\n const promises = this.protocolsService.getProtocols().map((provider: Provider) => this.protocolsService.invoke(provider));\n\n await Promise.all(promises);\n return undefined;\n }\n\n $beforeRoutesInit(): void | Promise<any> {\n const {userProperty, pauseStream} = this;\n switch (this.platformName) {\n case \"express\":\n this.app.use(Passport.initialize({userProperty}));\n !this.disableSession && this.app.use(Passport.session({pauseStream}));\n\n return;\n\n default:\n this.logger.warn(`Platform \"${this.platformName}\" not supported by @tsed/passport`);\n }\n }\n}\n"]}
@@ -2,4 +2,4 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.PROVIDER_TYPE_PROTOCOL = void 0;
4
4
  exports.PROVIDER_TYPE_PROTOCOL = "protocol";
5
- //# sourceMappingURL=index.js.map
5
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/contants/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,sBAAsB,GAAG,UAAU,CAAC","sourcesContent":["export const PROVIDER_TYPE_PROTOCOL = \"protocol\";\n"]}
@@ -8,11 +8,11 @@ const core_1 = require("@tsed/core");
8
8
  * @decorator
9
9
  */
10
10
  function Args() {
11
- return core_1.useDecorators(common_1.Context("PROTOCOL_ARGS"));
11
+ return (0, core_1.useDecorators)((0, common_1.Context)("PROTOCOL_ARGS"));
12
12
  }
13
13
  exports.Args = Args;
14
14
  function Arg(index) {
15
- return core_1.useDecorators(common_1.Context(`PROTOCOL_ARGS.${index}`));
15
+ return (0, core_1.useDecorators)((0, common_1.Context)(`PROTOCOL_ARGS.${index}`));
16
16
  }
17
17
  exports.Arg = Arg;
18
18
  //# sourceMappingURL=args.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"args.js","sourceRoot":"","sources":["../../../src/decorators/args.ts"],"names":[],"mappings":";;;AAAA,yCAAqC;AACrC,qCAAyC;AAEzC;;;GAGG;AACH,SAAgB,IAAI;IAClB,OAAO,IAAA,oBAAa,EAAC,IAAA,gBAAO,EAAC,eAAe,CAAC,CAAC,CAAC;AACjD,CAAC;AAFD,oBAEC;AAED,SAAgB,GAAG,CAAC,KAAa;IAC/B,OAAO,IAAA,oBAAa,EAAC,IAAA,gBAAO,EAAC,iBAAiB,KAAK,EAAE,CAAC,CAAC,CAAC;AAC1D,CAAC;AAFD,kBAEC","sourcesContent":["import {Context} from \"@tsed/common\";\nimport {useDecorators} from \"@tsed/core\";\n\n/**\n * Inject args resolve by the passport strategy on verify method.\n * @decorator\n */\nexport function Args() {\n return useDecorators(Context(\"PROTOCOL_ARGS\"));\n}\n\nexport function Arg(index: number) {\n return useDecorators(Context(`PROTOCOL_ARGS.${index}`));\n}\n"]}
@@ -1,18 +1,18 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Authenticate = void 0;
4
- const common_1 = require("@tsed/common");
5
- const PassportMiddleware_1 = require("../middlewares/PassportMiddleware");
4
+ const platform_middlewares_1 = require("@tsed/platform-middlewares");
6
5
  const core_1 = require("@tsed/core");
7
6
  const schema_1 = require("@tsed/schema");
7
+ const PassportMiddleware_1 = require("../middlewares/PassportMiddleware");
8
8
  function Authenticate(protocol = "*", options = {}) {
9
- return core_1.useDecorators(common_1.UseAuth(PassportMiddleware_1.PassportMiddleware, {
9
+ return (0, core_1.useDecorators)((0, platform_middlewares_1.UseAuth)(PassportMiddleware_1.PassportMiddleware, {
10
10
  protocol,
11
11
  method: "authenticate",
12
12
  originalUrl: options.originalUrl === undefined ? true : options.originalUrl,
13
13
  options
14
14
  }), ...Object.entries(options.security || {}).map(([key, value]) => {
15
- return schema_1.Security(key, ...value);
15
+ return (0, schema_1.Security)(key, ...value);
16
16
  }));
17
17
  }
18
18
  exports.Authenticate = Authenticate;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authenticate.js","sourceRoot":"","sources":["../../../src/decorators/authenticate.ts"],"names":[],"mappings":";;;AAAA,qEAAmD;AACnD,qCAAyC;AACzC,yCAAsC;AAEtC,0EAAqE;AAOrE,SAAgB,YAAY,CAAC,WAA8B,GAAG,EAAE,UAA+B,EAAE;IAC/F,OAAO,IAAA,oBAAa,EAClB,IAAA,8BAAO,EAAC,uCAAkB,EAAE;QAC1B,QAAQ;QACR,MAAM,EAAE,cAAc;QACtB,WAAW,EAAE,OAAO,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW;QAC3E,OAAO;KACR,CAAC,EACF,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;QAC7D,OAAO,IAAA,iBAAQ,EAAC,GAAG,EAAE,GAAG,KAAK,CAAC,CAAC;IACjC,CAAC,CAAC,CACH,CAAC;AACJ,CAAC;AAZD,oCAYC","sourcesContent":["import {UseAuth} from \"@tsed/platform-middlewares\";\nimport {useDecorators} from \"@tsed/core\";\nimport {Security} from \"@tsed/schema\";\nimport {AuthenticateOptions as PassportAuthenticateOptions} from \"passport\";\nimport {PassportMiddleware} from \"../middlewares/PassportMiddleware\";\n\nexport interface AuthenticateOptions extends PassportAuthenticateOptions {\n security?: Record<string, string[]>;\n originalUrl?: boolean;\n}\n\nexport function Authenticate(protocol: string | string[] = \"*\", options: AuthenticateOptions = {}): Function {\n return useDecorators(\n UseAuth(PassportMiddleware, {\n protocol,\n method: \"authenticate\",\n originalUrl: options.originalUrl === undefined ? true : options.originalUrl,\n options\n }),\n ...Object.entries(options.security || {}).map(([key, value]) => {\n return Security(key, ...value);\n })\n );\n}\n"]}
@@ -1,18 +1,18 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Authorize = void 0;
4
- const common_1 = require("@tsed/common");
5
- const PassportMiddleware_1 = require("../middlewares/PassportMiddleware");
4
+ const platform_middlewares_1 = require("@tsed/platform-middlewares");
6
5
  const core_1 = require("@tsed/core");
7
6
  const schema_1 = require("@tsed/schema");
7
+ const PassportMiddleware_1 = require("../middlewares/PassportMiddleware");
8
8
  function Authorize(protocol = "*", options = {}) {
9
- return core_1.useDecorators(common_1.UseAuth(PassportMiddleware_1.PassportMiddleware, {
9
+ return (0, core_1.useDecorators)((0, platform_middlewares_1.UseAuth)(PassportMiddleware_1.PassportMiddleware, {
10
10
  protocol,
11
11
  method: "authorize",
12
12
  originalUrl: options.originalUrl === undefined ? true : options.originalUrl,
13
13
  options
14
14
  }), ...Object.entries(options.security || {}).map(([key, value]) => {
15
- return schema_1.Security(key, ...value);
15
+ return (0, schema_1.Security)(key, ...value);
16
16
  }));
17
17
  }
18
18
  exports.Authorize = Authorize;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authorize.js","sourceRoot":"","sources":["../../../src/decorators/authorize.ts"],"names":[],"mappings":";;;AAAA,qEAAmD;AACnD,qCAAyC;AACzC,yCAAsC;AAEtC,0EAAqE;AAOrE,SAAgB,SAAS,CAAC,WAA8B,GAAG,EAAE,UAA4B,EAAE;IACzF,OAAO,IAAA,oBAAa,EAClB,IAAA,8BAAO,EAAC,uCAAkB,EAAE;QAC1B,QAAQ;QACR,MAAM,EAAE,WAAW;QACnB,WAAW,EAAE,OAAO,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW;QAC3E,OAAO;KACR,CAAC,EACF,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;QAC7D,OAAO,IAAA,iBAAQ,EAAC,GAAG,EAAE,GAAG,KAAK,CAAC,CAAC;IACjC,CAAC,CAAC,CACH,CAAC;AACJ,CAAC;AAZD,8BAYC","sourcesContent":["import {UseAuth} from \"@tsed/platform-middlewares\";\nimport {useDecorators} from \"@tsed/core\";\nimport {Security} from \"@tsed/schema\";\nimport {AuthenticateOptions} from \"passport\";\nimport {PassportMiddleware} from \"../middlewares/PassportMiddleware\";\n\nexport interface AuthorizeOptions extends AuthenticateOptions {\n security?: Record<string, string[]>;\n originalUrl?: boolean;\n}\n\nexport function Authorize(protocol: string | string[] = \"*\", options: AuthorizeOptions = {}): Function {\n return useDecorators(\n UseAuth(PassportMiddleware, {\n protocol,\n method: \"authorize\",\n originalUrl: options.originalUrl === undefined ? true : options.originalUrl,\n options\n }),\n ...Object.entries(options.security || {}).map(([key, value]) => {\n return Security(key, ...value);\n })\n );\n}\n"]}
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Protocol = void 0;
4
4
  const core_1 = require("@tsed/core");
5
5
  const di_1 = require("@tsed/di");
6
- const contants_1 = require("../contants");
6
+ const constants_1 = require("../contants/constants");
7
7
  /**
8
8
  * Declare a new Protocol base on a Passport Strategy
9
9
  *
@@ -11,9 +11,9 @@ const contants_1 = require("../contants");
11
11
  * @class
12
12
  */
13
13
  function Protocol(options) {
14
- return core_1.useDecorators(di_1.Injectable({
15
- type: contants_1.PROVIDER_TYPE_PROTOCOL
16
- }), core_1.StoreSet("protocol", options), di_1.Configuration({
14
+ return (0, core_1.useDecorators)((0, di_1.Injectable)({
15
+ type: constants_1.PROVIDER_TYPE_PROTOCOL
16
+ }), (0, core_1.StoreSet)("protocol", options), (0, di_1.Configuration)({
17
17
  passport: {
18
18
  protocols: {
19
19
  [options.name]: options
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../../src/decorators/protocol.ts"],"names":[],"mappings":";;;AAAA,qCAAmD;AACnD,iCAAmD;AAEnD,qDAA6D;AAE7D;;;;;GAKG;AACH,SAAgB,QAAQ,CAAU,OAAoC;IACpE,OAAO,IAAA,oBAAa,EAClB,IAAA,eAAU,EAAC;QACT,IAAI,EAAE,kCAAsB;KAC7B,CAAC,EACF,IAAA,eAAQ,EAAC,UAAU,EAAE,OAAO,CAAC,EAC7B,IAAA,kBAAa,EAAC;QACZ,QAAQ,EAAE;YACR,SAAS,EAAE;gBACT,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO;aACxB;SACF;KACF,CAAC,CACH,CAAC;AACJ,CAAC;AAdD,4BAcC","sourcesContent":["import {StoreSet, useDecorators} from \"@tsed/core\";\nimport {Configuration, Injectable} from \"@tsed/di\";\nimport {ProtocolOptions} from \"../interfaces/ProtocolOptions\";\nimport {PROVIDER_TYPE_PROTOCOL} from \"../contants/constants\";\n\n/**\n * Declare a new Protocol base on a Passport Strategy\n *\n * @decorator\n * @class\n */\nexport function Protocol<T = any>(options: ProtocolOptionsDecorator<T>) {\n return useDecorators(\n Injectable({\n type: PROVIDER_TYPE_PROTOCOL\n }),\n StoreSet(\"protocol\", options),\n Configuration({\n passport: {\n protocols: {\n [options.name]: options\n }\n }\n })\n );\n}\n\nexport type ProtocolOptionsDecorator<T = any> = {name: string} & Partial<ProtocolOptions<T>>;\n"]}
@@ -6,16 +6,16 @@ const schema_1 = require("@tsed/schema");
6
6
  class UserInfo {
7
7
  }
8
8
  tslib_1.__decorate([
9
- schema_1.Property(),
9
+ (0, schema_1.Property)(),
10
10
  tslib_1.__metadata("design:type", String)
11
11
  ], UserInfo.prototype, "id", void 0);
12
12
  tslib_1.__decorate([
13
- schema_1.Property(),
14
- schema_1.Format("email"),
13
+ (0, schema_1.Property)(),
14
+ (0, schema_1.Format)("email"),
15
15
  tslib_1.__metadata("design:type", String)
16
16
  ], UserInfo.prototype, "email", void 0);
17
17
  tslib_1.__decorate([
18
- schema_1.Property(),
18
+ (0, schema_1.Property)(),
19
19
  tslib_1.__metadata("design:type", String)
20
20
  ], UserInfo.prototype, "password", void 0);
21
21
  exports.UserInfo = UserInfo;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UserInfo.js","sourceRoot":"","sources":["../../../src/domain/UserInfo.ts"],"names":[],"mappings":";;;;AAAA,yCAA8C;AAE9C,MAAa,QAAQ;CAUpB;AARC;IADC,IAAA,iBAAQ,GAAE;;oCACA;AAIX;IAFC,IAAA,iBAAQ,GAAE;IACV,IAAA,eAAM,EAAC,OAAO,CAAC;;uCACF;AAGd;IADC,IAAA,iBAAQ,GAAE;;0CACM;AATnB,4BAUC","sourcesContent":["import {Format, Property} from \"@tsed/schema\";\n\nexport class UserInfo {\n @Property()\n id: string;\n\n @Property()\n @Format(\"email\")\n email: string;\n\n @Property()\n password: string;\n}\n"]}
File without changes
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PassportException.js","sourceRoot":"","sources":["../../../src/errors/PassportException.ts"],"names":[],"mappings":";;;AAAA,iDAA2C;AAE3C,MAAa,iBAAkB,SAAQ,sBAAS;IAC9C,YAAY,KAAU;QACpB,KAAK,CAAC,KAAK,CAAC,MAAM,IAAI,GAAG,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QAC1C,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC;IACtC,CAAC;CACF;AALD,8CAKC","sourcesContent":["import {Exception} from \"@tsed/exceptions\";\n\nexport class PassportException extends Exception {\n constructor(error: any) {\n super(error.status || 500, error.message);\n this.name = error.name || this.name;\n }\n}\n"]}
@@ -1,20 +1,25 @@
1
1
  "use strict";
2
+ /**
3
+ * @file Automatically generated by barrelsby.
4
+ */
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
6
  const tslib_1 = require("tslib");
4
- require("./PassportModule");
5
- // Decorator
7
+ tslib_1.__exportStar(require("./PassportModule"), exports);
8
+ tslib_1.__exportStar(require("./contants/constants"), exports);
9
+ tslib_1.__exportStar(require("./decorators/args"), exports);
6
10
  tslib_1.__exportStar(require("./decorators/authenticate"), exports);
7
11
  tslib_1.__exportStar(require("./decorators/authorize"), exports);
8
12
  tslib_1.__exportStar(require("./decorators/protocol"), exports);
9
- tslib_1.__exportStar(require("./decorators/args"), exports);
10
- // Interfaces
11
- tslib_1.__exportStar(require("./interfaces"), exports);
12
13
  tslib_1.__exportStar(require("./domain/UserInfo"), exports);
13
14
  tslib_1.__exportStar(require("./errors/PassportException"), exports);
14
- // Registries and Services
15
- tslib_1.__exportStar(require("./contants"), exports);
16
- tslib_1.__exportStar(require("./services/ProtocolsService"), exports);
17
- tslib_1.__exportStar(require("./services/PassportSerializerService"), exports);
18
- // Middlewares
15
+ tslib_1.__exportStar(require("./interfaces/BeforeInstall"), exports);
16
+ tslib_1.__exportStar(require("./interfaces/OnInstall"), exports);
17
+ tslib_1.__exportStar(require("./interfaces/OnVerify"), exports);
18
+ tslib_1.__exportStar(require("./interfaces/ProtocolMethods"), exports);
19
+ tslib_1.__exportStar(require("./interfaces/ProtocolOptions"), exports);
20
+ tslib_1.__exportStar(require("./interfaces/interfaces"), exports);
19
21
  tslib_1.__exportStar(require("./middlewares/PassportMiddleware"), exports);
22
+ tslib_1.__exportStar(require("./services/PassportSerializerService"), exports);
23
+ tslib_1.__exportStar(require("./services/ProtocolsService"), exports);
24
+ tslib_1.__exportStar(require("./utils/getProtocolsFromRequest"), exports);
20
25
  //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,2DAAiC;AACjC,+DAAqC;AACrC,4DAAkC;AAClC,oEAA0C;AAC1C,iEAAuC;AACvC,gEAAsC;AACtC,4DAAkC;AAClC,qEAA2C;AAC3C,qEAA2C;AAC3C,iEAAuC;AACvC,gEAAsC;AACtC,uEAA6C;AAC7C,uEAA6C;AAC7C,kEAAwC;AACxC,2EAAiD;AACjD,+EAAqD;AACrD,sEAA4C;AAC5C,0EAAgD","sourcesContent":["/**\n * @file Automatically generated by barrelsby.\n */\n\nexport * from \"./PassportModule\";\nexport * from \"./contants/constants\";\nexport * from \"./decorators/args\";\nexport * from \"./decorators/authenticate\";\nexport * from \"./decorators/authorize\";\nexport * from \"./decorators/protocol\";\nexport * from \"./domain/UserInfo\";\nexport * from \"./errors/PassportException\";\nexport * from \"./interfaces/BeforeInstall\";\nexport * from \"./interfaces/OnInstall\";\nexport * from \"./interfaces/OnVerify\";\nexport * from \"./interfaces/ProtocolMethods\";\nexport * from \"./interfaces/ProtocolOptions\";\nexport * from \"./interfaces/interfaces\";\nexport * from \"./middlewares/PassportMiddleware\";\nexport * from \"./services/PassportSerializerService\";\nexport * from \"./services/ProtocolsService\";\nexport * from \"./utils/getProtocolsFromRequest\";\n"]}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=BeforeInstall.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BeforeInstall.js","sourceRoot":"","sources":["../../../src/interfaces/BeforeInstall.ts"],"names":[],"mappings":"","sourcesContent":["export interface BeforeInstall<Settings = any> {\n $beforeInstall(setting: Settings): Promise<Settings> | Settings | void;\n}\n"]}
File without changes
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OnInstall.js","sourceRoot":"","sources":["../../../src/interfaces/OnInstall.ts"],"names":[],"mappings":"","sourcesContent":["import {Strategy} from \"passport\";\n\nexport interface OnInstall {\n $onInstall(strategy: Strategy): void | Promise<void>;\n}\n"]}
File without changes
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OnVerify.js","sourceRoot":"","sources":["../../../src/interfaces/OnVerify.ts"],"names":[],"mappings":"","sourcesContent":["export interface OnVerify {\n $onVerify(...args: any[]): Promise<any | any[]> | any | any[];\n}\n"]}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=ProtocolMethods.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProtocolMethods.js","sourceRoot":"","sources":["../../../src/interfaces/ProtocolMethods.ts"],"names":[],"mappings":"","sourcesContent":["import {OnInstall} from \"./OnInstall\";\nimport {OnVerify} from \"./OnVerify\";\nimport {BeforeInstall} from \"./BeforeInstall\";\n\nexport interface ProtocolMethods<Settings = any> extends OnVerify, OnInstall, BeforeInstall<Settings> {}\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProtocolOptions.js","sourceRoot":"","sources":["../../../src/interfaces/ProtocolOptions.ts"],"names":[],"mappings":"","sourcesContent":["import {Type} from \"@tsed/core\";\nimport {Strategy} from \"passport\";\n\nexport interface ProtocolOptions<Settings = any> {\n name: string;\n useStrategy: Type<Strategy>;\n settings: Settings;\n}\n"]}
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=IProtocol.js.map
3
+ //# sourceMappingURL=interfaces.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../../src/interfaces/interfaces.ts"],"names":[],"mappings":"","sourcesContent":["import {Type} from \"@tsed/core\";\nimport {PassportStatic} from \"passport\";\nimport {ProtocolOptions} from \"./ProtocolOptions\";\n\ndeclare global {\n namespace TsED {\n interface Configuration {\n passport: {\n userProperty?: string;\n pauseStream?: string;\n disableSession?: boolean;\n userInfoModel?: Type<any> | false;\n module?: PassportStatic;\n protocols?: {\n [protocolName: string]: Partial<ProtocolOptions>;\n };\n };\n }\n }\n}\n"]}
@@ -3,6 +3,8 @@ var PassportMiddleware_1;
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
4
  exports.PassportMiddleware = void 0;
5
5
  const tslib_1 = require("tslib");
6
+ const di_1 = require("@tsed/di");
7
+ const platform_middlewares_1 = require("@tsed/platform-middlewares");
6
8
  const common_1 = require("@tsed/common");
7
9
  const ProtocolsService_1 = require("../services/ProtocolsService");
8
10
  const getProtocolsFromRequest_1 = require("../utils/getProtocolsFromRequest");
@@ -18,7 +20,7 @@ let PassportMiddleware = PassportMiddleware_1 = class PassportMiddleware {
18
20
  return;
19
21
  }
20
22
  const { options, protocol, method, originalUrl = true } = endpoint.store.get(PassportMiddleware_1);
21
- const protocols = getProtocolsFromRequest_1.getProtocolsFromRequest(request, protocol, this.protocolsService.getProtocolsNames());
23
+ const protocols = (0, getProtocolsFromRequest_1.getProtocolsFromRequest)(request, protocol, this.protocolsService.getProtocolsNames());
22
24
  if (originalUrl) {
23
25
  request.url = request.originalUrl;
24
26
  }
@@ -28,17 +30,17 @@ let PassportMiddleware = PassportMiddleware_1 = class PassportMiddleware {
28
30
  }
29
31
  };
30
32
  tslib_1.__decorate([
31
- common_1.Inject(ProtocolsService_1.ProtocolsService),
33
+ (0, di_1.Inject)(ProtocolsService_1.ProtocolsService),
32
34
  tslib_1.__metadata("design:type", ProtocolsService_1.ProtocolsService)
33
35
  ], PassportMiddleware.prototype, "protocolsService", void 0);
34
36
  tslib_1.__decorate([
35
- tslib_1.__param(0, common_1.Context()),
37
+ tslib_1.__param(0, (0, common_1.Context)()),
36
38
  tslib_1.__metadata("design:type", Function),
37
39
  tslib_1.__metadata("design:paramtypes", [Object]),
38
40
  tslib_1.__metadata("design:returntype", Promise)
39
41
  ], PassportMiddleware.prototype, "use", null);
40
42
  PassportMiddleware = PassportMiddleware_1 = tslib_1.__decorate([
41
- common_1.Middleware()
43
+ (0, platform_middlewares_1.Middleware)()
42
44
  ], PassportMiddleware);
43
45
  exports.PassportMiddleware = PassportMiddleware;
44
46
  //# sourceMappingURL=PassportMiddleware.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PassportMiddleware.js","sourceRoot":"","sources":["../../../src/middlewares/PassportMiddleware.ts"],"names":[],"mappings":";;;;;AAAA,iCAAgC;AAChC,qEAAsD;AACtD,yCAAqC;AACrC,mEAA8D;AAC9D,8EAAyE;AAGzE,IAAa,kBAAkB,0BAA/B,MAAa,kBAAkB;IAI7B,UAAU,CAAC,GAAY;QACrB,MAAM,OAAO,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC;QACjC,OAAO,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;IACnD,CAAC;IAED,KAAK,CAAC,GAAG,CAAY,GAAY;QAC/B,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;QAC9B,MAAM,OAAO,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC;QAEjC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;YACxB,OAAO;SACR;QACD,MAAM,EAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,GAAG,IAAI,EAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,oBAAkB,CAAC,CAAC;QAC/F,MAAM,SAAS,GAAG,IAAA,iDAAuB,EAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,EAAE,CAAC,CAAC;QAExG,IAAI,WAAW,EAAE;YACf,OAAO,CAAC,GAAG,GAAG,OAAO,CAAC,WAAW,CAAC;SACnC;QAED,MAAM,CAAC,MAAM,KAAK,cAAc;YAC9B,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,EAAE,GAAG,CAAC;YAC7D,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,SAAS,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;IAChE,CAAC;CACF,CAAA;AAzBC;IADC,IAAA,WAAM,EAAC,mCAAgB,CAAC;sCACP,mCAAgB;4DAAC;AAOnC;IAAW,mBAAA,IAAA,gBAAO,GAAE,CAAA;;;;6CAiBnB;AA1BU,kBAAkB;IAD9B,IAAA,iCAAU,GAAE;GACA,kBAAkB,CA2B9B;AA3BY,gDAAkB","sourcesContent":["import {Inject} from \"@tsed/di\";\nimport {Middleware} from \"@tsed/platform-middlewares\";\nimport {Context} from \"@tsed/common\";\nimport {ProtocolsService} from \"../services/ProtocolsService\";\nimport {getProtocolsFromRequest} from \"../utils/getProtocolsFromRequest\";\n\n@Middleware()\nexport class PassportMiddleware {\n @Inject(ProtocolsService)\n protocolsService: ProtocolsService;\n\n shouldSkip(ctx: Context) {\n const request = ctx.getRequest();\n return request.user && request.isAuthenticated();\n }\n\n async use(@Context() ctx: Context) {\n const endpoint = ctx.endpoint;\n const request = ctx.getRequest();\n\n if (this.shouldSkip(ctx)) {\n return;\n }\n const {options, protocol, method, originalUrl = true} = endpoint.store.get(PassportMiddleware);\n const protocols = getProtocolsFromRequest(request, protocol, this.protocolsService.getProtocolsNames());\n\n if (originalUrl) {\n request.url = request.originalUrl;\n }\n\n await (method === \"authenticate\"\n ? this.protocolsService.authenticate(protocols, options, ctx)\n : this.protocolsService.authorize(protocols, options, ctx));\n }\n}\n"]}
@@ -0,0 +1,3 @@
1
+ {
2
+ "type": "commonjs"
3
+ }
@@ -11,7 +11,7 @@ const UserInfo_1 = require("../domain/UserInfo");
11
11
  let PassportSerializerService = class PassportSerializerService {
12
12
  serialize(user, done) {
13
13
  try {
14
- const obj = json_mapper_1.serialize(user, { type: this.model });
14
+ const obj = (0, json_mapper_1.serialize)(user, { type: this.model });
15
15
  // remove password from serialized object
16
16
  delete obj.password;
17
17
  done(null, JSON.stringify(obj));
@@ -23,7 +23,7 @@ let PassportSerializerService = class PassportSerializerService {
23
23
  }
24
24
  deserialize(obj, done) {
25
25
  try {
26
- const user = json_mapper_1.deserialize(JSON.parse(obj), { type: this.model });
26
+ const user = (0, json_mapper_1.deserialize)(JSON.parse(obj), { type: this.model });
27
27
  done(null, user);
28
28
  }
29
29
  catch (er) {
@@ -32,11 +32,11 @@ let PassportSerializerService = class PassportSerializerService {
32
32
  }
33
33
  };
34
34
  tslib_1.__decorate([
35
- di_1.Constant("passport.userInfoModel", UserInfo_1.UserInfo),
35
+ (0, di_1.Constant)("passport.userInfoModel", UserInfo_1.UserInfo),
36
36
  tslib_1.__metadata("design:type", Object)
37
37
  ], PassportSerializerService.prototype, "model", void 0);
38
38
  PassportSerializerService = tslib_1.__decorate([
39
- di_1.Service()
39
+ (0, di_1.Service)()
40
40
  ], PassportSerializerService);
41
41
  exports.PassportSerializerService = PassportSerializerService;
42
42
  //# sourceMappingURL=PassportSerializerService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PassportSerializerService.js","sourceRoot":"","sources":["../../../src/services/PassportSerializerService.ts"],"names":[],"mappings":";;;;AACA,iCAA2C;AAC3C,mDAAyD;AACzD,iDAA4C;AAE5C;;GAEG;AAEH,IAAa,yBAAyB,GAAtC,MAAa,yBAAyB;IAIpC,SAAS,CAAC,IAAc,EAAE,IAAS;QACjC,IAAI;YACF,MAAM,GAAG,GAAG,IAAA,uBAAS,EAAC,IAAI,EAAE,EAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAC,CAAC,CAAC;YAEhD,yCAAyC;YACzC,OAAO,GAAG,CAAC,QAAQ,CAAC;YAEpB,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;SACjC;QAAC,OAAO,EAAE,EAAE;YACX,uBAAuB;YACvB,IAAI,CAAC,EAAE,CAAC,CAAC;SACV;IACH,CAAC;IAED,WAAW,CAAC,GAAQ,EAAE,IAAS;QAC7B,IAAI;YACF,MAAM,IAAI,GAAG,IAAA,yBAAW,EAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,EAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAC,CAAC,CAAC;YAE9D,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;SAClB;QAAC,OAAO,EAAE,EAAE;YACX,IAAI,CAAC,EAAE,CAAC,CAAC;SACV;IACH,CAAC;CACF,CAAA;AAzBC;IADC,IAAA,aAAQ,EAAC,wBAAwB,EAAE,mBAAQ,CAAC;;wDACL;AAF7B,yBAAyB;IADrC,IAAA,YAAO,GAAE;GACG,yBAAyB,CA2BrC;AA3BY,8DAAyB","sourcesContent":["import {Type} from \"@tsed/core\";\nimport {Constant, Service} from \"@tsed/di\";\nimport {deserialize, serialize} from \"@tsed/json-mapper\";\nimport {UserInfo} from \"../domain/UserInfo\";\n\n/**\n * @ignore\n */\n@Service()\nexport class PassportSerializerService {\n @Constant(\"passport.userInfoModel\", UserInfo)\n private model: Type<UserInfo> | boolean;\n\n serialize(user: UserInfo, done: any) {\n try {\n const obj = serialize(user, {type: this.model});\n\n // remove password from serialized object\n delete obj.password;\n\n done(null, JSON.stringify(obj));\n } catch (er) {\n // istanbul ignore next\n done(er);\n }\n }\n\n deserialize(obj: any, done: any) {\n try {\n const user = deserialize(JSON.parse(obj), {type: this.model});\n\n done(null, user);\n } catch (er) {\n done(er);\n }\n }\n}\n"]}
@@ -8,7 +8,7 @@ const di_1 = require("@tsed/di");
8
8
  const exceptions_1 = require("@tsed/exceptions");
9
9
  const passport_1 = tslib_1.__importStar(require("passport"));
10
10
  const PassportException_1 = require("../errors/PassportException");
11
- const contants_1 = require("../contants");
11
+ const constants_1 = require("../contants/constants");
12
12
  const util_1 = require("util");
13
13
  /**
14
14
  * @ignore
@@ -19,7 +19,7 @@ let ProtocolsService = class ProtocolsService {
19
19
  this.strategies = new Map();
20
20
  }
21
21
  getProtocols() {
22
- return Array.from(this.injector.getProviders(contants_1.PROVIDER_TYPE_PROTOCOL));
22
+ return this.injector.getProviders(constants_1.PROVIDER_TYPE_PROTOCOL);
23
23
  }
24
24
  getProtocolsNames() {
25
25
  return Array.from(this.strategies.keys());
@@ -28,14 +28,17 @@ let ProtocolsService = class ProtocolsService {
28
28
  * Invoke provider and bind it to passport.
29
29
  * @param provider
30
30
  */
31
- invoke(provider) {
32
- const { name, useStrategy: strategy, settings } = this.getOptions(provider);
31
+ async invoke(provider) {
32
+ let { name, useStrategy: strategy, settings } = this.getOptions(provider);
33
33
  const protocol = this.injector.get(provider.provide);
34
+ if (protocol.$beforeInstall) {
35
+ settings = (await protocol.$beforeInstall(settings)) || settings;
36
+ }
34
37
  const instance = new strategy(settings, this.createHandler(provider));
35
38
  this.strategies.set(name, instance);
36
39
  passport_1.default.use(name, instance);
37
40
  if (protocol.$onInstall) {
38
- protocol.$onInstall(instance);
41
+ await protocol.$onInstall(instance);
39
42
  }
40
43
  protocol.$strategy = instance;
41
44
  return protocol;
@@ -76,11 +79,11 @@ let ProtocolsService = class ProtocolsService {
76
79
  try {
77
80
  options.failWithError = true;
78
81
  // @ts-ignore
79
- const fn = util_1.promisify(passport_1.default[method](protocols.length === 1 ? protocols[0] : protocols, options));
82
+ const fn = (0, util_1.promisify)(passport_1.default[method](protocols.length === 1 ? protocols[0] : protocols, options));
80
83
  await fn(request, response);
81
84
  }
82
85
  catch (er) {
83
- if (!core_1.ancestorsOf(er).includes(Error)) {
86
+ if (!(0, core_1.ancestorsOf)(er).includes(Error)) {
84
87
  throw new PassportException_1.PassportException(er);
85
88
  }
86
89
  throw er;
@@ -113,19 +116,24 @@ let ProtocolsService = class ProtocolsService {
113
116
  const middleware = platformHandler.createCustomHandler(provider, "$onVerify");
114
117
  return async (req, ...args) => {
115
118
  const done = args[args.length - 1];
116
- req.$ctx.set("PROTOCOL_ARGS", args.slice(0, -1));
117
- try {
118
- await middleware(req.$ctx);
119
- done(null, ...[].concat(req.$ctx.data));
119
+ if (req.$ctx) {
120
+ req.$ctx.set("PROTOCOL_ARGS", args.slice(0, -1));
121
+ try {
122
+ await middleware(req.$ctx);
123
+ done(null, ...[].concat(req.$ctx.data));
124
+ }
125
+ catch (err) {
126
+ done(err, false, { message: err.message });
127
+ }
120
128
  }
121
- catch (err) {
122
- done(err, false, { message: err.message });
129
+ else {
130
+ done(new Error("Headers already sent"), false, { message: "Headers already sent" });
123
131
  }
124
132
  };
125
133
  }
126
134
  };
127
135
  ProtocolsService = tslib_1.__decorate([
128
- di_1.Injectable(),
136
+ (0, di_1.Injectable)(),
129
137
  tslib_1.__metadata("design:paramtypes", [di_1.InjectorService])
130
138
  ], ProtocolsService);
131
139
  exports.ProtocolsService = ProtocolsService;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProtocolsService.js","sourceRoot":"","sources":["../../../src/services/ProtocolsService.ts"],"names":[],"mappings":"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","sourcesContent":["import {PlatformContext, PlatformHandler} from \"@tsed/common\";\nimport {ancestorsOf} from \"@tsed/core\";\nimport {Injectable, InjectorService, Provider} from \"@tsed/di\";\nimport {Unauthorized} from \"@tsed/exceptions\";\nimport Passport, {Strategy} from \"passport\";\nimport {PassportException} from \"../errors/PassportException\";\nimport {PROVIDER_TYPE_PROTOCOL} from \"../contants/constants\";\nimport {promisify} from \"util\";\nimport type {ProtocolMethods} from \"../interfaces/ProtocolMethods\";\nimport type {ProtocolOptions} from \"../interfaces/ProtocolOptions\";\n\n/**\n * @ignore\n */\n@Injectable()\nexport class ProtocolsService {\n readonly strategies: Map<string, Strategy> = new Map();\n\n constructor(private injector: InjectorService) {}\n\n public getProtocols(): Provider[] {\n return this.injector.getProviders(PROVIDER_TYPE_PROTOCOL);\n }\n\n public getProtocolsNames(): string[] {\n return Array.from(this.strategies.keys());\n }\n\n /**\n * Invoke provider and bind it to passport.\n * @param provider\n */\n async invoke(provider: Provider) {\n let {name, useStrategy: strategy, settings} = this.getOptions(provider);\n const protocol = this.injector.get<ProtocolMethods & Record<string, any>>(provider.provide)!;\n\n if (protocol.$beforeInstall) {\n settings = (await protocol.$beforeInstall(settings)) || settings;\n }\n\n const instance = new strategy(settings, this.createHandler(provider));\n\n this.strategies.set(name, instance);\n\n Passport.use(name, instance);\n\n if (protocol.$onInstall) {\n await protocol.$onInstall(instance);\n }\n\n protocol.$strategy = instance;\n\n return protocol;\n }\n\n /**\n * Call authenticate passport method.\n * @param protocols\n * @param options\n * @param ctx\n */\n public async authenticate(protocols: string | string[], options: Record<string, any>, ctx: PlatformContext) {\n return this.call(\"authenticate\", protocols, options, ctx);\n }\n\n /**\n * Call authorize passport method.\n * @param protocols\n * @param options\n * @param ctx\n */\n public async authorize(protocols: string | string[], options: Record<string, any>, ctx: PlatformContext) {\n return this.call(\"authorize\", protocols, options, ctx);\n }\n\n /**\n * Call passport authenticate or authorize depending on the chosen method.\n * @param method\n * @param protocols\n * @param options\n * @param ctx\n * @private\n */\n private async call(\n method: \"authenticate\" | \"authorize\",\n protocols: string | string[],\n options: Record<string, any>,\n ctx: PlatformContext\n ) {\n const request = ctx.getRequest();\n const response = ctx.getResponse();\n protocols = ([] as string[]).concat(protocols);\n\n if (protocols.length === 0) {\n throw new Unauthorized(\"Not authorized\");\n }\n\n try {\n options.failWithError = true;\n // @ts-ignore\n const fn = promisify(Passport[method](protocols.length === 1 ? protocols[0] : protocols, options));\n\n await fn(request, response);\n } catch (er) {\n if (!ancestorsOf(er).includes(Error)) {\n throw new PassportException(er);\n }\n\n throw er;\n }\n }\n\n /**\n * Create strategy options based on decorator metadata and global configuration\n * @param provider\n * @private\n */\n private getOptions(provider: Provider<any>): ProtocolOptions {\n const {name} = provider.store.get(\"protocol\");\n const {useStrategy = Strategy, settings = {}}: ProtocolOptions = this.injector.settings.get(`passport.protocols.${name}`) || {};\n\n return {\n name,\n useStrategy,\n settings: {\n ...settings,\n passReqToCallback: true\n }\n };\n }\n\n /**\n * Create the verifier handler for passport\n * @param provider\n * @private\n */\n private createHandler(provider: Provider<any>) {\n const platformHandler = this.injector.get<PlatformHandler>(PlatformHandler)!;\n const middleware = platformHandler.createCustomHandler(provider, \"$onVerify\");\n\n return async (req: any, ...args: any[]) => {\n const done = args[args.length - 1];\n\n if (req.$ctx) {\n req.$ctx.set(\"PROTOCOL_ARGS\", args.slice(0, -1));\n\n try {\n await middleware(req.$ctx);\n done(null, ...[].concat(req.$ctx.data));\n } catch (err) {\n done(err, false, {message: err.message});\n }\n } else {\n done(new Error(\"Headers already sent\"), false, {message: \"Headers already sent\"});\n }\n };\n }\n}\n"]}
@@ -13,7 +13,7 @@ function getProtocolName(req) {
13
13
  * @ignore
14
14
  */
15
15
  function getProtocolsFromRequest(req, protocol, defaultProtocols) {
16
- if (!core_1.isArray(protocol)) {
16
+ if (!(0, core_1.isArray)(protocol)) {
17
17
  if (protocol === "*") {
18
18
  return defaultProtocols;
19
19
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getProtocolsFromRequest.js","sourceRoot":"","sources":["../../../src/utils/getProtocolsFromRequest.ts"],"names":[],"mappings":";;;AAAA,qCAAmC;AAEnC;;GAEG;AACH,SAAS,eAAe,CAAC,GAAQ;IAC/B,MAAM,EAAC,KAAK,GAAG,EAAE,EAAE,MAAM,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,EAAC,GAAG,GAAG,CAAC;IAEjD,OAAO,MAAM,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC;AAC5D,CAAC;AAED;;GAEG;AACH,SAAgB,uBAAuB,CAAC,GAAQ,EAAE,QAA2B,EAAE,gBAA0B;IACvG,IAAI,CAAC,IAAA,cAAO,EAAC,QAAQ,CAAC,EAAE;QACtB,IAAI,QAAQ,KAAK,GAAG,EAAE;YACpB,OAAO,gBAAgB,CAAC;SACzB;QAED,MAAM,WAAW,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;QAEzC,IAAI,QAAQ,KAAK,WAAW,EAAE;YAC5B,OAAO,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;SACtC;QAED,IAAI,WAAW,IAAI,WAAW,KAAK,QAAQ,EAAE;YAC3C,OAAO,EAAE,CAAC;SACX;QAED,OAAO,CAAC,QAAQ,CAAC,CAAC;KACnB;IAED,MAAM,SAAS,GAAa,QAAQ,CAAC;IAErC,IAAI,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;QAC3B,OAAO,gBAAgB,CAAC;KACzB;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AA1BD,0DA0BC","sourcesContent":["import {isArray} from \"@tsed/core\";\n\n/**\n * @ignore\n */\nfunction getProtocolName(req: any) {\n const {query = {}, params = {}, body = {}} = req;\n\n return params.protocol || query.protocol || body.protocol;\n}\n\n/**\n * @ignore\n */\nexport function getProtocolsFromRequest(req: any, protocol: string | string[], defaultProtocols: string[]): string[] {\n if (!isArray(protocol)) {\n if (protocol === \"*\") {\n return defaultProtocols;\n }\n\n const protocolReq = getProtocolName(req);\n\n if (protocol === \":protocol\") {\n return [protocolReq].filter(Boolean);\n }\n\n if (protocolReq && protocolReq !== protocol) {\n return [];\n }\n\n return [protocol];\n }\n\n const protocols: string[] = protocol;\n\n if (protocols.includes(\"*\")) {\n return defaultProtocols;\n }\n\n return protocols;\n}\n"]}
@@ -0,0 +1,63 @@
1
+ import { __decorate, __metadata } from "tslib";
2
+ import { Constant, Inject, Module, PlatformApplication, ProviderScope, Logger } from "@tsed/common";
3
+ import Passport from "passport";
4
+ import { PassportSerializerService } from "./services/PassportSerializerService.js";
5
+ import { ProtocolsService } from "./services/ProtocolsService.js";
6
+ /**
7
+ * @ignore
8
+ */
9
+ let PassportModule = class PassportModule {
10
+ constructor(app, protocolsService, passportSerializer) {
11
+ this.app = app;
12
+ this.protocolsService = protocolsService;
13
+ this.passportSerializer = passportSerializer;
14
+ }
15
+ async $onInit() {
16
+ Passport.serializeUser(this.passportSerializer.serialize.bind(this.passportSerializer));
17
+ Passport.deserializeUser(this.passportSerializer.deserialize.bind(this.passportSerializer));
18
+ const promises = this.protocolsService.getProtocols().map((provider) => this.protocolsService.invoke(provider));
19
+ await Promise.all(promises);
20
+ return undefined;
21
+ }
22
+ $beforeRoutesInit() {
23
+ const { userProperty, pauseStream } = this;
24
+ switch (this.platformName) {
25
+ case "express":
26
+ this.app.use(Passport.initialize({ userProperty }));
27
+ !this.disableSession && this.app.use(Passport.session({ pauseStream }));
28
+ return;
29
+ default:
30
+ this.logger.warn(`Platform "${this.platformName}" not supported by @tsed/passport`);
31
+ }
32
+ }
33
+ };
34
+ __decorate([
35
+ Constant("passport.userProperty"),
36
+ __metadata("design:type", String)
37
+ ], PassportModule.prototype, "userProperty", void 0);
38
+ __decorate([
39
+ Constant("passport.pauseStream"),
40
+ __metadata("design:type", Boolean)
41
+ ], PassportModule.prototype, "pauseStream", void 0);
42
+ __decorate([
43
+ Constant("passport.disableSession", false),
44
+ __metadata("design:type", Boolean)
45
+ ], PassportModule.prototype, "disableSession", void 0);
46
+ __decorate([
47
+ Constant("PLATFORM_NAME"),
48
+ __metadata("design:type", String)
49
+ ], PassportModule.prototype, "platformName", void 0);
50
+ __decorate([
51
+ Inject(),
52
+ __metadata("design:type", Logger)
53
+ ], PassportModule.prototype, "logger", void 0);
54
+ PassportModule = __decorate([
55
+ Module({
56
+ scope: ProviderScope.SINGLETON
57
+ }),
58
+ __metadata("design:paramtypes", [PlatformApplication,
59
+ ProtocolsService,
60
+ PassportSerializerService])
61
+ ], PassportModule);
62
+ export { PassportModule };
63
+ //# sourceMappingURL=PassportModule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PassportModule.js","sourceRoot":"","sources":["../../src/PassportModule.ts"],"names":[],"mappings":";AAAA,OAAO,EAAmB,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAU,mBAAmB,EAAY,aAAa,EAAE,MAAM,EAAC,MAAM,cAAc,CAAC;AACtI,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,EAAC,yBAAyB,EAAC,MAAM,sCAAsC,CAAC;AAC/E,OAAO,EAAC,gBAAgB,EAAC,MAAM,6BAA6B,CAAC;AAE7D;;GAEG;AAIH,IAAa,cAAc,GAA3B,MAAa,cAAc;IAgBzB,YACU,GAAwB,EACxB,gBAAkC,EAClC,kBAA6C;QAF7C,QAAG,GAAH,GAAG,CAAqB;QACxB,qBAAgB,GAAhB,gBAAgB,CAAkB;QAClC,uBAAkB,GAAlB,kBAAkB,CAA2B;IACpD,CAAC;IAEJ,KAAK,CAAC,OAAO;QACX,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;QACxF,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;QAE5F,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,CAAC,GAAG,CAAC,CAAC,QAAkB,EAAE,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;QAE1H,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC5B,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,iBAAiB;QACf,MAAM,EAAC,YAAY,EAAE,WAAW,EAAC,GAAG,IAAI,CAAC;QACzC,QAAQ,IAAI,CAAC,YAAY,EAAE;YACzB,KAAK,SAAS;gBACZ,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAC,YAAY,EAAC,CAAC,CAAC,CAAC;gBAClD,CAAC,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAC,WAAW,EAAC,CAAC,CAAC,CAAC;gBAEtE,OAAO;YAET;gBACE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,YAAY,mCAAmC,CAAC,CAAC;SACvF;IACH,CAAC;CACF,CAAA;AA3CC;IADC,QAAQ,CAAC,uBAAuB,CAAC;;oDACb;AAGrB;IADC,QAAQ,CAAC,sBAAsB,CAAC;;mDACZ;AAGrB;IADC,QAAQ,CAAC,yBAAyB,EAAE,KAAK,CAAC;;sDACnB;AAGxB;IADC,QAAQ,CAAC,eAAe,CAAC;;oDACL;AAGrB;IADC,MAAM,EAAE;8BACD,MAAM;8CAAC;AAdJ,cAAc;IAH1B,MAAM,CAAC;QACN,KAAK,EAAE,aAAa,CAAC,SAAS;KAC/B,CAAC;qCAkBe,mBAAmB;QACN,gBAAgB;QACd,yBAAyB;GAnB5C,cAAc,CA6C1B;SA7CY,cAAc","sourcesContent":["import {BeforeRoutesInit, Constant, Inject, Module, OnInit, PlatformApplication, Provider, ProviderScope, Logger} from \"@tsed/common\";\nimport Passport from \"passport\";\nimport {PassportSerializerService} from \"./services/PassportSerializerService\";\nimport {ProtocolsService} from \"./services/ProtocolsService\";\n\n/**\n * @ignore\n */\n@Module({\n scope: ProviderScope.SINGLETON\n})\nexport class PassportModule implements OnInit, BeforeRoutesInit {\n @Constant(\"passport.userProperty\")\n userProperty: string;\n\n @Constant(\"passport.pauseStream\")\n pauseStream: boolean;\n\n @Constant(\"passport.disableSession\", false)\n disableSession: boolean;\n\n @Constant(\"PLATFORM_NAME\")\n platformName: string;\n\n @Inject()\n logger: Logger;\n\n constructor(\n private app: PlatformApplication,\n private protocolsService: ProtocolsService,\n private passportSerializer: PassportSerializerService\n ) {}\n\n async $onInit(): Promise<any> {\n Passport.serializeUser(this.passportSerializer.serialize.bind(this.passportSerializer));\n Passport.deserializeUser(this.passportSerializer.deserialize.bind(this.passportSerializer));\n\n const promises = this.protocolsService.getProtocols().map((provider: Provider) => this.protocolsService.invoke(provider));\n\n await Promise.all(promises);\n return undefined;\n }\n\n $beforeRoutesInit(): void | Promise<any> {\n const {userProperty, pauseStream} = this;\n switch (this.platformName) {\n case \"express\":\n this.app.use(Passport.initialize({userProperty}));\n !this.disableSession && this.app.use(Passport.session({pauseStream}));\n\n return;\n\n default:\n this.logger.warn(`Platform \"${this.platformName}\" not supported by @tsed/passport`);\n }\n }\n}\n"]}