@ackplus/nest-auth 0.0.38 → 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 -105236
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Tenant = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const typeorm_1 = require("typeorm");
6
+ let Tenant = class Tenant {
7
+ };
8
+ exports.Tenant = Tenant;
9
+ tslib_1.__decorate([
10
+ (0, typeorm_1.PrimaryGeneratedColumn)('uuid'),
11
+ tslib_1.__metadata("design:type", String)
12
+ ], Tenant.prototype, "id", void 0);
13
+ tslib_1.__decorate([
14
+ (0, typeorm_1.Column)(),
15
+ tslib_1.__metadata("design:type", String)
16
+ ], Tenant.prototype, "name", void 0);
17
+ tslib_1.__decorate([
18
+ (0, typeorm_1.Column)({ unique: true, nullable: true }),
19
+ tslib_1.__metadata("design:type", String)
20
+ ], Tenant.prototype, "domain", void 0);
21
+ tslib_1.__decorate([
22
+ (0, typeorm_1.Column)({ nullable: true }),
23
+ tslib_1.__metadata("design:type", String)
24
+ ], Tenant.prototype, "description", void 0);
25
+ tslib_1.__decorate([
26
+ (0, typeorm_1.Column)({ type: 'simple-json', nullable: true, default: '{}' }),
27
+ tslib_1.__metadata("design:type", Object)
28
+ ], Tenant.prototype, "metadata", void 0);
29
+ tslib_1.__decorate([
30
+ (0, typeorm_1.Column)({ default: true }),
31
+ tslib_1.__metadata("design:type", Boolean)
32
+ ], Tenant.prototype, "isActive", void 0);
33
+ tslib_1.__decorate([
34
+ (0, typeorm_1.CreateDateColumn)(),
35
+ tslib_1.__metadata("design:type", Date)
36
+ ], Tenant.prototype, "createdAt", void 0);
37
+ tslib_1.__decorate([
38
+ (0, typeorm_1.UpdateDateColumn)(),
39
+ tslib_1.__metadata("design:type", Date)
40
+ ], Tenant.prototype, "updatedAt", void 0);
41
+ exports.Tenant = Tenant = tslib_1.__decorate([
42
+ (0, typeorm_1.Entity)('nest_auth_tenants')
43
+ ], Tenant);
44
+ //# sourceMappingURL=tenant.entity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tenant.entity.js","sourceRoot":"","sources":["../../../../../../../packages/nest-auth/src/lib/tenant/entities/tenant.entity.ts"],"names":[],"mappings":";;;;AAAA,qCAAqG;AAG9F,IAAM,MAAM,GAAZ,MAAM,MAAM;CAwBlB,CAAA;AAxBY,wBAAM;AAEf;IADC,IAAA,gCAAsB,EAAC,MAAM,CAAC;;kCACpB;AAGX;IADC,IAAA,gBAAM,GAAE;;oCACI;AAGb;IADC,IAAA,gBAAM,EAAC,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;sCAC1B;AAGf;IADC,IAAA,gBAAM,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;2CACP;AAGpB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;;wCACjC;AAG9B;IADC,IAAA,gBAAM,EAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;;wCACR;AAGlB;IADC,IAAA,0BAAgB,GAAE;sCACR,IAAI;yCAAC;AAGhB;IADC,IAAA,0BAAgB,GAAE;sCACR,IAAI;yCAAC;iBAvBP,MAAM;IADlB,IAAA,gBAAM,EAAC,mBAAmB,CAAC;GACf,MAAM,CAwBlB"}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TenantCreatedEvent = void 0;
4
+ class TenantCreatedEvent {
5
+ constructor(payload) {
6
+ this.payload = payload;
7
+ }
8
+ }
9
+ exports.TenantCreatedEvent = TenantCreatedEvent;
10
+ //# sourceMappingURL=tenant-created.event.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tenant-created.event.js","sourceRoot":"","sources":["../../../../../../../packages/nest-auth/src/lib/tenant/events/tenant-created.event.ts"],"names":[],"mappings":";;;AAMA,MAAa,kBAAkB;IAC3B,YAA4B,OAAkC;QAAlC,YAAO,GAAP,OAAO,CAA2B;IAAI,CAAC;CACtE;AAFD,gDAEC"}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TenantDeletedEvent = void 0;
4
+ class TenantDeletedEvent {
5
+ constructor(payload) {
6
+ this.payload = payload;
7
+ }
8
+ }
9
+ exports.TenantDeletedEvent = TenantDeletedEvent;
10
+ //# sourceMappingURL=tenant-deleted.event.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tenant-deleted.event.js","sourceRoot":"","sources":["../../../../../../../packages/nest-auth/src/lib/tenant/events/tenant-deleted.event.ts"],"names":[],"mappings":";;;AAMA,MAAa,kBAAkB;IAC3B,YACoB,OAAkC;QAAlC,YAAO,GAAP,OAAO,CAA2B;IAClD,CAAC;CACR;AAJD,gDAIC"}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TenantUpdatedEvent = void 0;
4
+ class TenantUpdatedEvent {
5
+ constructor(payload) {
6
+ this.payload = payload;
7
+ }
8
+ }
9
+ exports.TenantUpdatedEvent = TenantUpdatedEvent;
10
+ //# sourceMappingURL=tenant-updated.event.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tenant-updated.event.js","sourceRoot":"","sources":["../../../../../../../packages/nest-auth/src/lib/tenant/events/tenant-updated.event.ts"],"names":[],"mappings":";;;AAOA,MAAa,kBAAkB;IAC3B,YACoB,OAAkC;QAAlC,YAAO,GAAP,OAAO,CAA2B;IAClD,CAAC;CACR;AAJD,gDAIC"}
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./entities/tenant.entity"), exports);
5
+ tslib_1.__exportStar(require("./services/tenant.service"), exports);
6
+ tslib_1.__exportStar(require("./tenant.module"), exports);
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/nest-auth/src/lib/tenant/index.ts"],"names":[],"mappings":";;;AACA,mEAAyC;AAGzC,oEAA0C;AAG1C,0DAAgC"}
@@ -0,0 +1,136 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TenantService = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const common_1 = require("@nestjs/common");
6
+ const typeorm_1 = require("@nestjs/typeorm");
7
+ const typeorm_2 = require("typeorm");
8
+ const tenant_entity_1 = require("../entities/tenant.entity");
9
+ const event_emitter_1 = require("@nestjs/event-emitter");
10
+ const tenant_created_event_1 = require("../events/tenant-created.event");
11
+ const tenant_updated_event_1 = require("../events/tenant-updated.event");
12
+ const tenant_deleted_event_1 = require("../events/tenant-deleted.event");
13
+ const auth_constants_1 = require("../../auth.constants");
14
+ let TenantService = class TenantService {
15
+ constructor(tenantRepository, eventEmitter) {
16
+ this.tenantRepository = tenantRepository;
17
+ this.eventEmitter = eventEmitter;
18
+ }
19
+ async createTenant(data) {
20
+ const { domain } = data;
21
+ const existingTenant = await this.tenantRepository.findOne({
22
+ where: { domain }
23
+ });
24
+ if (existingTenant) {
25
+ throw new common_1.ConflictException({
26
+ message: `Tenant with domain '${domain}' already exists`,
27
+ code: 'TENANT_ALREADY_EXISTS'
28
+ });
29
+ }
30
+ const tenant = this.tenantRepository.create(data);
31
+ await this.tenantRepository.save(tenant);
32
+ await this.eventEmitter.emitAsync(auth_constants_1.NestAuthEvents.TENANT_CREATED, new tenant_created_event_1.TenantCreatedEvent({
33
+ tenant
34
+ }));
35
+ return tenant;
36
+ }
37
+ async getTenantById(id, options) {
38
+ if (!id) {
39
+ return null;
40
+ }
41
+ const tenant = await this.tenantRepository.findOne({
42
+ ...(options ? options : {}),
43
+ where: { id }
44
+ });
45
+ if (!tenant) {
46
+ return null;
47
+ }
48
+ return tenant;
49
+ }
50
+ async getTenantByDomain(domain, options) {
51
+ if (!domain) {
52
+ return null;
53
+ }
54
+ const tenant = await this.tenantRepository.findOne({
55
+ ...(options ? options : {}),
56
+ where: { domain }
57
+ });
58
+ return tenant;
59
+ }
60
+ async getTenants(options) {
61
+ return this.tenantRepository.find(options);
62
+ }
63
+ async updateTenant(id, data) {
64
+ const tenant = await this.getTenantById(id);
65
+ if (!tenant) {
66
+ throw new common_1.NotFoundException({
67
+ message: `Tenant with ID ${id} not found`,
68
+ code: 'TENANT_NOT_FOUND'
69
+ });
70
+ }
71
+ if (data.domain && data.domain !== tenant.domain) {
72
+ const existingTenant = await this.getTenantByDomain(data.domain);
73
+ if (existingTenant && existingTenant.id !== tenant.id) {
74
+ throw new common_1.ConflictException({
75
+ message: `Tenant with domain '${data.domain}' already exists`,
76
+ code: 'TENANT_ALREADY_EXISTS'
77
+ });
78
+ }
79
+ }
80
+ Object.assign(tenant, data);
81
+ const updatedTenant = await this.tenantRepository.save(tenant);
82
+ await this.eventEmitter.emitAsync(auth_constants_1.NestAuthEvents.TENANT_UPDATED, new tenant_updated_event_1.TenantUpdatedEvent({
83
+ tenant: updatedTenant,
84
+ updatedFields: Object.keys(data)
85
+ }));
86
+ return updatedTenant;
87
+ }
88
+ async deleteTenant(id) {
89
+ const tenant = await this.getTenantById(id);
90
+ if (!tenant) {
91
+ throw new common_1.NotFoundException({
92
+ message: `Tenant with ID ${id} not found`,
93
+ code: 'TENANT_NOT_FOUND'
94
+ });
95
+ }
96
+ await this.eventEmitter.emitAsync(auth_constants_1.NestAuthEvents.TENANT_DELETED, new tenant_deleted_event_1.TenantDeletedEvent({
97
+ tenant
98
+ }));
99
+ await this.tenantRepository.remove(tenant);
100
+ }
101
+ async updateTenantStatus(id, isActive) {
102
+ const tenant = await this.getTenantById(id);
103
+ if (!tenant) {
104
+ throw new common_1.NotFoundException({
105
+ message: `Tenant with ID ${id} not found`,
106
+ code: 'TENANT_NOT_FOUND'
107
+ });
108
+ }
109
+ tenant.isActive = isActive;
110
+ const updatedTenant = await this.tenantRepository.save(tenant);
111
+ return updatedTenant;
112
+ }
113
+ async updateTenantMetadata(id, metadata) {
114
+ const tenant = await this.getTenantById(id);
115
+ if (!tenant) {
116
+ throw new common_1.NotFoundException({
117
+ message: `Tenant with ID ${id} not found`,
118
+ code: 'TENANT_NOT_FOUND'
119
+ });
120
+ }
121
+ tenant.metadata = {
122
+ ...tenant.metadata,
123
+ ...metadata
124
+ };
125
+ const updatedTenant = await this.tenantRepository.save(tenant);
126
+ return updatedTenant;
127
+ }
128
+ };
129
+ exports.TenantService = TenantService;
130
+ exports.TenantService = TenantService = tslib_1.__decorate([
131
+ (0, common_1.Injectable)(),
132
+ tslib_1.__param(0, (0, typeorm_1.InjectRepository)(tenant_entity_1.Tenant)),
133
+ tslib_1.__metadata("design:paramtypes", [typeorm_2.Repository,
134
+ event_emitter_1.EventEmitter2])
135
+ ], TenantService);
136
+ //# sourceMappingURL=tenant.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tenant.service.js","sourceRoot":"","sources":["../../../../../../../packages/nest-auth/src/lib/tenant/services/tenant.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TenantModule = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const common_1 = require("@nestjs/common");
6
+ const typeorm_1 = require("@nestjs/typeorm");
7
+ const tenant_service_1 = require("./services/tenant.service");
8
+ const tenant_entity_1 = require("./entities/tenant.entity");
9
+ const event_emitter_1 = require("@nestjs/event-emitter");
10
+ let TenantModule = class TenantModule {
11
+ };
12
+ exports.TenantModule = TenantModule;
13
+ exports.TenantModule = TenantModule = tslib_1.__decorate([
14
+ (0, common_1.Module)({
15
+ imports: [
16
+ event_emitter_1.EventEmitterModule,
17
+ typeorm_1.TypeOrmModule.forFeature([tenant_entity_1.Tenant]),
18
+ ],
19
+ providers: [
20
+ tenant_service_1.TenantService,
21
+ ],
22
+ exports: [
23
+ tenant_service_1.TenantService,
24
+ ],
25
+ })
26
+ ], TenantModule);
27
+ //# sourceMappingURL=tenant.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tenant.module.js","sourceRoot":"","sources":["../../../../../../packages/nest-auth/src/lib/tenant/tenant.module.ts"],"names":[],"mappings":";;;;AAAA,2CAAwC;AACxC,6CAAgD;AAChD,8DAA0D;AAC1D,4DAAkD;AAClD,yDAA2D;AAcpD,IAAM,YAAY,GAAlB,MAAM,YAAY;CAAI,CAAA;AAAhB,oCAAY;uBAAZ,YAAY;IAZxB,IAAA,eAAM,EAAC;QACJ,OAAO,EAAE;YACL,kCAAkB;YAClB,uBAAa,CAAC,UAAU,CAAC,CAAC,sBAAM,CAAC,CAAC;SACrC;QACD,SAAS,EAAE;YACP,8BAAa;SAChB;QACD,OAAO,EAAE;YACL,8BAAa;SAChB;KACJ,CAAC;GACW,YAAY,CAAI"}
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.UpdateUserDto = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const class_validator_1 = require("class-validator");
6
+ class UpdateUserDto {
7
+ }
8
+ exports.UpdateUserDto = UpdateUserDto;
9
+ tslib_1.__decorate([
10
+ (0, class_validator_1.IsString)(),
11
+ (0, class_validator_1.IsOptional)(),
12
+ tslib_1.__metadata("design:type", String)
13
+ ], UpdateUserDto.prototype, "firstName", void 0);
14
+ tslib_1.__decorate([
15
+ (0, class_validator_1.IsString)(),
16
+ (0, class_validator_1.IsOptional)(),
17
+ tslib_1.__metadata("design:type", String)
18
+ ], UpdateUserDto.prototype, "lastName", void 0);
19
+ tslib_1.__decorate([
20
+ (0, class_validator_1.IsString)(),
21
+ (0, class_validator_1.IsOptional)(),
22
+ tslib_1.__metadata("design:type", String)
23
+ ], UpdateUserDto.prototype, "displayName", void 0);
24
+ //# sourceMappingURL=update-user.dto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-user.dto.js","sourceRoot":"","sources":["../../../../../../../../packages/nest-auth/src/lib/user/dto/requests/update-user.dto.ts"],"names":[],"mappings":";;;;AAAA,qDAAuD;AAEvD,MAAa,aAAa;CAYzB;AAZD,sCAYC;AATG;IAFC,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;;gDACM;AAInB;IAFC,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;;+CACK;AAIlB;IAFC,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;;kDACQ"}
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AccessKey = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const typeorm_1 = require("typeorm");
6
+ const user_entity_1 = require("./user.entity");
7
+ let AccessKey = class AccessKey extends typeorm_1.BaseEntity {
8
+ };
9
+ exports.AccessKey = AccessKey;
10
+ tslib_1.__decorate([
11
+ (0, typeorm_1.PrimaryGeneratedColumn)('uuid'),
12
+ tslib_1.__metadata("design:type", String)
13
+ ], AccessKey.prototype, "id", void 0);
14
+ tslib_1.__decorate([
15
+ (0, typeorm_1.Column)(),
16
+ tslib_1.__metadata("design:type", String)
17
+ ], AccessKey.prototype, "name", void 0);
18
+ tslib_1.__decorate([
19
+ (0, typeorm_1.Column)({ unique: true }),
20
+ tslib_1.__metadata("design:type", String)
21
+ ], AccessKey.prototype, "publicKey", void 0);
22
+ tslib_1.__decorate([
23
+ (0, typeorm_1.Column)(),
24
+ tslib_1.__metadata("design:type", String)
25
+ ], AccessKey.prototype, "privateKey", void 0);
26
+ tslib_1.__decorate([
27
+ (0, typeorm_1.Column)({ nullable: true }),
28
+ tslib_1.__metadata("design:type", String)
29
+ ], AccessKey.prototype, "description", void 0);
30
+ tslib_1.__decorate([
31
+ (0, typeorm_1.Column)({ default: true }),
32
+ tslib_1.__metadata("design:type", Boolean)
33
+ ], AccessKey.prototype, "isActive", void 0);
34
+ tslib_1.__decorate([
35
+ (0, typeorm_1.Column)({ nullable: true }),
36
+ tslib_1.__metadata("design:type", Date)
37
+ ], AccessKey.prototype, "expiresAt", void 0);
38
+ tslib_1.__decorate([
39
+ (0, typeorm_1.Column)({ nullable: true }),
40
+ tslib_1.__metadata("design:type", Date)
41
+ ], AccessKey.prototype, "lastUsedAt", void 0);
42
+ tslib_1.__decorate([
43
+ (0, typeorm_1.Column)(),
44
+ (0, typeorm_1.RelationId)((accessKey) => accessKey.user),
45
+ tslib_1.__metadata("design:type", String)
46
+ ], AccessKey.prototype, "userId", void 0);
47
+ tslib_1.__decorate([
48
+ (0, typeorm_1.ManyToOne)(() => user_entity_1.User),
49
+ (0, typeorm_1.JoinColumn)({ name: 'userId' }),
50
+ tslib_1.__metadata("design:type", user_entity_1.User)
51
+ ], AccessKey.prototype, "user", void 0);
52
+ tslib_1.__decorate([
53
+ (0, typeorm_1.CreateDateColumn)(),
54
+ tslib_1.__metadata("design:type", Date)
55
+ ], AccessKey.prototype, "createdAt", void 0);
56
+ tslib_1.__decorate([
57
+ (0, typeorm_1.UpdateDateColumn)(),
58
+ tslib_1.__metadata("design:type", Date)
59
+ ], AccessKey.prototype, "updatedAt", void 0);
60
+ exports.AccessKey = AccessKey = tslib_1.__decorate([
61
+ (0, typeorm_1.Entity)('nest_auth_access_keys')
62
+ ], AccessKey);
63
+ //# sourceMappingURL=access-key.entity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"access-key.entity.js","sourceRoot":"","sources":["../../../../../../../packages/nest-auth/src/lib/user/entities/access-key.entity.ts"],"names":[],"mappings":";;;;AAAA,qCAUiB;AACjB,+CAAqC;AAG9B,IAAM,SAAS,GAAf,MAAM,SAAU,SAAQ,oBAAU;CAsCxC,CAAA;AAtCY,8BAAS;AAElB;IADC,IAAA,gCAAsB,EAAC,MAAM,CAAC;;qCACpB;AAGX;IADC,IAAA,gBAAM,GAAE;;uCACI;AAGb;IADC,IAAA,gBAAM,EAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;;4CACP;AAGlB;IADC,IAAA,gBAAM,GAAE;;6CACU;AAGnB;IADC,IAAA,gBAAM,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;8CACN;AAGrB;IADC,IAAA,gBAAM,EAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;;2CACR;AAGlB;IADC,IAAA,gBAAM,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;sCACf,IAAI;4CAAC;AAGjB;IADC,IAAA,gBAAM,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;sCACd,IAAI;6CAAC;AAIlB;IAFC,IAAA,gBAAM,GAAE;IACR,IAAA,oBAAU,EAAC,CAAC,SAAoB,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC;;yCACtC;AAIf;IAFC,IAAA,mBAAS,EAAC,GAAG,EAAE,CAAC,kBAAI,CAAC;IACrB,IAAA,oBAAU,EAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;sCACzB,kBAAI;uCAAC;AAGX;IADC,IAAA,0BAAgB,GAAE;sCACR,IAAI;4CAAC;AAGhB;IADC,IAAA,0BAAgB,GAAE;sCACR,IAAI;4CAAC;oBArCP,SAAS;IADrB,IAAA,gBAAM,EAAC,uBAAuB,CAAC;GACnB,SAAS,CAsCrB"}
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AuthIdentity = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const typeorm_1 = require("typeorm");
6
+ const user_entity_1 = require("./user.entity");
7
+ let AuthIdentity = class AuthIdentity extends typeorm_1.BaseEntity {
8
+ };
9
+ exports.AuthIdentity = AuthIdentity;
10
+ tslib_1.__decorate([
11
+ (0, typeorm_1.PrimaryGeneratedColumn)('uuid'),
12
+ tslib_1.__metadata("design:type", String)
13
+ ], AuthIdentity.prototype, "id", void 0);
14
+ tslib_1.__decorate([
15
+ (0, typeorm_1.Column)(),
16
+ tslib_1.__metadata("design:type", String)
17
+ ], AuthIdentity.prototype, "provider", void 0);
18
+ tslib_1.__decorate([
19
+ (0, typeorm_1.Column)({ nullable: true }),
20
+ tslib_1.__metadata("design:type", String)
21
+ ], AuthIdentity.prototype, "providerId", void 0);
22
+ tslib_1.__decorate([
23
+ (0, typeorm_1.Column)({ type: 'simple-json', nullable: true, default: '{}' }),
24
+ tslib_1.__metadata("design:type", Object)
25
+ ], AuthIdentity.prototype, "metadata", void 0);
26
+ tslib_1.__decorate([
27
+ (0, typeorm_1.CreateDateColumn)(),
28
+ tslib_1.__metadata("design:type", Date)
29
+ ], AuthIdentity.prototype, "createdAt", void 0);
30
+ tslib_1.__decorate([
31
+ (0, typeorm_1.UpdateDateColumn)(),
32
+ tslib_1.__metadata("design:type", Date)
33
+ ], AuthIdentity.prototype, "updatedAt", void 0);
34
+ tslib_1.__decorate([
35
+ (0, typeorm_1.Column)({ nullable: true }),
36
+ (0, typeorm_1.RelationId)((identity) => identity.user),
37
+ tslib_1.__metadata("design:type", String)
38
+ ], AuthIdentity.prototype, "userId", void 0);
39
+ tslib_1.__decorate([
40
+ (0, typeorm_1.ManyToOne)(() => user_entity_1.User, { onDelete: 'CASCADE' }),
41
+ (0, typeorm_1.JoinColumn)({ name: 'userId' }),
42
+ tslib_1.__metadata("design:type", user_entity_1.User)
43
+ ], AuthIdentity.prototype, "user", void 0);
44
+ exports.AuthIdentity = AuthIdentity = tslib_1.__decorate([
45
+ (0, typeorm_1.Entity)('nest_auth_identities')
46
+ ], AuthIdentity);
47
+ //# sourceMappingURL=auth-identity.entity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-identity.entity.js","sourceRoot":"","sources":["../../../../../../../packages/nest-auth/src/lib/user/entities/auth-identity.entity.ts"],"names":[],"mappings":";;;;AAAA,qCAAoJ;AACpJ,+CAAqC;AAG9B,IAAM,YAAY,GAAlB,MAAM,YAAa,SAAQ,oBAAU;CA0B3C,CAAA;AA1BY,oCAAY;AAErB;IADC,IAAA,gCAAsB,EAAC,MAAM,CAAC;;wCACpB;AAGX;IADC,IAAA,gBAAM,GAAE;;8CACQ;AAGjB;IADC,IAAA,gBAAM,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;gDACR;AAGnB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;;8CACjC;AAG9B;IADC,IAAA,0BAAgB,GAAE;sCACR,IAAI;+CAAC;AAGhB;IADC,IAAA,0BAAgB,GAAE;sCACR,IAAI;+CAAC;AAIhB;IAFC,IAAA,gBAAM,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC1B,IAAA,oBAAU,EAAC,CAAC,QAAsB,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC;;4CACvC;AAIf;IAFC,IAAA,mBAAS,EAAC,GAAG,EAAE,CAAC,kBAAI,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;IAC9C,IAAA,oBAAU,EAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;sCACzB,kBAAI;0CAAC;uBAzBF,YAAY;IADxB,IAAA,gBAAM,EAAC,sBAAsB,CAAC;GAClB,YAAY,CA0BxB"}
@@ -0,0 +1,189 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.User = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const typeorm_1 = require("typeorm");
6
+ const bcrypt_1 = tslib_1.__importDefault(require("bcrypt"));
7
+ const tenant_1 = require("../../tenant");
8
+ const auth_identity_entity_1 = require("./auth-identity.entity");
9
+ const session_entity_1 = require("../../session/entities/session.entity");
10
+ const lodash_1 = require("lodash");
11
+ const otp_entity_1 = require("../../auth/entities/otp.entity");
12
+ const mfa_secret_entity_1 = require("../../auth/entities/mfa-secret.entity");
13
+ const role_entity_1 = require("../../role/entities/role.entity");
14
+ let User = class User extends typeorm_1.BaseEntity {
15
+ updateTenantFields() {
16
+ this.emailTenant = this.email ? `${this.email}:${this.tenantId || 'global'}` : null;
17
+ this.phoneTenant = this.phone ? `${this.phone}:${this.tenantId || 'global'}` : null;
18
+ }
19
+ async getPermissions() {
20
+ if (!this.roles) {
21
+ this.roles = await role_entity_1.Role.find({
22
+ select: {
23
+ id: true,
24
+ name: true,
25
+ permissions: {
26
+ id: true,
27
+ name: true
28
+ }
29
+ },
30
+ relations: ['permissions'],
31
+ where: { users: { id: this.id }, tenantId: this.tenantId }
32
+ });
33
+ }
34
+ return (0, lodash_1.chain)(this.roles)
35
+ .map(role => (0, lodash_1.map)(role.permissions, 'name'))
36
+ .flatten()
37
+ .uniq()
38
+ .value();
39
+ }
40
+ async getRoles() {
41
+ if (!this.roles) {
42
+ this.roles = await role_entity_1.Role.find({
43
+ select: {
44
+ id: true,
45
+ name: true,
46
+ },
47
+ where: { users: { id: this.id }, tenantId: this.tenantId }
48
+ });
49
+ }
50
+ return (0, lodash_1.chain)(this.roles)
51
+ .map(role => role.name)
52
+ .uniq()
53
+ .value();
54
+ }
55
+ async assignRoles(roles) {
56
+ this.roles = await role_entity_1.Role.find({
57
+ where: { name: (0, typeorm_1.In)(Array.isArray(roles) ? roles : [roles]), tenantId: this.tenantId }
58
+ });
59
+ }
60
+ async findOrCreateIdentity(provider, providerId) {
61
+ const existingIdentity = await auth_identity_entity_1.AuthIdentity.findOne({
62
+ where: { provider, providerId, userId: this.id }
63
+ });
64
+ if (existingIdentity) {
65
+ return existingIdentity;
66
+ }
67
+ const identity = new auth_identity_entity_1.AuthIdentity();
68
+ identity.provider = provider;
69
+ identity.providerId = providerId;
70
+ identity.user = this;
71
+ await identity.save();
72
+ return identity;
73
+ }
74
+ async validatePassword(password) {
75
+ if (!this.passwordHash)
76
+ return false;
77
+ return bcrypt_1.default.compare(password, this.passwordHash);
78
+ }
79
+ async setPassword(password) {
80
+ const salt = await bcrypt_1.default.genSalt();
81
+ this.passwordHash = await bcrypt_1.default.hash(password, salt);
82
+ }
83
+ };
84
+ exports.User = User;
85
+ tslib_1.__decorate([
86
+ (0, typeorm_1.PrimaryGeneratedColumn)('uuid'),
87
+ tslib_1.__metadata("design:type", String)
88
+ ], User.prototype, "id", void 0);
89
+ tslib_1.__decorate([
90
+ (0, typeorm_1.Column)({ nullable: true }),
91
+ (0, typeorm_1.Index)(),
92
+ tslib_1.__metadata("design:type", String)
93
+ ], User.prototype, "email", void 0);
94
+ tslib_1.__decorate([
95
+ (0, typeorm_1.Column)({ nullable: true }),
96
+ (0, typeorm_1.Index)(),
97
+ tslib_1.__metadata("design:type", Date)
98
+ ], User.prototype, "emailVerifiedAt", void 0);
99
+ tslib_1.__decorate([
100
+ (0, typeorm_1.Column)({ nullable: true }),
101
+ (0, typeorm_1.Index)(),
102
+ tslib_1.__metadata("design:type", String)
103
+ ], User.prototype, "phone", void 0);
104
+ tslib_1.__decorate([
105
+ (0, typeorm_1.Column)({ nullable: true }),
106
+ (0, typeorm_1.Index)(),
107
+ tslib_1.__metadata("design:type", Date)
108
+ ], User.prototype, "phoneVerifiedAt", void 0);
109
+ tslib_1.__decorate([
110
+ (0, typeorm_1.Column)({ nullable: true }),
111
+ tslib_1.__metadata("design:type", String)
112
+ ], User.prototype, "passwordHash", void 0);
113
+ tslib_1.__decorate([
114
+ (0, typeorm_1.Column)({ default: false }),
115
+ tslib_1.__metadata("design:type", Boolean)
116
+ ], User.prototype, "isVerified", void 0);
117
+ tslib_1.__decorate([
118
+ (0, typeorm_1.Column)({ default: true }),
119
+ tslib_1.__metadata("design:type", Boolean)
120
+ ], User.prototype, "isActive", void 0);
121
+ tslib_1.__decorate([
122
+ (0, typeorm_1.Column)({ type: 'simple-json', nullable: true, default: '{}' }),
123
+ tslib_1.__metadata("design:type", Object)
124
+ ], User.prototype, "metadata", void 0);
125
+ tslib_1.__decorate([
126
+ (0, typeorm_1.Column)({ nullable: true }),
127
+ tslib_1.__metadata("design:type", String)
128
+ ], User.prototype, "tenantId", void 0);
129
+ tslib_1.__decorate([
130
+ (0, typeorm_1.Column)({ default: false }),
131
+ tslib_1.__metadata("design:type", Boolean)
132
+ ], User.prototype, "isMfaEnabled", void 0);
133
+ tslib_1.__decorate([
134
+ (0, typeorm_1.Column)({ nullable: true }),
135
+ tslib_1.__metadata("design:type", String)
136
+ ], User.prototype, "mfaRecoveryCode", void 0);
137
+ tslib_1.__decorate([
138
+ (0, typeorm_1.ManyToOne)(() => tenant_1.Tenant),
139
+ tslib_1.__metadata("design:type", tenant_1.Tenant)
140
+ ], User.prototype, "tenant", void 0);
141
+ tslib_1.__decorate([
142
+ (0, typeorm_1.OneToMany)(() => auth_identity_entity_1.AuthIdentity, identity => identity.user),
143
+ tslib_1.__metadata("design:type", Array)
144
+ ], User.prototype, "identities", void 0);
145
+ tslib_1.__decorate([
146
+ (0, typeorm_1.OneToMany)(() => mfa_secret_entity_1.MFASecret, mfaSecret => mfaSecret.user),
147
+ tslib_1.__metadata("design:type", Array)
148
+ ], User.prototype, "mfaSecrets", void 0);
149
+ tslib_1.__decorate([
150
+ (0, typeorm_1.OneToMany)(() => session_entity_1.Session, session => session.user),
151
+ tslib_1.__metadata("design:type", Array)
152
+ ], User.prototype, "sessions", void 0);
153
+ tslib_1.__decorate([
154
+ (0, typeorm_1.OneToMany)(() => otp_entity_1.OTP, otp => otp.user),
155
+ tslib_1.__metadata("design:type", Array)
156
+ ], User.prototype, "otps", void 0);
157
+ tslib_1.__decorate([
158
+ (0, typeorm_1.ManyToMany)(() => role_entity_1.Role, role => role.users),
159
+ tslib_1.__metadata("design:type", Array)
160
+ ], User.prototype, "roles", void 0);
161
+ tslib_1.__decorate([
162
+ (0, typeorm_1.Index)('IDX_USER_EMAIL_TENANT', { unique: true }),
163
+ (0, typeorm_1.Column)({ nullable: true }),
164
+ tslib_1.__metadata("design:type", String)
165
+ ], User.prototype, "emailTenant", void 0);
166
+ tslib_1.__decorate([
167
+ (0, typeorm_1.Index)('IDX_USER_PHONE_TENANT', { unique: true }),
168
+ (0, typeorm_1.Column)({ nullable: true }),
169
+ tslib_1.__metadata("design:type", String)
170
+ ], User.prototype, "phoneTenant", void 0);
171
+ tslib_1.__decorate([
172
+ (0, typeorm_1.CreateDateColumn)(),
173
+ tslib_1.__metadata("design:type", Date)
174
+ ], User.prototype, "createdAt", void 0);
175
+ tslib_1.__decorate([
176
+ (0, typeorm_1.UpdateDateColumn)(),
177
+ tslib_1.__metadata("design:type", Date)
178
+ ], User.prototype, "updatedAt", void 0);
179
+ tslib_1.__decorate([
180
+ (0, typeorm_1.BeforeInsert)(),
181
+ (0, typeorm_1.BeforeUpdate)(),
182
+ tslib_1.__metadata("design:type", Function),
183
+ tslib_1.__metadata("design:paramtypes", []),
184
+ tslib_1.__metadata("design:returntype", void 0)
185
+ ], User.prototype, "updateTenantFields", null);
186
+ exports.User = User = tslib_1.__decorate([
187
+ (0, typeorm_1.Entity)('nest_auth_users')
188
+ ], User);
189
+ //# sourceMappingURL=user.entity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user.entity.js","sourceRoot":"","sources":["../../../../../../../packages/nest-auth/src/lib/user/entities/user.entity.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.UserCreatedEvent = void 0;
4
+ class UserCreatedEvent {
5
+ constructor(payload) {
6
+ this.payload = payload;
7
+ }
8
+ }
9
+ exports.UserCreatedEvent = UserCreatedEvent;
10
+ //# sourceMappingURL=user-created.event.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-created.event.js","sourceRoot":"","sources":["../../../../../../../packages/nest-auth/src/lib/user/events/user-created.event.ts"],"names":[],"mappings":";;;AAOA,MAAa,gBAAgB;IACzB,YAA4B,OAAgC;QAAhC,YAAO,GAAP,OAAO,CAAyB;IAAI,CAAC;CACpE;AAFD,4CAEC"}