@tsed/passport 7.0.0-alpha.1 → 7.0.0-beta.3
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/{PassportModule.js → cjs/PassportModule.js} +16 -16
- package/lib/cjs/PassportModule.js.map +1 -0
- package/lib/{contants → cjs/contants}/index.js +0 -0
- package/lib/cjs/contants/index.js.map +1 -0
- package/lib/{decorators → cjs/decorators}/args.js +2 -2
- package/lib/cjs/decorators/args.js.map +1 -0
- package/lib/{decorators → cjs/decorators}/authenticate.js +2 -2
- package/lib/cjs/decorators/authenticate.js.map +1 -0
- package/lib/{decorators → cjs/decorators}/authorize.js +2 -2
- package/lib/cjs/decorators/authorize.js.map +1 -0
- package/lib/{decorators → cjs/decorators}/protocol.js +2 -2
- package/lib/cjs/decorators/protocol.js.map +1 -0
- package/lib/cjs/domain/UserInfo.js +22 -0
- package/lib/cjs/domain/UserInfo.js.map +1 -0
- package/lib/{errors → cjs/errors}/PassportException.js +0 -0
- package/lib/cjs/errors/PassportException.js.map +1 -0
- package/lib/cjs/index.js +20 -0
- package/lib/cjs/index.js.map +1 -0
- package/lib/{interfaces → cjs/interfaces}/IProtocol.js +0 -0
- package/lib/cjs/interfaces/IProtocol.js.map +1 -0
- package/lib/{interfaces → cjs/interfaces}/OnInstall.js +0 -0
- package/lib/cjs/interfaces/OnInstall.js.map +1 -0
- package/lib/{interfaces → cjs/interfaces}/OnVerify.js +0 -0
- package/lib/cjs/interfaces/OnVerify.js.map +1 -0
- package/lib/{interfaces → cjs/interfaces}/ProtocolOptions.js +0 -0
- package/lib/cjs/interfaces/ProtocolOptions.js.map +1 -0
- package/lib/cjs/interfaces/index.js +8 -0
- package/lib/cjs/interfaces/index.js.map +1 -0
- package/lib/{middlewares → cjs/middlewares}/PassportMiddleware.js +11 -11
- package/lib/cjs/middlewares/PassportMiddleware.js.map +1 -0
- package/lib/{services → cjs/services}/PassportSerializerService.js +7 -7
- package/lib/cjs/services/PassportSerializerService.js.map +1 -0
- package/lib/{services → cjs/services}/ProtocolsService.js +6 -6
- package/lib/cjs/services/ProtocolsService.js.map +1 -0
- package/lib/{utils → cjs/utils}/getProtocolsFromRequest.js +1 -1
- package/lib/cjs/utils/getProtocolsFromRequest.js.map +1 -0
- package/lib/esm/PassportModule.js +58 -0
- package/lib/esm/PassportModule.js.map +1 -0
- package/lib/esm/contants/index.js +2 -0
- package/lib/esm/contants/index.js.map +1 -0
- package/lib/esm/decorators/args.js +13 -0
- package/lib/esm/decorators/args.js.map +1 -0
- package/lib/esm/decorators/authenticate.js +15 -0
- package/lib/esm/decorators/authenticate.js.map +1 -0
- package/lib/esm/decorators/authorize.js +15 -0
- package/lib/esm/decorators/authorize.js.map +1 -0
- package/lib/esm/decorators/protocol.js +21 -0
- package/lib/esm/decorators/protocol.js.map +1 -0
- package/lib/esm/domain/UserInfo.js +18 -0
- package/lib/esm/domain/UserInfo.js.map +1 -0
- package/lib/esm/errors/PassportException.js +8 -0
- package/lib/esm/errors/PassportException.js.map +1 -0
- package/lib/esm/index.js +17 -0
- package/lib/esm/index.js.map +1 -0
- package/lib/esm/interfaces/IProtocol.js +2 -0
- package/lib/esm/interfaces/IProtocol.js.map +1 -0
- package/lib/esm/interfaces/OnInstall.js +2 -0
- package/lib/esm/interfaces/OnInstall.js.map +1 -0
- package/lib/esm/interfaces/OnVerify.js +2 -0
- package/lib/esm/interfaces/OnVerify.js.map +1 -0
- package/lib/esm/interfaces/ProtocolOptions.js +2 -0
- package/lib/esm/interfaces/ProtocolOptions.js.map +1 -0
- package/lib/esm/interfaces/index.js +5 -0
- package/lib/esm/interfaces/index.js.map +1 -0
- package/lib/esm/middlewares/PassportMiddleware.js +41 -0
- package/lib/esm/middlewares/PassportMiddleware.js.map +1 -0
- package/lib/esm/services/PassportSerializerService.js +39 -0
- package/lib/esm/services/PassportSerializerService.js.map +1 -0
- package/lib/esm/services/ProtocolsService.js +129 -0
- package/lib/esm/services/ProtocolsService.js.map +1 -0
- package/lib/esm/utils/getProtocolsFromRequest.js +32 -0
- package/lib/esm/utils/getProtocolsFromRequest.js.map +1 -0
- package/lib/{PassportModule.d.ts → types/PassportModule.d.ts} +0 -0
- package/lib/{contants → types/contants}/index.d.ts +0 -0
- package/lib/{decorators → types/decorators}/args.d.ts +0 -0
- package/lib/{decorators → types/decorators}/authenticate.d.ts +0 -0
- package/lib/{decorators → types/decorators}/authorize.d.ts +0 -0
- package/lib/{decorators → types/decorators}/protocol.d.ts +0 -0
- package/lib/{domain → types/domain}/UserInfo.d.ts +0 -0
- package/lib/{errors → types/errors}/PassportException.d.ts +0 -0
- package/lib/{index.d.ts → types/index.d.ts} +0 -0
- package/lib/{interfaces → types/interfaces}/IProtocol.d.ts +0 -0
- package/lib/{interfaces → types/interfaces}/OnInstall.d.ts +0 -0
- package/lib/{interfaces → types/interfaces}/OnVerify.d.ts +0 -0
- package/lib/{interfaces → types/interfaces}/ProtocolOptions.d.ts +0 -0
- package/lib/{interfaces → types/interfaces}/index.d.ts +0 -0
- package/lib/{middlewares → types/middlewares}/PassportMiddleware.d.ts +0 -0
- package/lib/{services → types/services}/PassportSerializerService.d.ts +0 -0
- package/lib/{services → types/services}/ProtocolsService.d.ts +0 -0
- package/lib/{utils → types/utils}/getProtocolsFromRequest.d.ts +0 -0
- package/package.json +28 -24
- package/tsconfig.compile.esm.json +23 -0
- package/lib/PassportModule.js.map +0 -1
- package/lib/contants/index.js.map +0 -1
- package/lib/decorators/args.js.map +0 -1
- package/lib/decorators/authenticate.js.map +0 -1
- package/lib/decorators/authorize.js.map +0 -1
- package/lib/decorators/protocol.js.map +0 -1
- package/lib/domain/UserInfo.js +0 -22
- package/lib/domain/UserInfo.js.map +0 -1
- package/lib/errors/PassportException.js.map +0 -1
- package/lib/index.js +0 -20
- package/lib/index.js.map +0 -1
- package/lib/interfaces/IProtocol.js.map +0 -1
- package/lib/interfaces/OnInstall.js.map +0 -1
- package/lib/interfaces/OnVerify.js.map +0 -1
- package/lib/interfaces/ProtocolOptions.js.map +0 -1
- package/lib/interfaces/index.js +0 -8
- package/lib/interfaces/index.js.map +0 -1
- package/lib/middlewares/PassportMiddleware.js.map +0 -1
- package/lib/services/PassportSerializerService.js.map +0 -1
- package/lib/services/ProtocolsService.js.map +0 -1
- package/lib/utils/getProtocolsFromRequest.js.map +0 -1
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.PassportModule = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const common_1 = require("@tsed/common");
|
|
6
|
-
const passport_1 = tslib_1.__importDefault(require("passport"));
|
|
6
|
+
const passport_1 = (0, tslib_1.__importDefault)(require("passport"));
|
|
7
7
|
const PassportSerializerService_1 = require("./services/PassportSerializerService");
|
|
8
8
|
const ProtocolsService_1 = require("./services/ProtocolsService");
|
|
9
9
|
/**
|
|
@@ -33,27 +33,27 @@ let PassportModule = class PassportModule {
|
|
|
33
33
|
}
|
|
34
34
|
}
|
|
35
35
|
};
|
|
36
|
-
tslib_1.__decorate([
|
|
37
|
-
common_1.Constant("passport.userProperty"),
|
|
38
|
-
tslib_1.__metadata("design:type", String)
|
|
36
|
+
(0, tslib_1.__decorate)([
|
|
37
|
+
(0, common_1.Constant)("passport.userProperty"),
|
|
38
|
+
(0, tslib_1.__metadata)("design:type", String)
|
|
39
39
|
], PassportModule.prototype, "userProperty", void 0);
|
|
40
|
-
tslib_1.__decorate([
|
|
41
|
-
common_1.Constant("passport.pauseStream"),
|
|
42
|
-
tslib_1.__metadata("design:type", Boolean)
|
|
40
|
+
(0, tslib_1.__decorate)([
|
|
41
|
+
(0, common_1.Constant)("passport.pauseStream"),
|
|
42
|
+
(0, tslib_1.__metadata)("design:type", Boolean)
|
|
43
43
|
], PassportModule.prototype, "pauseStream", void 0);
|
|
44
|
-
tslib_1.__decorate([
|
|
45
|
-
common_1.Constant("PLATFORM_NAME"),
|
|
46
|
-
tslib_1.__metadata("design:type", String)
|
|
44
|
+
(0, tslib_1.__decorate)([
|
|
45
|
+
(0, common_1.Constant)("PLATFORM_NAME"),
|
|
46
|
+
(0, tslib_1.__metadata)("design:type", String)
|
|
47
47
|
], PassportModule.prototype, "platformName", void 0);
|
|
48
|
-
tslib_1.__decorate([
|
|
49
|
-
common_1.Inject(),
|
|
50
|
-
tslib_1.__metadata("design:type", common_1.Logger)
|
|
48
|
+
(0, tslib_1.__decorate)([
|
|
49
|
+
(0, common_1.Inject)(),
|
|
50
|
+
(0, tslib_1.__metadata)("design:type", common_1.Logger)
|
|
51
51
|
], PassportModule.prototype, "logger", void 0);
|
|
52
|
-
PassportModule = tslib_1.__decorate([
|
|
53
|
-
common_1.Module({
|
|
52
|
+
PassportModule = (0, tslib_1.__decorate)([
|
|
53
|
+
(0, common_1.Module)({
|
|
54
54
|
scope: common_1.ProviderScope.SINGLETON
|
|
55
55
|
}),
|
|
56
|
-
tslib_1.__metadata("design:paramtypes", [common_1.PlatformApplication,
|
|
56
|
+
(0, tslib_1.__metadata)("design:paramtypes", [common_1.PlatformApplication,
|
|
57
57
|
ProtocolsService_1.ProtocolsService,
|
|
58
58
|
PassportSerializerService_1.PassportSerializerService])
|
|
59
59
|
], PassportModule);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PassportModule.js","sourceRoot":"","sources":["../../src/PassportModule.ts"],"names":[],"mappings":";;;;AAAA,yCAAsI;AACtI,qEAAgC;AAChC,oFAA+E;AAC/E,kEAA6D;AAE7D;;GAEG;AAIH,IAAa,cAAc,GAA3B,MAAa,cAAc;IAazB,YACU,GAAwB,EACxB,gBAAkC,EAClC,kBAA6C;QAF7C,QAAG,GAAH,GAAG,CAAqB;QACxB,qBAAgB,GAAhB,gBAAgB,CAAkB;QAClC,uBAAkB,GAAlB,kBAAkB,CAA2B;IACpD,CAAC;IAEJ,OAAO;QACL,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,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,CAAC,OAAO,CAAC,CAAC,QAAuB,EAAE,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;QAElH,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,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,kBAAQ,CAAC,OAAO,CAAC,EAAC,WAAW,EAAC,CAAC,CAAC,CAAC;gBAE9C,OAAO;YAET;gBACE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,YAAY,mCAAmC,CAAC,CAAC;SACvF;IACH,CAAC;CACF,CAAA;AAvCC;IADC,IAAA,iBAAQ,EAAC,uBAAuB,CAAC;;oDACb;AAGrB;IADC,IAAA,iBAAQ,EAAC,sBAAsB,CAAC;;mDACZ;AAGrB;IADC,IAAA,iBAAQ,EAAC,eAAe,CAAC;;oDACL;AAGrB;IADC,IAAA,eAAM,GAAE;2CACD,eAAM;8CAAC;AAXJ,cAAc;IAH1B,IAAA,eAAM,EAAC;QACN,KAAK,EAAE,sBAAa,CAAC,SAAS;KAC/B,CAAC;kDAee,4BAAmB;QACN,mCAAgB;QACd,qDAAyB;GAhB5C,cAAc,CAyC1B;AAzCY,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(\"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 $onInit(): Promise<any> | void {\n Passport.serializeUser(this.passportSerializer.serialize.bind(this.passportSerializer));\n Passport.deserializeUser(this.passportSerializer.deserialize.bind(this.passportSerializer));\n\n this.protocolsService.getProtocols().forEach((provider: Provider<any>) => this.protocolsService.invoke(provider));\n\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.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"]}
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/contants/index.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"]}
|
|
@@ -6,13 +6,13 @@ const PassportMiddleware_1 = require("../middlewares/PassportMiddleware");
|
|
|
6
6
|
const core_1 = require("@tsed/core");
|
|
7
7
|
const schema_1 = require("@tsed/schema");
|
|
8
8
|
function Authenticate(protocol = "*", options = {}) {
|
|
9
|
-
return core_1.useDecorators(common_1.UseAuth(PassportMiddleware_1.PassportMiddleware, {
|
|
9
|
+
return (0, core_1.useDecorators)((0, common_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,yCAAqC;AAErC,0EAAqE;AACrE,qCAAyC;AACzC,yCAAsC;AAOtC,SAAgB,YAAY,CAAC,WAA8B,GAAG,EAAE,UAA+B,EAAE;IAC/F,OAAO,IAAA,oBAAa,EAClB,IAAA,gBAAO,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/common\";\nimport {AuthenticateOptions as PassportAuthenticateOptions} from \"passport\";\nimport {PassportMiddleware} from \"../middlewares/PassportMiddleware\";\nimport {useDecorators} from \"@tsed/core\";\nimport {Security} from \"@tsed/schema\";\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"]}
|
|
@@ -6,13 +6,13 @@ const PassportMiddleware_1 = require("../middlewares/PassportMiddleware");
|
|
|
6
6
|
const core_1 = require("@tsed/core");
|
|
7
7
|
const schema_1 = require("@tsed/schema");
|
|
8
8
|
function Authorize(protocol = "*", options = {}) {
|
|
9
|
-
return core_1.useDecorators(common_1.UseAuth(PassportMiddleware_1.PassportMiddleware, {
|
|
9
|
+
return (0, core_1.useDecorators)((0, common_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,yCAAqC;AAErC,0EAAqE;AACrE,qCAAyC;AACzC,yCAAsC;AAOtC,SAAgB,SAAS,CAAC,WAA8B,GAAG,EAAE,UAA4B,EAAE;IACzF,OAAO,IAAA,oBAAa,EAClB,IAAA,gBAAO,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/common\";\nimport {AuthenticateOptions} from \"passport\";\nimport {PassportMiddleware} from \"../middlewares/PassportMiddleware\";\nimport {useDecorators} from \"@tsed/core\";\nimport {Security} from \"@tsed/schema\";\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"]}
|
|
@@ -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({
|
|
14
|
+
return (0, core_1.useDecorators)((0, di_1.Injectable)({
|
|
15
15
|
type: contants_1.PROVIDER_TYPE_PROTOCOL
|
|
16
|
-
}), core_1.StoreSet("protocol", options), di_1.Configuration({
|
|
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,0CAAmD;AAEnD;;;;;GAKG;AACH,SAAgB,QAAQ,CAAU,OAAoC;IACpE,OAAO,IAAA,oBAAa,EAClB,IAAA,eAAU,EAAC;QACT,IAAI,EAAE,iCAAsB;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\";\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"]}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.UserInfo = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const schema_1 = require("@tsed/schema");
|
|
6
|
+
class UserInfo {
|
|
7
|
+
}
|
|
8
|
+
(0, tslib_1.__decorate)([
|
|
9
|
+
(0, schema_1.Property)(),
|
|
10
|
+
(0, tslib_1.__metadata)("design:type", String)
|
|
11
|
+
], UserInfo.prototype, "id", void 0);
|
|
12
|
+
(0, tslib_1.__decorate)([
|
|
13
|
+
(0, schema_1.Property)(),
|
|
14
|
+
(0, schema_1.Format)("email"),
|
|
15
|
+
(0, tslib_1.__metadata)("design:type", String)
|
|
16
|
+
], UserInfo.prototype, "email", void 0);
|
|
17
|
+
(0, tslib_1.__decorate)([
|
|
18
|
+
(0, schema_1.Property)(),
|
|
19
|
+
(0, tslib_1.__metadata)("design:type", String)
|
|
20
|
+
], UserInfo.prototype, "password", void 0);
|
|
21
|
+
exports.UserInfo = UserInfo;
|
|
22
|
+
//# sourceMappingURL=UserInfo.js.map
|
|
@@ -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"]}
|
package/lib/cjs/index.js
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
require("./PassportModule");
|
|
5
|
+
// Decorator
|
|
6
|
+
(0, tslib_1.__exportStar)(require("./decorators/authenticate"), exports);
|
|
7
|
+
(0, tslib_1.__exportStar)(require("./decorators/authorize"), exports);
|
|
8
|
+
(0, tslib_1.__exportStar)(require("./decorators/protocol"), exports);
|
|
9
|
+
(0, tslib_1.__exportStar)(require("./decorators/args"), exports);
|
|
10
|
+
// Interfaces
|
|
11
|
+
(0, tslib_1.__exportStar)(require("./interfaces"), exports);
|
|
12
|
+
(0, tslib_1.__exportStar)(require("./domain/UserInfo"), exports);
|
|
13
|
+
(0, tslib_1.__exportStar)(require("./errors/PassportException"), exports);
|
|
14
|
+
// Registries and Services
|
|
15
|
+
(0, tslib_1.__exportStar)(require("./contants"), exports);
|
|
16
|
+
(0, tslib_1.__exportStar)(require("./services/ProtocolsService"), exports);
|
|
17
|
+
(0, tslib_1.__exportStar)(require("./services/PassportSerializerService"), exports);
|
|
18
|
+
// Middlewares
|
|
19
|
+
(0, tslib_1.__exportStar)(require("./middlewares/PassportMiddleware"), exports);
|
|
20
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,4BAA0B;AAE1B,YAAY;AACZ,yEAA0C;AAC1C,sEAAuC;AACvC,qEAAsC;AACtC,iEAAkC;AAElC,aAAa;AACb,4DAA6B;AAC7B,iEAAkC;AAClC,0EAA2C;AAE3C,0BAA0B;AAC1B,0DAA2B;AAC3B,2EAA4C;AAC5C,oFAAqD;AAErD,cAAc;AACd,gFAAiD","sourcesContent":["import \"./PassportModule\";\n\n// Decorator\nexport * from \"./decorators/authenticate\";\nexport * from \"./decorators/authorize\";\nexport * from \"./decorators/protocol\";\nexport * from \"./decorators/args\";\n\n// Interfaces\nexport * from \"./interfaces\";\nexport * from \"./domain/UserInfo\";\nexport * from \"./errors/PassportException\";\n\n// Registries and Services\nexport * from \"./contants\";\nexport * from \"./services/ProtocolsService\";\nexport * from \"./services/PassportSerializerService\";\n\n// Middlewares\nexport * from \"./middlewares/PassportMiddleware\";\n"]}
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IProtocol.js","sourceRoot":"","sources":["../../../src/interfaces/IProtocol.ts"],"names":[],"mappings":"","sourcesContent":["import {OnInstall} from \"./OnInstall\";\nimport {OnVerify} from \"./OnVerify\";\n\nexport interface IProtocol extends OnVerify, OnInstall {}\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;\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"]}
|
|
File without changes
|
|
@@ -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<T = any> {\n name: string;\n useStrategy: Type<Strategy>;\n settings: T;\n}\n"]}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
(0, tslib_1.__exportStar)(require("./ProtocolOptions"), exports);
|
|
5
|
+
(0, tslib_1.__exportStar)(require("./IProtocol"), exports);
|
|
6
|
+
(0, tslib_1.__exportStar)(require("./OnInstall"), exports);
|
|
7
|
+
(0, tslib_1.__exportStar)(require("./OnVerify"), exports);
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/interfaces/index.ts"],"names":[],"mappings":";;;AAkBA,iEAAkC;AAClC,2DAA4B;AAC5B,2DAA4B;AAC5B,0DAA2B","sourcesContent":["import {Type} from \"@tsed/core\";\nimport {ProtocolOptions} from \"./ProtocolOptions\";\n\ndeclare global {\n namespace TsED {\n interface Configuration {\n passport: {\n userProperty?: string;\n pauseStream?: string;\n userInfoModel?: Type<any> | false;\n protocols?: {\n [protocolName: string]: Partial<ProtocolOptions>;\n };\n };\n }\n }\n}\n\nexport * from \"./ProtocolOptions\";\nexport * from \"./IProtocol\";\nexport * from \"./OnInstall\";\nexport * from \"./OnVerify\";\n"]}
|
|
@@ -18,7 +18,7 @@ let PassportMiddleware = PassportMiddleware_1 = class PassportMiddleware {
|
|
|
18
18
|
return;
|
|
19
19
|
}
|
|
20
20
|
const { options, protocol, method, originalUrl = true } = endpoint.store.get(PassportMiddleware_1);
|
|
21
|
-
const protocols = getProtocolsFromRequest_1.getProtocolsFromRequest(request, protocol, this.protocolsService.getProtocolsNames());
|
|
21
|
+
const protocols = (0, getProtocolsFromRequest_1.getProtocolsFromRequest)(request, protocol, this.protocolsService.getProtocolsNames());
|
|
22
22
|
if (originalUrl) {
|
|
23
23
|
request.url = request.originalUrl;
|
|
24
24
|
}
|
|
@@ -27,18 +27,18 @@ let PassportMiddleware = PassportMiddleware_1 = class PassportMiddleware {
|
|
|
27
27
|
: this.protocolsService.authorize(protocols, options, ctx));
|
|
28
28
|
}
|
|
29
29
|
};
|
|
30
|
-
tslib_1.__decorate([
|
|
31
|
-
common_1.Inject(ProtocolsService_1.ProtocolsService),
|
|
32
|
-
tslib_1.__metadata("design:type", ProtocolsService_1.ProtocolsService)
|
|
30
|
+
(0, tslib_1.__decorate)([
|
|
31
|
+
(0, common_1.Inject)(ProtocolsService_1.ProtocolsService),
|
|
32
|
+
(0, tslib_1.__metadata)("design:type", ProtocolsService_1.ProtocolsService)
|
|
33
33
|
], PassportMiddleware.prototype, "protocolsService", void 0);
|
|
34
|
-
tslib_1.__decorate([
|
|
35
|
-
tslib_1.__param(0, common_1.Context()),
|
|
36
|
-
tslib_1.__metadata("design:type", Function),
|
|
37
|
-
tslib_1.__metadata("design:paramtypes", [Object]),
|
|
38
|
-
tslib_1.__metadata("design:returntype", Promise)
|
|
34
|
+
(0, tslib_1.__decorate)([
|
|
35
|
+
(0, tslib_1.__param)(0, (0, common_1.Context)()),
|
|
36
|
+
(0, tslib_1.__metadata)("design:type", Function),
|
|
37
|
+
(0, tslib_1.__metadata)("design:paramtypes", [Object]),
|
|
38
|
+
(0, tslib_1.__metadata)("design:returntype", Promise)
|
|
39
39
|
], PassportMiddleware.prototype, "use", null);
|
|
40
|
-
PassportMiddleware = PassportMiddleware_1 = tslib_1.__decorate([
|
|
41
|
-
common_1.Middleware()
|
|
40
|
+
PassportMiddleware = PassportMiddleware_1 = (0, tslib_1.__decorate)([
|
|
41
|
+
(0, common_1.Middleware)()
|
|
42
42
|
], PassportMiddleware);
|
|
43
43
|
exports.PassportMiddleware = PassportMiddleware;
|
|
44
44
|
//# sourceMappingURL=PassportMiddleware.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PassportMiddleware.js","sourceRoot":"","sources":["../../../src/middlewares/PassportMiddleware.ts"],"names":[],"mappings":";;;;;AAAA,yCAAyD;AACzD,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,eAAM,EAAC,mCAAgB,CAAC;2CACP,mCAAgB;4DAAC;AAOnC;IAAW,wBAAA,IAAA,gBAAO,GAAE,CAAA;;;;6CAiBnB;AA1BU,kBAAkB;IAD9B,IAAA,mBAAU,GAAE;GACA,kBAAkB,CA2B9B;AA3BY,gDAAkB","sourcesContent":["import {Context, Inject, Middleware} 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"]}
|
|
@@ -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) {
|
|
@@ -31,12 +31,12 @@ let PassportSerializerService = class PassportSerializerService {
|
|
|
31
31
|
}
|
|
32
32
|
}
|
|
33
33
|
};
|
|
34
|
-
tslib_1.__decorate([
|
|
35
|
-
di_1.Constant("passport.userInfoModel", UserInfo_1.UserInfo),
|
|
36
|
-
tslib_1.__metadata("design:type", Object)
|
|
34
|
+
(0, tslib_1.__decorate)([
|
|
35
|
+
(0, di_1.Constant)("passport.userInfoModel", UserInfo_1.UserInfo),
|
|
36
|
+
(0, tslib_1.__metadata)("design:type", Object)
|
|
37
37
|
], PassportSerializerService.prototype, "model", void 0);
|
|
38
|
-
PassportSerializerService = tslib_1.__decorate([
|
|
39
|
-
di_1.Service()
|
|
38
|
+
PassportSerializerService = (0, tslib_1.__decorate)([
|
|
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"]}
|
|
@@ -6,7 +6,7 @@ const common_1 = require("@tsed/common");
|
|
|
6
6
|
const core_1 = require("@tsed/core");
|
|
7
7
|
const di_1 = require("@tsed/di");
|
|
8
8
|
const exceptions_1 = require("@tsed/exceptions");
|
|
9
|
-
const passport_1 = tslib_1.__importStar(require("passport"));
|
|
9
|
+
const passport_1 = (0, tslib_1.__importStar)(require("passport"));
|
|
10
10
|
const PassportException_1 = require("../errors/PassportException");
|
|
11
11
|
const contants_1 = require("../contants");
|
|
12
12
|
const util_1 = require("util");
|
|
@@ -76,11 +76,11 @@ let ProtocolsService = class ProtocolsService {
|
|
|
76
76
|
try {
|
|
77
77
|
options.failWithError = true;
|
|
78
78
|
// @ts-ignore
|
|
79
|
-
const fn = util_1.promisify(passport_1.default[method](protocols.length === 1 ? protocols[0] : protocols, options));
|
|
79
|
+
const fn = (0, util_1.promisify)(passport_1.default[method](protocols.length === 1 ? protocols[0] : protocols, options));
|
|
80
80
|
await fn(request, response);
|
|
81
81
|
}
|
|
82
82
|
catch (er) {
|
|
83
|
-
if (!core_1.ancestorsOf(er).includes(Error)) {
|
|
83
|
+
if (!(0, core_1.ancestorsOf)(er).includes(Error)) {
|
|
84
84
|
throw new PassportException_1.PassportException(er);
|
|
85
85
|
}
|
|
86
86
|
throw er;
|
|
@@ -124,9 +124,9 @@ let ProtocolsService = class ProtocolsService {
|
|
|
124
124
|
};
|
|
125
125
|
}
|
|
126
126
|
};
|
|
127
|
-
ProtocolsService = tslib_1.__decorate([
|
|
128
|
-
di_1.Injectable(),
|
|
129
|
-
tslib_1.__metadata("design:paramtypes", [di_1.InjectorService])
|
|
127
|
+
ProtocolsService = (0, tslib_1.__decorate)([
|
|
128
|
+
(0, di_1.Injectable)(),
|
|
129
|
+
(0, tslib_1.__metadata)("design:paramtypes", [di_1.InjectorService])
|
|
130
130
|
], ProtocolsService);
|
|
131
131
|
exports.ProtocolsService = ProtocolsService;
|
|
132
132
|
//# sourceMappingURL=ProtocolsService.js.map
|
|
@@ -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 {IProtocol, ProtocolOptions} from \"../interfaces\";\nimport {PROVIDER_TYPE_PROTOCOL} from \"../contants\";\nimport {promisify} from \"util\";\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 Array.from(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 public invoke(provider: Provider): any {\n const {name, useStrategy: strategy, settings} = this.getOptions(provider);\n const protocol = this.injector.get<IProtocol & any>(provider.provide)!;\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 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 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 };\n }\n}\n"]}
|
|
@@ -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,58 @@
|
|
|
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";
|
|
5
|
+
import { ProtocolsService } from "./services/ProtocolsService";
|
|
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
|
+
$onInit() {
|
|
16
|
+
Passport.serializeUser(this.passportSerializer.serialize.bind(this.passportSerializer));
|
|
17
|
+
Passport.deserializeUser(this.passportSerializer.deserialize.bind(this.passportSerializer));
|
|
18
|
+
this.protocolsService.getProtocols().forEach((provider) => this.protocolsService.invoke(provider));
|
|
19
|
+
return undefined;
|
|
20
|
+
}
|
|
21
|
+
$beforeRoutesInit() {
|
|
22
|
+
const { userProperty, pauseStream } = this;
|
|
23
|
+
switch (this.platformName) {
|
|
24
|
+
case "express":
|
|
25
|
+
this.app.use(Passport.initialize({ userProperty }));
|
|
26
|
+
this.app.use(Passport.session({ pauseStream }));
|
|
27
|
+
return;
|
|
28
|
+
default:
|
|
29
|
+
this.logger.warn(`Platform "${this.platformName}" not supported by @tsed/passport`);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
__decorate([
|
|
34
|
+
Constant("passport.userProperty"),
|
|
35
|
+
__metadata("design:type", String)
|
|
36
|
+
], PassportModule.prototype, "userProperty", void 0);
|
|
37
|
+
__decorate([
|
|
38
|
+
Constant("passport.pauseStream"),
|
|
39
|
+
__metadata("design:type", Boolean)
|
|
40
|
+
], PassportModule.prototype, "pauseStream", void 0);
|
|
41
|
+
__decorate([
|
|
42
|
+
Constant("PLATFORM_NAME"),
|
|
43
|
+
__metadata("design:type", String)
|
|
44
|
+
], PassportModule.prototype, "platformName", void 0);
|
|
45
|
+
__decorate([
|
|
46
|
+
Inject(),
|
|
47
|
+
__metadata("design:type", Logger)
|
|
48
|
+
], PassportModule.prototype, "logger", void 0);
|
|
49
|
+
PassportModule = __decorate([
|
|
50
|
+
Module({
|
|
51
|
+
scope: ProviderScope.SINGLETON
|
|
52
|
+
}),
|
|
53
|
+
__metadata("design:paramtypes", [PlatformApplication,
|
|
54
|
+
ProtocolsService,
|
|
55
|
+
PassportSerializerService])
|
|
56
|
+
], PassportModule);
|
|
57
|
+
export { PassportModule };
|
|
58
|
+
//# 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;IAazB,YACU,GAAwB,EACxB,gBAAkC,EAClC,kBAA6C;QAF7C,QAAG,GAAH,GAAG,CAAqB;QACxB,qBAAgB,GAAhB,gBAAgB,CAAkB;QAClC,uBAAkB,GAAlB,kBAAkB,CAA2B;IACpD,CAAC;IAEJ,OAAO;QACL,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,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,CAAC,OAAO,CAAC,CAAC,QAAuB,EAAE,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;QAElH,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,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAC,WAAW,EAAC,CAAC,CAAC,CAAC;gBAE9C,OAAO;YAET;gBACE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,YAAY,mCAAmC,CAAC,CAAC;SACvF;IACH,CAAC;CACF,CAAA;AAvCC;IADC,QAAQ,CAAC,uBAAuB,CAAC;;oDACb;AAGrB;IADC,QAAQ,CAAC,sBAAsB,CAAC;;mDACZ;AAGrB;IADC,QAAQ,CAAC,eAAe,CAAC;;oDACL;AAGrB;IADC,MAAM,EAAE;8BACD,MAAM;8CAAC;AAXJ,cAAc;IAH1B,MAAM,CAAC;QACN,KAAK,EAAE,aAAa,CAAC,SAAS;KAC/B,CAAC;qCAee,mBAAmB;QACN,gBAAgB;QACd,yBAAyB;GAhB5C,cAAc,CAyC1B;SAzCY,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(\"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 $onInit(): Promise<any> | void {\n Passport.serializeUser(this.passportSerializer.serialize.bind(this.passportSerializer));\n Passport.deserializeUser(this.passportSerializer.deserialize.bind(this.passportSerializer));\n\n this.protocolsService.getProtocols().forEach((provider: Provider<any>) => this.protocolsService.invoke(provider));\n\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.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"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/contants/index.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,sBAAsB,GAAG,UAAU,CAAC","sourcesContent":["export const PROVIDER_TYPE_PROTOCOL = \"protocol\";\n"]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Context } from "@tsed/common";
|
|
2
|
+
import { useDecorators } from "@tsed/core";
|
|
3
|
+
/**
|
|
4
|
+
* Inject args resolve by the passport strategy on verify method.
|
|
5
|
+
* @decorator
|
|
6
|
+
*/
|
|
7
|
+
export function Args() {
|
|
8
|
+
return useDecorators(Context("PROTOCOL_ARGS"));
|
|
9
|
+
}
|
|
10
|
+
export function Arg(index) {
|
|
11
|
+
return useDecorators(Context(`PROTOCOL_ARGS.${index}`));
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=args.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"args.js","sourceRoot":"","sources":["../../../src/decorators/args.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAC,MAAM,cAAc,CAAC;AACrC,OAAO,EAAC,aAAa,EAAC,MAAM,YAAY,CAAC;AAEzC;;;GAGG;AACH,MAAM,UAAU,IAAI;IAClB,OAAO,aAAa,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,GAAG,CAAC,KAAa;IAC/B,OAAO,aAAa,CAAC,OAAO,CAAC,iBAAiB,KAAK,EAAE,CAAC,CAAC,CAAC;AAC1D,CAAC","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"]}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { UseAuth } from "@tsed/common";
|
|
2
|
+
import { PassportMiddleware } from "../middlewares/PassportMiddleware";
|
|
3
|
+
import { useDecorators } from "@tsed/core";
|
|
4
|
+
import { Security } from "@tsed/schema";
|
|
5
|
+
export function Authenticate(protocol = "*", options = {}) {
|
|
6
|
+
return useDecorators(UseAuth(PassportMiddleware, {
|
|
7
|
+
protocol,
|
|
8
|
+
method: "authenticate",
|
|
9
|
+
originalUrl: options.originalUrl === undefined ? true : options.originalUrl,
|
|
10
|
+
options
|
|
11
|
+
}), ...Object.entries(options.security || {}).map(([key, value]) => {
|
|
12
|
+
return Security(key, ...value);
|
|
13
|
+
}));
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=authenticate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authenticate.js","sourceRoot":"","sources":["../../../src/decorators/authenticate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAC,MAAM,cAAc,CAAC;AAErC,OAAO,EAAC,kBAAkB,EAAC,MAAM,mCAAmC,CAAC;AACrE,OAAO,EAAC,aAAa,EAAC,MAAM,YAAY,CAAC;AACzC,OAAO,EAAC,QAAQ,EAAC,MAAM,cAAc,CAAC;AAOtC,MAAM,UAAU,YAAY,CAAC,WAA8B,GAAG,EAAE,UAA+B,EAAE;IAC/F,OAAO,aAAa,CAClB,OAAO,CAAC,kBAAkB,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,QAAQ,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,CAAC;IACjC,CAAC,CAAC,CACH,CAAC;AACJ,CAAC","sourcesContent":["import {UseAuth} from \"@tsed/common\";\nimport {AuthenticateOptions as PassportAuthenticateOptions} from \"passport\";\nimport {PassportMiddleware} from \"../middlewares/PassportMiddleware\";\nimport {useDecorators} from \"@tsed/core\";\nimport {Security} from \"@tsed/schema\";\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"]}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { UseAuth } from "@tsed/common";
|
|
2
|
+
import { PassportMiddleware } from "../middlewares/PassportMiddleware";
|
|
3
|
+
import { useDecorators } from "@tsed/core";
|
|
4
|
+
import { Security } from "@tsed/schema";
|
|
5
|
+
export function Authorize(protocol = "*", options = {}) {
|
|
6
|
+
return useDecorators(UseAuth(PassportMiddleware, {
|
|
7
|
+
protocol,
|
|
8
|
+
method: "authorize",
|
|
9
|
+
originalUrl: options.originalUrl === undefined ? true : options.originalUrl,
|
|
10
|
+
options
|
|
11
|
+
}), ...Object.entries(options.security || {}).map(([key, value]) => {
|
|
12
|
+
return Security(key, ...value);
|
|
13
|
+
}));
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=authorize.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authorize.js","sourceRoot":"","sources":["../../../src/decorators/authorize.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAC,MAAM,cAAc,CAAC;AAErC,OAAO,EAAC,kBAAkB,EAAC,MAAM,mCAAmC,CAAC;AACrE,OAAO,EAAC,aAAa,EAAC,MAAM,YAAY,CAAC;AACzC,OAAO,EAAC,QAAQ,EAAC,MAAM,cAAc,CAAC;AAOtC,MAAM,UAAU,SAAS,CAAC,WAA8B,GAAG,EAAE,UAA4B,EAAE;IACzF,OAAO,aAAa,CAClB,OAAO,CAAC,kBAAkB,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,QAAQ,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,CAAC;IACjC,CAAC,CAAC,CACH,CAAC;AACJ,CAAC","sourcesContent":["import {UseAuth} from \"@tsed/common\";\nimport {AuthenticateOptions} from \"passport\";\nimport {PassportMiddleware} from \"../middlewares/PassportMiddleware\";\nimport {useDecorators} from \"@tsed/core\";\nimport {Security} from \"@tsed/schema\";\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"]}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { StoreSet, useDecorators } from "@tsed/core";
|
|
2
|
+
import { Configuration, Injectable } from "@tsed/di";
|
|
3
|
+
import { PROVIDER_TYPE_PROTOCOL } from "../contants";
|
|
4
|
+
/**
|
|
5
|
+
* Declare a new Protocol base on a Passport Strategy
|
|
6
|
+
*
|
|
7
|
+
* @decorator
|
|
8
|
+
* @class
|
|
9
|
+
*/
|
|
10
|
+
export function Protocol(options) {
|
|
11
|
+
return useDecorators(Injectable({
|
|
12
|
+
type: PROVIDER_TYPE_PROTOCOL
|
|
13
|
+
}), StoreSet("protocol", options), Configuration({
|
|
14
|
+
passport: {
|
|
15
|
+
protocols: {
|
|
16
|
+
[options.name]: options
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
}));
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=protocol.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../../src/decorators/protocol.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAE,aAAa,EAAC,MAAM,YAAY,CAAC;AACnD,OAAO,EAAC,aAAa,EAAE,UAAU,EAAC,MAAM,UAAU,CAAC;AAEnD,OAAO,EAAC,sBAAsB,EAAC,MAAM,aAAa,CAAC;AAEnD;;;;;GAKG;AACH,MAAM,UAAU,QAAQ,CAAU,OAAoC;IACpE,OAAO,aAAa,CAClB,UAAU,CAAC;QACT,IAAI,EAAE,sBAAsB;KAC7B,CAAC,EACF,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,EAC7B,aAAa,CAAC;QACZ,QAAQ,EAAE;YACR,SAAS,EAAE;gBACT,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO;aACxB;SACF;KACF,CAAC,CACH,CAAC;AACJ,CAAC","sourcesContent":["import {StoreSet, useDecorators} from \"@tsed/core\";\nimport {Configuration, Injectable} from \"@tsed/di\";\nimport {ProtocolOptions} from \"../interfaces/ProtocolOptions\";\nimport {PROVIDER_TYPE_PROTOCOL} from \"../contants\";\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"]}
|