@ackplus/nest-auth 0.0.39 → 0.0.40

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 (178) hide show
  1. package/README.md +226 -0
  2. package/package.json +2 -2
  3. package/src/index.js +12 -0
  4. package/src/index.js.map +1 -0
  5. package/src/lib/auth/auth.module.js +52 -0
  6. package/src/lib/auth/auth.module.js.map +1 -0
  7. package/src/lib/auth/controllers/auth.controller.js +189 -0
  8. package/src/lib/auth/controllers/auth.controller.js.map +1 -0
  9. package/src/lib/auth/controllers/mfa.controller.js +130 -0
  10. package/src/lib/auth/controllers/mfa.controller.js.map +1 -0
  11. package/src/lib/auth/dto/index.js +1 -0
  12. package/src/lib/auth/dto/index.js.map +1 -0
  13. package/src/lib/auth/dto/requests/forgot-password.request.dto.js +30 -0
  14. package/src/lib/auth/dto/requests/forgot-password.request.dto.js.map +1 -0
  15. package/src/lib/auth/dto/requests/login.request.dto.js +34 -0
  16. package/src/lib/auth/dto/requests/login.request.dto.js.map +1 -0
  17. package/src/lib/auth/dto/requests/refresh-token.request.dto.js +15 -0
  18. package/src/lib/auth/dto/requests/refresh-token.request.dto.js.map +1 -0
  19. package/src/lib/auth/dto/requests/reset-password.request.dto.js +42 -0
  20. package/src/lib/auth/dto/requests/reset-password.request.dto.js.map +1 -0
  21. package/src/lib/auth/dto/requests/send-mfa-code.request.dto.js +16 -0
  22. package/src/lib/auth/dto/requests/send-mfa-code.request.dto.js.map +1 -0
  23. package/src/lib/auth/dto/requests/signup.request.dto.js +37 -0
  24. package/src/lib/auth/dto/requests/signup.request.dto.js.map +1 -0
  25. package/src/lib/auth/dto/requests/social-login.request.dto.js +16 -0
  26. package/src/lib/auth/dto/requests/social-login.request.dto.js.map +1 -0
  27. package/src/lib/auth/dto/requests/verify-2fa.request.dto.js +21 -0
  28. package/src/lib/auth/dto/requests/verify-2fa.request.dto.js.map +1 -0
  29. package/src/lib/auth/dto/requests/verify-totp-setup.request.dto.js +20 -0
  30. package/src/lib/auth/dto/requests/verify-totp-setup.request.dto.js.map +1 -0
  31. package/src/lib/auth/dto/responses/auth.response.dto.js +50 -0
  32. package/src/lib/auth/dto/responses/auth.response.dto.js.map +1 -0
  33. package/src/lib/auth/entities/mfa-secret.entity.js +50 -0
  34. package/src/lib/auth/entities/mfa-secret.entity.js.map +1 -0
  35. package/src/lib/auth/entities/otp.entity.js +50 -0
  36. package/src/lib/auth/entities/otp.entity.js.map +1 -0
  37. package/src/lib/auth/events/logged-out-all.event.js +10 -0
  38. package/src/lib/auth/events/logged-out-all.event.js.map +1 -0
  39. package/src/lib/auth/events/logged-out.event.js +10 -0
  40. package/src/lib/auth/events/logged-out.event.js.map +1 -0
  41. package/src/lib/auth/events/password-reset-requested.event.js +10 -0
  42. package/src/lib/auth/events/password-reset-requested.event.js.map +1 -0
  43. package/src/lib/auth/events/password-reset.event.js +10 -0
  44. package/src/lib/auth/events/password-reset.event.js.map +1 -0
  45. package/src/lib/auth/events/user-2fa-verified.event.js +10 -0
  46. package/src/lib/auth/events/user-2fa-verified.event.js.map +1 -0
  47. package/src/lib/auth/events/user-logged-in.event.js +10 -0
  48. package/src/lib/auth/events/user-logged-in.event.js.map +1 -0
  49. package/src/lib/auth/events/user-refresh-token.event.js +10 -0
  50. package/src/lib/auth/events/user-refresh-token.event.js.map +1 -0
  51. package/src/lib/auth/index.js +20 -0
  52. package/src/lib/auth/index.js.map +1 -0
  53. package/src/lib/auth/services/auth.service.js +396 -0
  54. package/src/lib/auth/services/auth.service.js.map +1 -0
  55. package/src/lib/auth/services/cookie.service.js +43 -0
  56. package/src/lib/auth/services/cookie.service.js.map +1 -0
  57. package/src/lib/auth/services/mfa.service.js +255 -0
  58. package/src/lib/auth/services/mfa.service.js.map +1 -0
  59. package/src/lib/auth.constants.js +43 -0
  60. package/src/lib/auth.constants.js.map +1 -0
  61. package/src/lib/core/core.module.js +67 -0
  62. package/src/lib/core/core.module.js.map +1 -0
  63. package/src/lib/core/decorators/role.decorator.js +14 -0
  64. package/src/lib/core/decorators/role.decorator.js.map +1 -0
  65. package/src/lib/core/decorators/skip-mfa.decorator.js +8 -0
  66. package/src/lib/core/decorators/skip-mfa.decorator.js.map +1 -0
  67. package/src/lib/core/dto/message.response.dto.js +13 -0
  68. package/src/lib/core/dto/message.response.dto.js.map +1 -0
  69. package/src/lib/core/entities.d.ts +1 -1
  70. package/src/lib/core/entities.js +34 -0
  71. package/src/lib/core/entities.js.map +1 -0
  72. package/src/lib/core/guards/auth.guard.js +135 -0
  73. package/src/lib/core/guards/auth.guard.js.map +1 -0
  74. package/src/lib/core/guards/role.guard.js +40 -0
  75. package/src/lib/core/guards/role.guard.js.map +1 -0
  76. package/src/lib/core/index.js +27 -0
  77. package/src/lib/core/index.js.map +1 -0
  78. package/src/lib/core/interfaces/auth-module-options.interface.js +3 -0
  79. package/src/lib/core/interfaces/auth-module-options.interface.js.map +1 -0
  80. package/src/lib/core/interfaces/mfa-options.interface.js +10 -0
  81. package/src/lib/core/interfaces/mfa-options.interface.js.map +1 -0
  82. package/src/lib/core/interfaces/otp.interface.js +10 -0
  83. package/src/lib/core/interfaces/otp.interface.js.map +1 -0
  84. package/src/lib/core/interfaces/session-options.interface.js +9 -0
  85. package/src/lib/core/interfaces/session-options.interface.js.map +1 -0
  86. package/src/lib/core/interfaces/token-payload.interface.js +3 -0
  87. package/src/lib/core/interfaces/token-payload.interface.js.map +1 -0
  88. package/src/lib/core/providers/apple-auth.provider.js +58 -0
  89. package/src/lib/core/providers/apple-auth.provider.js.map +1 -0
  90. package/src/lib/core/providers/base-auth.provider.js +41 -0
  91. package/src/lib/core/providers/base-auth.provider.js.map +1 -0
  92. package/src/lib/core/providers/email-auth.provider.js +42 -0
  93. package/src/lib/core/providers/email-auth.provider.js.map +1 -0
  94. package/src/lib/core/providers/facebook-auth.provider.js +58 -0
  95. package/src/lib/core/providers/facebook-auth.provider.js.map +1 -0
  96. package/src/lib/core/providers/google-auth.provider.js +60 -0
  97. package/src/lib/core/providers/google-auth.provider.js.map +1 -0
  98. package/src/lib/core/providers/jwt-auth.provider.js +51 -0
  99. package/src/lib/core/providers/jwt-auth.provider.js.map +1 -0
  100. package/src/lib/core/providers/phone-auth.provider.js +45 -0
  101. package/src/lib/core/providers/phone-auth.provider.js.map +1 -0
  102. package/src/lib/core/services/auth-provider-registry.service.js +72 -0
  103. package/src/lib/core/services/auth-provider-registry.service.js.map +1 -0
  104. package/src/lib/core/services/jwt.service.js +93 -0
  105. package/src/lib/core/services/jwt.service.js.map +1 -0
  106. package/src/lib/nest-auth.module.js +118 -0
  107. package/src/lib/nest-auth.module.js.map +1 -0
  108. package/src/lib/request-context/request-context.js +108 -0
  109. package/src/lib/request-context/request-context.js.map +1 -0
  110. package/src/lib/request-context/request-context.middleware.js +16 -0
  111. package/src/lib/request-context/request-context.middleware.js.map +1 -0
  112. package/src/lib/role/entities/permission.entity.js +42 -0
  113. package/src/lib/role/entities/permission.entity.js.map +1 -0
  114. package/src/lib/role/entities/role.entity.js +106 -0
  115. package/src/lib/role/entities/role.entity.js.map +1 -0
  116. package/src/lib/role/index.js +6 -0
  117. package/src/lib/role/index.js.map +1 -0
  118. package/src/lib/role/role.module.js +22 -0
  119. package/src/lib/role/role.module.js.map +1 -0
  120. package/src/lib/role/services/role.service.js +220 -0
  121. package/src/lib/role/services/role.service.js.map +1 -0
  122. package/src/lib/session/entities/session.entity.js +63 -0
  123. package/src/lib/session/entities/session.entity.js.map +1 -0
  124. package/src/lib/session/index.js +8 -0
  125. package/src/lib/session/index.js.map +1 -0
  126. package/src/lib/session/services/base-session.service.js +66 -0
  127. package/src/lib/session/services/base-session.service.js.map +1 -0
  128. package/src/lib/session/services/database-session.service.js +55 -0
  129. package/src/lib/session/services/database-session.service.js.map +1 -0
  130. package/src/lib/session/services/redis-session.service.js +120 -0
  131. package/src/lib/session/services/redis-session.service.js.map +1 -0
  132. package/src/lib/session/session.module.js +33 -0
  133. package/src/lib/session/session.module.js.map +1 -0
  134. package/src/lib/tenant/entities/tenant.entity.js +44 -0
  135. package/src/lib/tenant/entities/tenant.entity.js.map +1 -0
  136. package/src/lib/tenant/events/tenant-created.event.js +10 -0
  137. package/src/lib/tenant/events/tenant-created.event.js.map +1 -0
  138. package/src/lib/tenant/events/tenant-deleted.event.js +10 -0
  139. package/src/lib/tenant/events/tenant-deleted.event.js.map +1 -0
  140. package/src/lib/tenant/events/tenant-updated.event.js +10 -0
  141. package/src/lib/tenant/events/tenant-updated.event.js.map +1 -0
  142. package/src/lib/tenant/index.js +7 -0
  143. package/src/lib/tenant/index.js.map +1 -0
  144. package/src/lib/tenant/services/tenant.service.js +136 -0
  145. package/src/lib/tenant/services/tenant.service.js.map +1 -0
  146. package/src/lib/tenant/tenant.module.js +27 -0
  147. package/src/lib/tenant/tenant.module.js.map +1 -0
  148. package/src/lib/user/dto/requests/update-user.dto.js +24 -0
  149. package/src/lib/user/dto/requests/update-user.dto.js.map +1 -0
  150. package/src/lib/user/entities/access-key.entity.js +63 -0
  151. package/src/lib/user/entities/access-key.entity.js.map +1 -0
  152. package/src/lib/user/entities/auth-identity.entity.js +47 -0
  153. package/src/lib/user/entities/auth-identity.entity.js.map +1 -0
  154. package/src/lib/user/entities/user.entity.js +189 -0
  155. package/src/lib/user/entities/user.entity.js.map +1 -0
  156. package/src/lib/user/events/user-created.event.js +10 -0
  157. package/src/lib/user/events/user-created.event.js.map +1 -0
  158. package/src/lib/user/events/user-deleted.event.js +10 -0
  159. package/src/lib/user/events/user-deleted.event.js.map +1 -0
  160. package/src/lib/user/events/user-registered.event.js +10 -0
  161. package/src/lib/user/events/user-registered.event.js.map +1 -0
  162. package/src/lib/user/events/user-updated.event.js +10 -0
  163. package/src/lib/user/events/user-updated.event.js.map +1 -0
  164. package/src/lib/user/index.js +8 -0
  165. package/src/lib/user/index.js.map +1 -0
  166. package/src/lib/user/services/access-key.service.js +119 -0
  167. package/src/lib/user/services/access-key.service.js.map +1 -0
  168. package/src/lib/user/services/user.service.js +217 -0
  169. package/src/lib/user/services/user.service.js.map +1 -0
  170. package/src/lib/user/user.module.js +32 -0
  171. package/src/lib/user/user.module.js.map +1 -0
  172. package/src/lib/utils/database.utils.js +8 -0
  173. package/src/lib/utils/database.utils.js.map +1 -0
  174. package/src/lib/utils/otp.js +7 -0
  175. package/src/lib/utils/otp.js.map +1 -0
  176. package/tsconfig.tsbuildinfo +1 -0
  177. package/index.cjs.d.ts +0 -1
  178. package/index.cjs.js +0 -28350
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.JwtService = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const common_1 = require("@nestjs/common");
6
+ const jsonwebtoken_1 = tslib_1.__importDefault(require("jsonwebtoken"));
7
+ const auth_constants_1 = require("../../auth.constants");
8
+ const ms_1 = tslib_1.__importDefault(require("ms"));
9
+ let JwtService = class JwtService {
10
+ constructor(options) {
11
+ this.options = options;
12
+ }
13
+ async generateAccessToken(payload) {
14
+ return new Promise((resolve, reject) => {
15
+ jsonwebtoken_1.default.sign({
16
+ ...payload,
17
+ type: 'access',
18
+ exp: Math.floor(Date.now() / 1000) + (0, ms_1.default)(this.options.session.sessionExpiry),
19
+ iat: Math.floor(Date.now() / 1000),
20
+ }, this.options.jwt.secret, (err, token) => {
21
+ if (err)
22
+ reject(err);
23
+ else
24
+ resolve(token);
25
+ });
26
+ });
27
+ }
28
+ async generateRefreshToken(payload) {
29
+ return new Promise((resolve, reject) => {
30
+ jsonwebtoken_1.default.sign({
31
+ ...payload,
32
+ type: 'refresh',
33
+ exp: Math.floor(Date.now() / 1000) + (0, ms_1.default)(this.options.session.refreshTokenExpiry),
34
+ iat: Math.floor(Date.now() / 1000),
35
+ }, this.options.jwt.secret, (err, token) => {
36
+ if (err)
37
+ reject(err);
38
+ else
39
+ resolve(token);
40
+ });
41
+ });
42
+ }
43
+ async verifyToken(token) {
44
+ return new Promise((resolve, reject) => {
45
+ jsonwebtoken_1.default.verify(token, this.options.jwt.secret, (err, decoded) => {
46
+ if (err)
47
+ reject(err);
48
+ else
49
+ resolve(decoded);
50
+ });
51
+ });
52
+ }
53
+ async generateTokens(payload) {
54
+ const [accessToken, refreshToken] = await Promise.all([
55
+ this.generateAccessToken(payload),
56
+ this.generateRefreshToken(payload),
57
+ ]);
58
+ return {
59
+ accessToken,
60
+ refreshToken,
61
+ };
62
+ }
63
+ updateToken(token, payload) {
64
+ return new Promise((resolve, reject) => {
65
+ const decoded = this.decodeToken(token);
66
+ if (!decoded)
67
+ reject(new Error('Invalid token'));
68
+ else {
69
+ jsonwebtoken_1.default.sign({ ...decoded, ...payload }, this.options.jwt.secret, { expiresIn: this.options.session.sessionExpiry }, (err, token) => {
70
+ if (err)
71
+ reject(err);
72
+ else
73
+ resolve(token);
74
+ });
75
+ }
76
+ });
77
+ }
78
+ decodeToken(token) {
79
+ try {
80
+ return jsonwebtoken_1.default.decode(token);
81
+ }
82
+ catch (error) {
83
+ return null;
84
+ }
85
+ }
86
+ };
87
+ exports.JwtService = JwtService;
88
+ exports.JwtService = JwtService = tslib_1.__decorate([
89
+ (0, common_1.Injectable)(),
90
+ tslib_1.__param(0, (0, common_1.Inject)(auth_constants_1.AUTH_MODULE_OPTIONS)),
91
+ tslib_1.__metadata("design:paramtypes", [Object])
92
+ ], JwtService);
93
+ //# sourceMappingURL=jwt.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jwt.service.js","sourceRoot":"","sources":["../../../../../../../packages/nest-auth/src/lib/core/services/jwt.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,118 @@
1
+ "use strict";
2
+ var NestAuthModule_1;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.NestAuthModule = void 0;
5
+ const tslib_1 = require("tslib");
6
+ const common_1 = require("@nestjs/common");
7
+ const typeorm_1 = require("@nestjs/typeorm");
8
+ const core_1 = require("./core");
9
+ const event_emitter_1 = require("@nestjs/event-emitter");
10
+ const request_context_middleware_1 = require("./request-context/request-context.middleware");
11
+ const auth_module_1 = require("./auth/auth.module");
12
+ const user_module_1 = require("./user/user.module");
13
+ const role_module_1 = require("./role/role.module");
14
+ const session_module_1 = require("./session/session.module");
15
+ const tenant_module_1 = require("./tenant/tenant.module");
16
+ const mfa_options_interface_1 = require("./core/interfaces/mfa-options.interface");
17
+ const core_module_1 = require("./core/core.module");
18
+ const deepmerge_1 = tslib_1.__importDefault(require("deepmerge"));
19
+ let NestAuthModule = NestAuthModule_1 = class NestAuthModule {
20
+ static forRoot(options) {
21
+ const mergedOptions = this.getOptions(options);
22
+ return {
23
+ module: NestAuthModule_1,
24
+ imports: [
25
+ core_module_1.CoreModule.forRoot(mergedOptions),
26
+ auth_module_1.AuthModule,
27
+ tenant_module_1.TenantModule,
28
+ user_module_1.UserModule,
29
+ role_module_1.RoleModule,
30
+ session_module_1.SessionModule,
31
+ ],
32
+ exports: [
33
+ core_module_1.CoreModule,
34
+ auth_module_1.AuthModule,
35
+ tenant_module_1.TenantModule,
36
+ user_module_1.UserModule,
37
+ role_module_1.RoleModule,
38
+ session_module_1.SessionModule,
39
+ ],
40
+ };
41
+ }
42
+ static forRootAsync(options) {
43
+ return {
44
+ module: NestAuthModule_1,
45
+ imports: [
46
+ core_module_1.CoreModule.forRoot(options.useFactory()),
47
+ auth_module_1.AuthModule,
48
+ user_module_1.UserModule,
49
+ role_module_1.RoleModule,
50
+ session_module_1.SessionModule,
51
+ ...options.imports || [],
52
+ ],
53
+ exports: [
54
+ core_module_1.CoreModule,
55
+ auth_module_1.AuthModule,
56
+ user_module_1.UserModule,
57
+ role_module_1.RoleModule,
58
+ session_module_1.SessionModule,
59
+ ],
60
+ };
61
+ }
62
+ static getOptions(options) {
63
+ return (0, deepmerge_1.default)(this.moduleDefaultOptions, options);
64
+ }
65
+ configure(consumer) {
66
+ consumer.apply(request_context_middleware_1.RequestContextMiddleware).forRoutes('auth/*');
67
+ }
68
+ };
69
+ exports.NestAuthModule = NestAuthModule;
70
+ NestAuthModule.moduleDefaultOptions = {
71
+ passwordResetOtpExpiresIn: '15m',
72
+ session: {
73
+ storageType: core_1.SessionStorageType.DATABASE,
74
+ sessionExpiry: '1h',
75
+ refreshTokenExpiry: '30d',
76
+ },
77
+ jwt: {
78
+ secret: 'secret',
79
+ },
80
+ accessTokenType: 'header',
81
+ cookieOptions: {
82
+ httpOnly: true,
83
+ secure: false,
84
+ },
85
+ emailAuth: {
86
+ enabled: true,
87
+ },
88
+ mfa: {
89
+ enabled: false,
90
+ methods: [mfa_options_interface_1.MFAMethodEnum.EMAIL, mfa_options_interface_1.MFAMethodEnum.TOTP],
91
+ allowUserToggle: true,
92
+ allowMethodSelection: true,
93
+ otpLength: 6,
94
+ otpExpiresIn: '15m',
95
+ },
96
+ };
97
+ exports.NestAuthModule = NestAuthModule = NestAuthModule_1 = tslib_1.__decorate([
98
+ (0, common_1.Module)({
99
+ imports: [
100
+ typeorm_1.TypeOrmModule.forFeature(core_1.NestAuthEntities),
101
+ event_emitter_1.EventEmitterModule,
102
+ core_module_1.CoreModule,
103
+ auth_module_1.AuthModule,
104
+ tenant_module_1.TenantModule,
105
+ user_module_1.UserModule,
106
+ role_module_1.RoleModule,
107
+ session_module_1.SessionModule,
108
+ ],
109
+ exports: [
110
+ auth_module_1.AuthModule,
111
+ tenant_module_1.TenantModule,
112
+ user_module_1.UserModule,
113
+ role_module_1.RoleModule,
114
+ session_module_1.SessionModule,
115
+ ],
116
+ })
117
+ ], NestAuthModule);
118
+ //# sourceMappingURL=nest-auth.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nest-auth.module.js","sourceRoot":"","sources":["../../../../../packages/nest-auth/src/lib/nest-auth.module.ts"],"names":[],"mappings":";;;;;AAAA,2CAA2E;AAC3E,6CAAgD;AAChD,iCAA8D;AAE9D,yDAA2D;AAC3D,6FAAwF;AACxF,oDAAgD;AAChD,oDAAgD;AAChD,oDAAgD;AAChD,6DAAyD;AACzD,0DAAsD;AACtD,mFAAwE;AACxE,oDAAgD;AAChD,kEAAkC;AAqB3B,IAAM,cAAc,sBAApB,MAAM,cAAc;IA6BzB,MAAM,CAAC,OAAO,CAAC,OAA0B;QACvC,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAE/C,OAAO;YACL,MAAM,EAAE,gBAAc;YACtB,OAAO,EAAE;gBACP,wBAAU,CAAC,OAAO,CAAC,aAAa,CAAC;gBACjC,wBAAU;gBACV,4BAAY;gBACZ,wBAAU;gBACV,wBAAU;gBACV,8BAAa;aACd;YACD,OAAO,EAAE;gBACP,wBAAU;gBACV,wBAAU;gBACV,4BAAY;gBACZ,wBAAU;gBACV,wBAAU;gBACV,8BAAa;aACd;SACF,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,YAAY,CAAC,OAA+B;QACjD,OAAO;YACL,MAAM,EAAE,gBAAc;YACtB,OAAO,EAAE;gBACP,wBAAU,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,EAAuB,CAAC;gBAC7D,wBAAU;gBACV,wBAAU;gBACV,wBAAU;gBACV,8BAAa;gBACb,GAAG,OAAO,CAAC,OAAO,IAAI,EAAE;aACzB;YACD,OAAO,EAAE;gBACP,wBAAU;gBACV,wBAAU;gBACV,wBAAU;gBACV,wBAAU;gBACV,8BAAa;aACd;SACF,CAAC;IACJ,CAAC;IAEO,MAAM,CAAC,UAAU,CAAC,OAA0B;QAClD,OAAO,IAAA,mBAAS,EAAC,IAAI,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAC;IACvD,CAAC;IAED,SAAS,CAAC,QAA4B;QACpC,QAAQ,CAAC,KAAK,CAAC,qDAAwB,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IAC/D,CAAC;;AAhFU,wCAAc;AAClB,mCAAoB,GAA+B;IACxD,yBAAyB,EAAE,KAAK;IAChC,OAAO,EAAE;QACP,WAAW,EAAE,yBAAkB,CAAC,QAAQ;QACxC,aAAa,EAAE,IAAI;QACnB,kBAAkB,EAAE,KAAK;KAC1B;IACD,GAAG,EAAE;QACH,MAAM,EAAE,QAAQ;KACjB;IACD,eAAe,EAAE,QAAQ;IACzB,aAAa,EAAE;QACb,QAAQ,EAAE,IAAI;QACd,MAAM,EAAE,KAAK;KACd;IACD,SAAS,EAAE;QACT,OAAO,EAAE,IAAI;KACd;IACD,GAAG,EAAE;QACH,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,CAAC,qCAAa,CAAC,KAAK,EAAE,qCAAa,CAAC,IAAI,CAAC;QAClD,eAAe,EAAE,IAAI;QACrB,oBAAoB,EAAE,IAAI;QAC1B,SAAS,EAAE,CAAC;QACZ,YAAY,EAAE,KAAK;KACpB;CACF,AA1B0B,CA0BzB;yBA3BS,cAAc;IAnB1B,IAAA,eAAM,EAAC;QACN,OAAO,EAAE;YACP,uBAAa,CAAC,UAAU,CAAC,uBAAgB,CAAC;YAC1C,kCAAkB;YAClB,wBAAU;YACV,wBAAU;YACV,4BAAY;YACZ,wBAAU;YACV,wBAAU;YACV,8BAAa;SACd;QACD,OAAO,EAAE;YACP,wBAAU;YACV,4BAAY;YACZ,wBAAU;YACV,wBAAU;YACV,8BAAa;SACd;KACF,CAAC;GACW,cAAc,CAiF1B"}
@@ -0,0 +1,108 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RequestContext = void 0;
4
+ const async_hooks_1 = require("async_hooks");
5
+ class RequestContext {
6
+ constructor(request, response) {
7
+ this.id = Math.random();
8
+ this.request = request;
9
+ this.response = response;
10
+ }
11
+ static create(request, response, next) {
12
+ const context = new RequestContext(request, response);
13
+ RequestContext.storage.run(context, () => next());
14
+ }
15
+ static current() {
16
+ return RequestContext.storage.getStore();
17
+ }
18
+ static currentRequest() {
19
+ const requestContext = RequestContext.current();
20
+ return requestContext ? requestContext.request : null;
21
+ }
22
+ static currentUser() {
23
+ const request = RequestContext.currentRequest();
24
+ if (!request['user']) {
25
+ return null;
26
+ }
27
+ return {
28
+ id: request['user'].sub,
29
+ ...request['user']
30
+ };
31
+ }
32
+ static currentSession() {
33
+ const request = RequestContext.currentRequest();
34
+ return request ? request['session'] : null;
35
+ }
36
+ static getDeviceInfo() {
37
+ return {
38
+ deviceName: this.getDeviceName(),
39
+ ipAddress: this.getIpAddress(),
40
+ browser: this.getBrowser(),
41
+ };
42
+ }
43
+ static getDeviceName() {
44
+ const request = this.currentRequest();
45
+ if (!request) {
46
+ return 'Unknown Device';
47
+ }
48
+ const userAgent = request.headers['user-agent'] || 'unknown';
49
+ if (userAgent.includes('Windows')) {
50
+ return 'Windows';
51
+ }
52
+ else if (userAgent.includes('Macintosh')) {
53
+ return 'Mac';
54
+ }
55
+ else if (userAgent.includes('Linux')) {
56
+ return 'Linux';
57
+ }
58
+ else if (userAgent.includes('Android')) {
59
+ return 'Android';
60
+ }
61
+ else if (userAgent.includes('iPhone') || userAgent.includes('iPad')) {
62
+ return 'iOS';
63
+ }
64
+ return 'Unknown Device';
65
+ }
66
+ static getBrowser() {
67
+ const request = this.currentRequest();
68
+ if (!request) {
69
+ return 'unknown';
70
+ }
71
+ const userAgent = request.headers['user-agent'] || 'unknown';
72
+ if (userAgent.includes('Chrome') && !userAgent.includes('Chromium')) {
73
+ return 'Chrome';
74
+ }
75
+ if (userAgent.includes('Firefox')) {
76
+ return 'Firefox';
77
+ }
78
+ if (userAgent.includes('Safari') && !userAgent.includes('Chrome')) {
79
+ return 'Safari';
80
+ }
81
+ if (userAgent.includes('Edg')) {
82
+ return 'Edge';
83
+ }
84
+ if (userAgent.includes('Opera') || userAgent.includes('OPR')) {
85
+ return 'Opera';
86
+ }
87
+ if (userAgent.includes('MSIE') || userAgent.includes('Trident/')) {
88
+ return 'Internet Explorer';
89
+ }
90
+ if (userAgent.includes('Brave')) {
91
+ return 'Brave';
92
+ }
93
+ return 'Unknown Browser';
94
+ }
95
+ static getIpAddress() {
96
+ const request = this.currentRequest();
97
+ if (request) {
98
+ return request.ip ||
99
+ request.headers['x-forwarded-for']?.toString() ||
100
+ request.connection.remoteAddress ||
101
+ 'unknown';
102
+ }
103
+ return 'unknown';
104
+ }
105
+ }
106
+ exports.RequestContext = RequestContext;
107
+ RequestContext.storage = new async_hooks_1.AsyncLocalStorage();
108
+ //# sourceMappingURL=request-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request-context.js","sourceRoot":"","sources":["../../../../../../packages/nest-auth/src/lib/request-context/request-context.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RequestContextMiddleware = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const common_1 = require("@nestjs/common");
6
+ const request_context_1 = require("./request-context");
7
+ let RequestContextMiddleware = class RequestContextMiddleware {
8
+ use(req, res, next) {
9
+ request_context_1.RequestContext.create(req, res, next);
10
+ }
11
+ };
12
+ exports.RequestContextMiddleware = RequestContextMiddleware;
13
+ exports.RequestContextMiddleware = RequestContextMiddleware = tslib_1.__decorate([
14
+ (0, common_1.Injectable)()
15
+ ], RequestContextMiddleware);
16
+ //# sourceMappingURL=request-context.middleware.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request-context.middleware.js","sourceRoot":"","sources":["../../../../../../packages/nest-auth/src/lib/request-context/request-context.middleware.ts"],"names":[],"mappings":";;;;AAAA,2CAA4D;AAE5D,uDAAmD;AAI5C,IAAM,wBAAwB,GAA9B,MAAM,wBAAwB;IAEjC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI;QACd,gCAAc,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;IAC1C,CAAC;CAEJ,CAAA;AANY,4DAAwB;mCAAxB,wBAAwB;IADpC,IAAA,mBAAU,GAAE;GACA,wBAAwB,CAMpC"}
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Permission = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const typeorm_1 = require("typeorm");
6
+ const role_entity_1 = require("./role.entity");
7
+ const auth_constants_1 = require("../../auth.constants");
8
+ let Permission = class Permission extends typeorm_1.BaseEntity {
9
+ };
10
+ exports.Permission = Permission;
11
+ tslib_1.__decorate([
12
+ (0, typeorm_1.PrimaryGeneratedColumn)('uuid'),
13
+ tslib_1.__metadata("design:type", String)
14
+ ], Permission.prototype, "id", void 0);
15
+ tslib_1.__decorate([
16
+ (0, typeorm_1.Column)(),
17
+ tslib_1.__metadata("design:type", String)
18
+ ], Permission.prototype, "name", void 0);
19
+ tslib_1.__decorate([
20
+ (0, typeorm_1.Column)({ nullable: true }),
21
+ tslib_1.__metadata("design:type", String)
22
+ ], Permission.prototype, "description", void 0);
23
+ tslib_1.__decorate([
24
+ (0, typeorm_1.Column)({ nullable: true, default: auth_constants_1.DEFAULT_GUARD_NAME }),
25
+ tslib_1.__metadata("design:type", String)
26
+ ], Permission.prototype, "guard", void 0);
27
+ tslib_1.__decorate([
28
+ (0, typeorm_1.CreateDateColumn)(),
29
+ tslib_1.__metadata("design:type", Date)
30
+ ], Permission.prototype, "createdAt", void 0);
31
+ tslib_1.__decorate([
32
+ (0, typeorm_1.UpdateDateColumn)(),
33
+ tslib_1.__metadata("design:type", Date)
34
+ ], Permission.prototype, "updatedAt", void 0);
35
+ tslib_1.__decorate([
36
+ (0, typeorm_1.ManyToMany)(() => role_entity_1.Role, role => role.permissions),
37
+ tslib_1.__metadata("design:type", Array)
38
+ ], Permission.prototype, "roles", void 0);
39
+ exports.Permission = Permission = tslib_1.__decorate([
40
+ (0, typeorm_1.Entity)('nest_auth_permissions')
41
+ ], Permission);
42
+ //# sourceMappingURL=permission.entity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permission.entity.js","sourceRoot":"","sources":["../../../../../../../packages/nest-auth/src/lib/role/entities/permission.entity.ts"],"names":[],"mappings":";;;;AAAA,qCAA6H;AAC7H,+CAAqC;AACrC,yDAA0D;AAGnD,IAAM,UAAU,GAAhB,MAAM,UAAW,SAAQ,oBAAU;CAqBzC,CAAA;AArBY,gCAAU;AAEnB;IADC,IAAA,gCAAsB,EAAC,MAAM,CAAC;;sCACpB;AAGX;IADC,IAAA,gBAAM,GAAE;;wCACI;AAGb;IADC,IAAA,gBAAM,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;+CACP;AAGpB;IADC,IAAA,gBAAM,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,mCAAkB,EAAE,CAAC;;yCAC1C;AAGd;IADC,IAAA,0BAAgB,GAAE;sCACR,IAAI;6CAAC;AAGhB;IADC,IAAA,0BAAgB,GAAE;sCACR,IAAI;6CAAC;AAGhB;IADC,IAAA,oBAAU,EAAC,GAAG,EAAE,CAAC,kBAAI,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC;;yCACnC;qBApBL,UAAU;IADtB,IAAA,gBAAM,EAAC,uBAAuB,CAAC;GACnB,UAAU,CAqBtB"}
@@ -0,0 +1,106 @@
1
+ "use strict";
2
+ var Role_1;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.Role = void 0;
5
+ const tslib_1 = require("tslib");
6
+ const typeorm_1 = require("typeorm");
7
+ const lodash_1 = require("lodash");
8
+ const auth_constants_1 = require("../../auth.constants");
9
+ const tenant_entity_1 = require("../../tenant/entities/tenant.entity");
10
+ const common_1 = require("@nestjs/common");
11
+ const user_entity_1 = require("../../user/entities/user.entity");
12
+ const permission_entity_1 = require("./permission.entity");
13
+ let Role = Role_1 = class Role extends typeorm_1.BaseEntity {
14
+ static async createRole(name, guard = auth_constants_1.DEFAULT_GUARD_NAME, isSystem = false, tenantId) {
15
+ const existingSystemRole = await Role_1.findOne({
16
+ where: { name, isSystem: true }
17
+ });
18
+ if (existingSystemRole) {
19
+ throw new common_1.ConflictException(`Cannot create role with name '${name}' as it conflicts with a system role`);
20
+ }
21
+ const role = new Role_1();
22
+ role.name = name;
23
+ role.guard = guard;
24
+ role.isSystem = isSystem;
25
+ role.tenantId = isSystem ? null : tenantId;
26
+ await role.save();
27
+ return role;
28
+ }
29
+ async syncPermissions(permissionIds) {
30
+ const newPermissions = Array.isArray(permissionIds) ? permissionIds : [permissionIds];
31
+ this.permissions = newPermissions.map(permissionId => permission_entity_1.Permission.create({
32
+ id: permissionId,
33
+ }));
34
+ }
35
+ async removePermissions(permissionIds) {
36
+ const removingPermissions = Array.isArray(permissionIds) ? permissionIds : [permissionIds];
37
+ this.permissions = this.permissions.filter(permission => !removingPermissions.includes(permission.id));
38
+ }
39
+ async attachPermissions(permissionsIds) {
40
+ const existingPermissions = await this.permissions.map(permission => permission_entity_1.Permission.create({
41
+ id: permission.id,
42
+ }));
43
+ const newPermissions = Array.isArray(permissionsIds) ? permissionsIds : [permissionsIds];
44
+ const newPermissionsEntities = newPermissions.map(permissionId => permission_entity_1.Permission.create({
45
+ id: permissionId,
46
+ }));
47
+ this.permissions = (0, lodash_1.uniqBy)([...existingPermissions, ...newPermissionsEntities], 'id');
48
+ }
49
+ };
50
+ exports.Role = Role;
51
+ tslib_1.__decorate([
52
+ (0, typeorm_1.PrimaryGeneratedColumn)('uuid'),
53
+ tslib_1.__metadata("design:type", String)
54
+ ], Role.prototype, "id", void 0);
55
+ tslib_1.__decorate([
56
+ (0, typeorm_1.Column)(),
57
+ tslib_1.__metadata("design:type", String)
58
+ ], Role.prototype, "name", void 0);
59
+ tslib_1.__decorate([
60
+ (0, typeorm_1.Column)({ nullable: true, default: auth_constants_1.DEFAULT_GUARD_NAME }),
61
+ tslib_1.__metadata("design:type", String)
62
+ ], Role.prototype, "guard", void 0);
63
+ tslib_1.__decorate([
64
+ (0, typeorm_1.Column)({ nullable: true }),
65
+ (0, typeorm_1.RelationId)((role) => role.tenant),
66
+ tslib_1.__metadata("design:type", String)
67
+ ], Role.prototype, "tenantId", void 0);
68
+ tslib_1.__decorate([
69
+ (0, typeorm_1.ManyToOne)(() => tenant_entity_1.Tenant),
70
+ tslib_1.__metadata("design:type", tenant_entity_1.Tenant)
71
+ ], Role.prototype, "tenant", void 0);
72
+ tslib_1.__decorate([
73
+ (0, typeorm_1.Column)({ default: false }),
74
+ tslib_1.__metadata("design:type", Boolean)
75
+ ], Role.prototype, "isSystem", void 0);
76
+ tslib_1.__decorate([
77
+ (0, typeorm_1.Column)({ default: true }),
78
+ tslib_1.__metadata("design:type", Boolean)
79
+ ], Role.prototype, "isActive", void 0);
80
+ tslib_1.__decorate([
81
+ (0, typeorm_1.CreateDateColumn)(),
82
+ tslib_1.__metadata("design:type", Date)
83
+ ], Role.prototype, "createdAt", void 0);
84
+ tslib_1.__decorate([
85
+ (0, typeorm_1.UpdateDateColumn)(),
86
+ tslib_1.__metadata("design:type", Date)
87
+ ], Role.prototype, "updatedAt", void 0);
88
+ tslib_1.__decorate([
89
+ (0, typeorm_1.ManyToMany)(() => permission_entity_1.Permission, permission => permission.roles),
90
+ (0, typeorm_1.JoinTable)({
91
+ name: 'nest_auth_role_nest_auth_permissions'
92
+ }),
93
+ tslib_1.__metadata("design:type", Array)
94
+ ], Role.prototype, "permissions", void 0);
95
+ tslib_1.__decorate([
96
+ (0, typeorm_1.ManyToMany)(() => user_entity_1.User, user => user.roles),
97
+ (0, typeorm_1.JoinTable)({
98
+ name: 'nest_auth_role_nest_auth_users'
99
+ }),
100
+ tslib_1.__metadata("design:type", Array)
101
+ ], Role.prototype, "users", void 0);
102
+ exports.Role = Role = Role_1 = tslib_1.__decorate([
103
+ (0, typeorm_1.Entity)('nest_auth_roles'),
104
+ (0, typeorm_1.Unique)(['name', 'guard', 'tenantId'])
105
+ ], Role);
106
+ //# sourceMappingURL=role.entity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"role.entity.js","sourceRoot":"","sources":["../../../../../../../packages/nest-auth/src/lib/role/entities/role.entity.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./services/role.service"), exports);
5
+ tslib_1.__exportStar(require("./role.module"), exports);
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/nest-auth/src/lib/role/index.ts"],"names":[],"mappings":";;;AAOA,kEAAwC;AAGxC,wDAA8B"}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RoleModule = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const common_1 = require("@nestjs/common");
6
+ const typeorm_1 = require("@nestjs/typeorm");
7
+ const role_entity_1 = require("./entities/role.entity");
8
+ const permission_entity_1 = require("./entities/permission.entity");
9
+ const role_service_1 = require("./services/role.service");
10
+ let RoleModule = class RoleModule {
11
+ };
12
+ exports.RoleModule = RoleModule;
13
+ exports.RoleModule = RoleModule = tslib_1.__decorate([
14
+ (0, common_1.Module)({
15
+ imports: [
16
+ typeorm_1.TypeOrmModule.forFeature([role_entity_1.Role, permission_entity_1.Permission]),
17
+ ],
18
+ providers: [role_service_1.RoleService],
19
+ exports: [role_service_1.RoleService],
20
+ })
21
+ ], RoleModule);
22
+ //# sourceMappingURL=role.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"role.module.js","sourceRoot":"","sources":["../../../../../../packages/nest-auth/src/lib/role/role.module.ts"],"names":[],"mappings":";;;;AAAA,2CAAwC;AACxC,6CAAgD;AAChD,wDAA8C;AAC9C,oEAA0D;AAC1D,0DAAsD;AAS/C,IAAM,UAAU,GAAhB,MAAM,UAAU;CAAI,CAAA;AAAd,gCAAU;qBAAV,UAAU;IAPtB,IAAA,eAAM,EAAC;QACJ,OAAO,EAAE;YACL,uBAAa,CAAC,UAAU,CAAC,CAAC,kBAAI,EAAE,8BAAU,CAAC,CAAC;SAC/C;QACD,SAAS,EAAE,CAAC,0BAAW,CAAC;QACxB,OAAO,EAAE,CAAC,0BAAW,CAAC;KACzB,CAAC;GACW,UAAU,CAAI"}