@ofeklabs/horizon-auth 0.2.0 → 0.2.1
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/dist/auth/auth.module.d.ts +3 -0
- package/dist/auth/auth.module.js +51 -27
- package/dist/auth/auth.module.js.map +1 -1
- package/dist/auth/strategies/jwt-sso.strategy.d.ts +8 -0
- package/dist/auth/strategies/jwt-sso.strategy.js +46 -0
- package/dist/auth/strategies/jwt-sso.strategy.js.map +1 -0
- package/dist/lib/horizon-auth.module.js +3 -3
- package/dist/lib/horizon-auth.module.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +1 -1
package/dist/auth/auth.module.js
CHANGED
|
@@ -5,51 +5,75 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
5
5
|
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
6
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
7
|
};
|
|
8
|
+
var AuthModule_1;
|
|
8
9
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
10
|
exports.AuthModule = void 0;
|
|
10
11
|
const common_1 = require("@nestjs/common");
|
|
11
12
|
const jwt_1 = require("@nestjs/jwt");
|
|
12
13
|
const passport_1 = require("@nestjs/passport");
|
|
13
14
|
const throttler_1 = require("@nestjs/throttler");
|
|
15
|
+
const core_1 = require("@nestjs/core");
|
|
14
16
|
const auth_service_1 = require("./auth.service");
|
|
15
17
|
const auth_controller_1 = require("./auth.controller");
|
|
16
18
|
const jwks_controller_1 = require("./jwks.controller");
|
|
17
19
|
const password_service_1 = require("./services/password.service");
|
|
18
20
|
const token_service_1 = require("./services/token.service");
|
|
19
21
|
const jwt_strategy_1 = require("./strategies/jwt.strategy");
|
|
22
|
+
const jwt_sso_strategy_1 = require("./strategies/jwt-sso.strategy");
|
|
20
23
|
const jwt_auth_guard_1 = require("./guards/jwt-auth.guard");
|
|
21
24
|
const roles_guard_1 = require("./guards/roles.guard");
|
|
22
25
|
const users_module_1 = require("../users/users.module");
|
|
23
26
|
const redis_module_1 = require("../redis/redis.module");
|
|
24
27
|
const prisma_module_1 = require("../prisma/prisma.module");
|
|
25
|
-
let AuthModule = class AuthModule {
|
|
28
|
+
let AuthModule = AuthModule_1 = class AuthModule {
|
|
29
|
+
static forSsoMode() {
|
|
30
|
+
return {
|
|
31
|
+
module: AuthModule_1,
|
|
32
|
+
imports: [
|
|
33
|
+
passport_1.PassportModule,
|
|
34
|
+
jwt_1.JwtModule.register({}),
|
|
35
|
+
],
|
|
36
|
+
providers: [
|
|
37
|
+
core_1.Reflector,
|
|
38
|
+
jwt_sso_strategy_1.JwtSsoStrategy,
|
|
39
|
+
jwt_auth_guard_1.JwtAuthGuard,
|
|
40
|
+
roles_guard_1.RolesGuard,
|
|
41
|
+
],
|
|
42
|
+
exports: [jwt_auth_guard_1.JwtAuthGuard, roles_guard_1.RolesGuard, core_1.Reflector],
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
static forFullMode() {
|
|
46
|
+
return {
|
|
47
|
+
module: AuthModule_1,
|
|
48
|
+
imports: [
|
|
49
|
+
passport_1.PassportModule,
|
|
50
|
+
jwt_1.JwtModule.register({}),
|
|
51
|
+
throttler_1.ThrottlerModule.forRoot([
|
|
52
|
+
{
|
|
53
|
+
ttl: 60000,
|
|
54
|
+
limit: 10,
|
|
55
|
+
},
|
|
56
|
+
]),
|
|
57
|
+
users_module_1.UsersModule,
|
|
58
|
+
redis_module_1.RedisModule,
|
|
59
|
+
prisma_module_1.PrismaModule,
|
|
60
|
+
],
|
|
61
|
+
controllers: [auth_controller_1.AuthController, jwks_controller_1.JwksController],
|
|
62
|
+
providers: [
|
|
63
|
+
core_1.Reflector,
|
|
64
|
+
auth_service_1.AuthService,
|
|
65
|
+
password_service_1.PasswordService,
|
|
66
|
+
token_service_1.TokenService,
|
|
67
|
+
jwt_strategy_1.JwtStrategy,
|
|
68
|
+
jwt_auth_guard_1.JwtAuthGuard,
|
|
69
|
+
roles_guard_1.RolesGuard,
|
|
70
|
+
],
|
|
71
|
+
exports: [auth_service_1.AuthService, jwt_auth_guard_1.JwtAuthGuard, roles_guard_1.RolesGuard, core_1.Reflector],
|
|
72
|
+
};
|
|
73
|
+
}
|
|
26
74
|
};
|
|
27
75
|
exports.AuthModule = AuthModule;
|
|
28
|
-
exports.AuthModule = AuthModule = __decorate([
|
|
29
|
-
(0, common_1.Module)({
|
|
30
|
-
imports: [
|
|
31
|
-
passport_1.PassportModule,
|
|
32
|
-
jwt_1.JwtModule.register({}),
|
|
33
|
-
throttler_1.ThrottlerModule.forRoot([
|
|
34
|
-
{
|
|
35
|
-
ttl: 60000,
|
|
36
|
-
limit: 10,
|
|
37
|
-
},
|
|
38
|
-
]),
|
|
39
|
-
users_module_1.UsersModule,
|
|
40
|
-
redis_module_1.RedisModule,
|
|
41
|
-
prisma_module_1.PrismaModule,
|
|
42
|
-
],
|
|
43
|
-
controllers: [auth_controller_1.AuthController, jwks_controller_1.JwksController],
|
|
44
|
-
providers: [
|
|
45
|
-
auth_service_1.AuthService,
|
|
46
|
-
password_service_1.PasswordService,
|
|
47
|
-
token_service_1.TokenService,
|
|
48
|
-
jwt_strategy_1.JwtStrategy,
|
|
49
|
-
jwt_auth_guard_1.JwtAuthGuard,
|
|
50
|
-
roles_guard_1.RolesGuard,
|
|
51
|
-
],
|
|
52
|
-
exports: [auth_service_1.AuthService, jwt_auth_guard_1.JwtAuthGuard, roles_guard_1.RolesGuard],
|
|
53
|
-
})
|
|
76
|
+
exports.AuthModule = AuthModule = AuthModule_1 = __decorate([
|
|
77
|
+
(0, common_1.Module)({})
|
|
54
78
|
], AuthModule);
|
|
55
79
|
//# sourceMappingURL=auth.module.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.module.js","sourceRoot":"","sources":["../../src/auth/auth.module.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"auth.module.js","sourceRoot":"","sources":["../../src/auth/auth.module.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAAuD;AACvD,qCAAwC;AACxC,+CAAkD;AAClD,iDAAoD;AACpD,uCAAoD;AACpD,iDAA6C;AAC7C,uDAAmD;AACnD,uDAAmD;AACnD,kEAA8D;AAC9D,4DAAwD;AACxD,4DAAwD;AACxD,oEAA+D;AAC/D,4DAAuD;AACvD,sDAAkD;AAClD,wDAAoD;AACpD,wDAAoD;AACpD,2DAAuD;AAGhD,IAAM,UAAU,kBAAhB,MAAM,UAAU;IAIrB,MAAM,CAAC,UAAU;QACf,OAAO;YACL,MAAM,EAAE,YAAU;YAClB,OAAO,EAAE;gBACP,yBAAc;gBACd,eAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;aACvB;YACD,SAAS,EAAE;gBACT,gBAAS;gBACT,iCAAc;gBACd,6BAAY;gBACZ,wBAAU;aACX;YACD,OAAO,EAAE,CAAC,6BAAY,EAAE,wBAAU,EAAE,gBAAS,CAAC;SAC/C,CAAC;IACJ,CAAC;IAKD,MAAM,CAAC,WAAW;QAChB,OAAO;YACL,MAAM,EAAE,YAAU;YAClB,OAAO,EAAE;gBACP,yBAAc;gBACd,eAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACtB,2BAAe,CAAC,OAAO,CAAC;oBACtB;wBACE,GAAG,EAAE,KAAK;wBACV,KAAK,EAAE,EAAE;qBACV;iBACF,CAAC;gBACF,0BAAW;gBACX,0BAAW;gBACX,4BAAY;aACb;YACD,WAAW,EAAE,CAAC,gCAAc,EAAE,gCAAc,CAAC;YAC7C,SAAS,EAAE;gBACT,gBAAS;gBACT,0BAAW;gBACX,kCAAe;gBACf,4BAAY;gBACZ,0BAAW;gBACX,6BAAY;gBACZ,wBAAU;aACX;YACD,OAAO,EAAE,CAAC,0BAAW,EAAE,6BAAY,EAAE,wBAAU,EAAE,gBAAS,CAAC;SAC5D,CAAC;IACJ,CAAC;CACF,CAAA;AArDY,gCAAU;qBAAV,UAAU;IADtB,IAAA,eAAM,EAAC,EAAE,CAAC;GACE,UAAU,CAqDtB"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Strategy } from 'passport-jwt';
|
|
2
|
+
declare const JwtSsoStrategy_base: new (...args: any[]) => Strategy;
|
|
3
|
+
export declare class JwtSsoStrategy extends JwtSsoStrategy_base {
|
|
4
|
+
private readonly config;
|
|
5
|
+
constructor(config: any);
|
|
6
|
+
validate(payload: any): Promise<any>;
|
|
7
|
+
}
|
|
8
|
+
export {};
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.JwtSsoStrategy = void 0;
|
|
16
|
+
const common_1 = require("@nestjs/common");
|
|
17
|
+
const passport_1 = require("@nestjs/passport");
|
|
18
|
+
const passport_jwt_1 = require("passport-jwt");
|
|
19
|
+
let JwtSsoStrategy = class JwtSsoStrategy extends (0, passport_1.PassportStrategy)(passport_jwt_1.Strategy, 'jwt') {
|
|
20
|
+
constructor(config) {
|
|
21
|
+
super({
|
|
22
|
+
jwtFromRequest: passport_jwt_1.ExtractJwt.fromAuthHeaderAsBearerToken(),
|
|
23
|
+
ignoreExpiration: false,
|
|
24
|
+
secretOrKey: config.jwt.publicKey,
|
|
25
|
+
algorithms: ['RS256'],
|
|
26
|
+
issuer: config.jwt.issuer || 'horizon-auth',
|
|
27
|
+
audience: config.jwt.audience || 'horizon-api',
|
|
28
|
+
});
|
|
29
|
+
this.config = config;
|
|
30
|
+
}
|
|
31
|
+
async validate(payload) {
|
|
32
|
+
return {
|
|
33
|
+
id: payload.sub,
|
|
34
|
+
email: payload.email,
|
|
35
|
+
roles: payload.roles || [],
|
|
36
|
+
...payload,
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
exports.JwtSsoStrategy = JwtSsoStrategy;
|
|
41
|
+
exports.JwtSsoStrategy = JwtSsoStrategy = __decorate([
|
|
42
|
+
(0, common_1.Injectable)(),
|
|
43
|
+
__param(0, (0, common_1.Inject)('HORIZON_AUTH_CONFIG')),
|
|
44
|
+
__metadata("design:paramtypes", [Object])
|
|
45
|
+
], JwtSsoStrategy);
|
|
46
|
+
//# sourceMappingURL=jwt-sso.strategy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jwt-sso.strategy.js","sourceRoot":"","sources":["../../../src/auth/strategies/jwt-sso.strategy.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAoD;AACpD,+CAAoD;AACpD,+CAAoD;AAO7C,IAAM,cAAc,GAApB,MAAM,cAAe,SAAQ,IAAA,2BAAgB,EAAC,uBAAQ,EAAE,KAAK,CAAC;IACnE,YAA4D,MAAW;QACrE,KAAK,CAAC;YACJ,cAAc,EAAE,yBAAU,CAAC,2BAA2B,EAAE;YACxD,gBAAgB,EAAE,KAAK;YACvB,WAAW,EAAE,MAAM,CAAC,GAAG,CAAC,SAAS;YACjC,UAAU,EAAE,CAAC,OAAO,CAAC;YACrB,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,IAAI,cAAc;YAC3C,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,IAAI,aAAa;SAC/C,CAAC,CAAC;QARuD,WAAM,GAAN,MAAM,CAAK;IASvE,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,OAAY;QAGzB,OAAO;YACL,EAAE,EAAE,OAAO,CAAC,GAAG;YACf,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,EAAE;YAC1B,GAAG,OAAO;SACX,CAAC;IACJ,CAAC;CACF,CAAA;AAtBY,wCAAc;yBAAd,cAAc;IAD1B,IAAA,mBAAU,GAAE;IAEE,WAAA,IAAA,eAAM,EAAC,qBAAqB,CAAC,CAAA;;GAD/B,cAAc,CAsB1B"}
|
|
@@ -35,7 +35,7 @@ let HorizonAuthModule = HorizonAuthModule_1 = class HorizonAuthModule {
|
|
|
35
35
|
return {
|
|
36
36
|
module: HorizonAuthModule_1,
|
|
37
37
|
imports: [
|
|
38
|
-
auth_module_1.AuthModule,
|
|
38
|
+
auth_module_1.AuthModule.forSsoMode(),
|
|
39
39
|
],
|
|
40
40
|
providers,
|
|
41
41
|
exports: ['HORIZON_AUTH_CONFIG', auth_module_1.AuthModule],
|
|
@@ -46,7 +46,7 @@ let HorizonAuthModule = HorizonAuthModule_1 = class HorizonAuthModule {
|
|
|
46
46
|
imports: [
|
|
47
47
|
prisma_module_1.PrismaModule.forRoot(finalConfig),
|
|
48
48
|
redis_module_1.RedisModule.forRoot(finalConfig),
|
|
49
|
-
auth_module_1.AuthModule,
|
|
49
|
+
auth_module_1.AuthModule.forFullMode(),
|
|
50
50
|
users_module_1.UsersModule,
|
|
51
51
|
],
|
|
52
52
|
providers,
|
|
@@ -67,7 +67,7 @@ let HorizonAuthModule = HorizonAuthModule_1 = class HorizonAuthModule {
|
|
|
67
67
|
];
|
|
68
68
|
return {
|
|
69
69
|
module: HorizonAuthModule_1,
|
|
70
|
-
imports: [auth_module_1.AuthModule, users_module_1.UsersModule],
|
|
70
|
+
imports: [auth_module_1.AuthModule.forFullMode(), users_module_1.UsersModule],
|
|
71
71
|
providers,
|
|
72
72
|
exports: ['HORIZON_AUTH_CONFIG', auth_module_1.AuthModule],
|
|
73
73
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"horizon-auth.module.js","sourceRoot":"","sources":["../../src/lib/horizon-auth.module.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAAyE;AACzE,uCAAyC;AAEzC,qDAAiD;AACjD,wDAAoD;AACpD,wDAAoD;AACpD,2DAAuD;AACvD,kEAA6D;AAItD,IAAM,iBAAiB,yBAAvB,MAAM,iBAAiB;IAM5B,MAAM,CAAC,OAAO,CAAC,MAAyB;QAEtC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAG5B,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAE/C,MAAM,SAAS,GAAe;YAC5B;gBACE,OAAO,EAAE,qBAAqB;gBAC9B,QAAQ,EAAE,WAAW;aACtB;SACF,CAAC;QAGF,IAAI,WAAW,CAAC,MAAM,EAAE,qBAAqB,EAAE,CAAC;YAC9C,SAAS,CAAC,IAAI,CAAC;gBACb,OAAO,EAAE,gBAAS;gBAClB,QAAQ,EAAE,6BAAY;aACvB,CAAC,CAAC;QACL,CAAC;QAGD,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;YACxB,OAAO;gBACL,MAAM,EAAE,mBAAiB;gBACzB,OAAO,EAAE;oBACP,wBAAU;
|
|
1
|
+
{"version":3,"file":"horizon-auth.module.js","sourceRoot":"","sources":["../../src/lib/horizon-auth.module.ts"],"names":[],"mappings":"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"}
|