@ackplus/nest-auth 0.0.23

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 (186) hide show
  1. package/README.md +226 -0
  2. package/package.json +51 -0
  3. package/src/index.d.ts +11 -0
  4. package/src/index.js +15 -0
  5. package/src/index.js.map +1 -0
  6. package/src/lib/auth.constants.d.ts +17 -0
  7. package/src/lib/auth.constants.js +21 -0
  8. package/src/lib/auth.constants.js.map +1 -0
  9. package/src/lib/controllers/auth.controller.d.ts +26 -0
  10. package/src/lib/controllers/auth.controller.js +214 -0
  11. package/src/lib/controllers/auth.controller.js.map +1 -0
  12. package/src/lib/controllers/mfa.controller.d.ts +23 -0
  13. package/src/lib/controllers/mfa.controller.js +132 -0
  14. package/src/lib/controllers/mfa.controller.js.map +1 -0
  15. package/src/lib/decorators/skip-mfa.decorator.d.ts +2 -0
  16. package/src/lib/decorators/skip-mfa.decorator.js +8 -0
  17. package/src/lib/decorators/skip-mfa.decorator.js.map +1 -0
  18. package/src/lib/dto/index.d.ts +12 -0
  19. package/src/lib/dto/index.js +16 -0
  20. package/src/lib/dto/index.js.map +1 -0
  21. package/src/lib/dto/requests/forgot-password.request.dto.d.ts +5 -0
  22. package/src/lib/dto/requests/forgot-password.request.dto.js +30 -0
  23. package/src/lib/dto/requests/forgot-password.request.dto.js.map +1 -0
  24. package/src/lib/dto/requests/login.request.dto.d.ts +6 -0
  25. package/src/lib/dto/requests/login.request.dto.js +34 -0
  26. package/src/lib/dto/requests/login.request.dto.js.map +1 -0
  27. package/src/lib/dto/requests/refresh-token.request.dto.d.ts +3 -0
  28. package/src/lib/dto/requests/refresh-token.request.dto.js +15 -0
  29. package/src/lib/dto/requests/refresh-token.request.dto.js.map +1 -0
  30. package/src/lib/dto/requests/reset-password.request.dto.d.ts +7 -0
  31. package/src/lib/dto/requests/reset-password.request.dto.js +42 -0
  32. package/src/lib/dto/requests/reset-password.request.dto.js.map +1 -0
  33. package/src/lib/dto/requests/send-mfa-code.request.dto.d.ts +4 -0
  34. package/src/lib/dto/requests/send-mfa-code.request.dto.js +16 -0
  35. package/src/lib/dto/requests/send-mfa-code.request.dto.js.map +1 -0
  36. package/src/lib/dto/requests/signup.request.dto.d.ts +6 -0
  37. package/src/lib/dto/requests/signup.request.dto.js +37 -0
  38. package/src/lib/dto/requests/signup.request.dto.js.map +1 -0
  39. package/src/lib/dto/requests/social-login.request.dto.d.ts +3 -0
  40. package/src/lib/dto/requests/social-login.request.dto.js +16 -0
  41. package/src/lib/dto/requests/social-login.request.dto.js.map +1 -0
  42. package/src/lib/dto/requests/update-user.dto.d.ts +5 -0
  43. package/src/lib/dto/requests/update-user.dto.js +24 -0
  44. package/src/lib/dto/requests/update-user.dto.js.map +1 -0
  45. package/src/lib/dto/requests/verify-2fa.request.dto.d.ts +5 -0
  46. package/src/lib/dto/requests/verify-2fa.request.dto.js +21 -0
  47. package/src/lib/dto/requests/verify-2fa.request.dto.js.map +1 -0
  48. package/src/lib/dto/requests/verify-totp-setup.request.dto.d.ts +4 -0
  49. package/src/lib/dto/requests/verify-totp-setup.request.dto.js +20 -0
  50. package/src/lib/dto/requests/verify-totp-setup.request.dto.js.map +1 -0
  51. package/src/lib/dto/responses/auth.response.dto.d.ts +16 -0
  52. package/src/lib/dto/responses/auth.response.dto.js +55 -0
  53. package/src/lib/dto/responses/auth.response.dto.js.map +1 -0
  54. package/src/lib/dto/responses/device-info.response.dto.d.ts +6 -0
  55. package/src/lib/dto/responses/device-info.response.dto.js +25 -0
  56. package/src/lib/dto/responses/device-info.response.dto.js.map +1 -0
  57. package/src/lib/dto/responses/message.response.dto.d.ts +3 -0
  58. package/src/lib/dto/responses/message.response.dto.js +13 -0
  59. package/src/lib/dto/responses/message.response.dto.js.map +1 -0
  60. package/src/lib/entities/auth-identity.entity.d.ts +11 -0
  61. package/src/lib/entities/auth-identity.entity.js +47 -0
  62. package/src/lib/entities/auth-identity.entity.js.map +1 -0
  63. package/src/lib/entities/index.d.ts +10 -0
  64. package/src/lib/entities/index.js +26 -0
  65. package/src/lib/entities/index.js.map +1 -0
  66. package/src/lib/entities/mfa-secret.entity.d.ts +12 -0
  67. package/src/lib/entities/mfa-secret.entity.js +51 -0
  68. package/src/lib/entities/mfa-secret.entity.js.map +1 -0
  69. package/src/lib/entities/otp.entity.d.ts +16 -0
  70. package/src/lib/entities/otp.entity.js +52 -0
  71. package/src/lib/entities/otp.entity.js.map +1 -0
  72. package/src/lib/entities/permission.entity.d.ts +9 -0
  73. package/src/lib/entities/permission.entity.js +37 -0
  74. package/src/lib/entities/permission.entity.js.map +1 -0
  75. package/src/lib/entities/role-permission.entity.d.ts +8 -0
  76. package/src/lib/entities/role-permission.entity.js +30 -0
  77. package/src/lib/entities/role-permission.entity.js.map +1 -0
  78. package/src/lib/entities/role.entity.d.ts +11 -0
  79. package/src/lib/entities/role.entity.js +42 -0
  80. package/src/lib/entities/role.entity.js.map +1 -0
  81. package/src/lib/entities/session.entity.d.ts +16 -0
  82. package/src/lib/entities/session.entity.js +63 -0
  83. package/src/lib/entities/session.entity.js.map +1 -0
  84. package/src/lib/entities/tenant.entity.d.ts +10 -0
  85. package/src/lib/entities/tenant.entity.js +41 -0
  86. package/src/lib/entities/tenant.entity.js.map +1 -0
  87. package/src/lib/entities/user-role.entity.d.ts +13 -0
  88. package/src/lib/entities/user-role.entity.js +47 -0
  89. package/src/lib/entities/user-role.entity.js.map +1 -0
  90. package/src/lib/entities/user.entity.d.ts +38 -0
  91. package/src/lib/entities/user.entity.js +155 -0
  92. package/src/lib/entities/user.entity.js.map +1 -0
  93. package/src/lib/guards/auth.guard.d.ts +18 -0
  94. package/src/lib/guards/auth.guard.js +106 -0
  95. package/src/lib/guards/auth.guard.js.map +1 -0
  96. package/src/lib/interceptors/token.interceptor.d.ts +10 -0
  97. package/src/lib/interceptors/token.interceptor.js +41 -0
  98. package/src/lib/interceptors/token.interceptor.js.map +1 -0
  99. package/src/lib/interfaces/auth-module-options.interface.d.ts +51 -0
  100. package/src/lib/interfaces/auth-module-options.interface.js +3 -0
  101. package/src/lib/interfaces/auth-module-options.interface.js.map +1 -0
  102. package/src/lib/interfaces/mfa-options.interface.d.ts +25 -0
  103. package/src/lib/interfaces/mfa-options.interface.js +10 -0
  104. package/src/lib/interfaces/mfa-options.interface.js.map +1 -0
  105. package/src/lib/interfaces/session-options.interface.d.ts +12 -0
  106. package/src/lib/interfaces/session-options.interface.js +9 -0
  107. package/src/lib/interfaces/session-options.interface.js.map +1 -0
  108. package/src/lib/interfaces/token-payload.interface.d.ts +39 -0
  109. package/src/lib/interfaces/token-payload.interface.js +3 -0
  110. package/src/lib/interfaces/token-payload.interface.js.map +1 -0
  111. package/src/lib/migrations/1746242659133-migration.d.ts +6 -0
  112. package/src/lib/migrations/1746242659133-migration.js +66 -0
  113. package/src/lib/migrations/1746242659133-migration.js.map +1 -0
  114. package/src/lib/migrations/1746244352713-migration.d.ts +6 -0
  115. package/src/lib/migrations/1746244352713-migration.js +16 -0
  116. package/src/lib/migrations/1746244352713-migration.js.map +1 -0
  117. package/src/lib/nest-auth.module.d.ts +13 -0
  118. package/src/lib/nest-auth.module.js +247 -0
  119. package/src/lib/nest-auth.module.js.map +1 -0
  120. package/src/lib/providers/apple-auth.provider.d.ts +23 -0
  121. package/src/lib/providers/apple-auth.provider.js +61 -0
  122. package/src/lib/providers/apple-auth.provider.js.map +1 -0
  123. package/src/lib/providers/base-auth.provider.d.ts +24 -0
  124. package/src/lib/providers/base-auth.provider.js +54 -0
  125. package/src/lib/providers/base-auth.provider.js.map +1 -0
  126. package/src/lib/providers/email-auth.provider.d.ts +21 -0
  127. package/src/lib/providers/email-auth.provider.js +45 -0
  128. package/src/lib/providers/email-auth.provider.js.map +1 -0
  129. package/src/lib/providers/facebook-auth.provider.d.ts +23 -0
  130. package/src/lib/providers/facebook-auth.provider.js +61 -0
  131. package/src/lib/providers/facebook-auth.provider.js.map +1 -0
  132. package/src/lib/providers/google-auth.provider.d.ts +26 -0
  133. package/src/lib/providers/google-auth.provider.js +63 -0
  134. package/src/lib/providers/google-auth.provider.js.map +1 -0
  135. package/src/lib/providers/index.d.ts +7 -0
  136. package/src/lib/providers/index.js +16 -0
  137. package/src/lib/providers/index.js.map +1 -0
  138. package/src/lib/providers/jwt-auth.provider.d.ts +38 -0
  139. package/src/lib/providers/jwt-auth.provider.js +54 -0
  140. package/src/lib/providers/jwt-auth.provider.js.map +1 -0
  141. package/src/lib/providers/phone-auth.provider.d.ts +22 -0
  142. package/src/lib/providers/phone-auth.provider.js +48 -0
  143. package/src/lib/providers/phone-auth.provider.js.map +1 -0
  144. package/src/lib/request-context/request-context.d.ts +22 -0
  145. package/src/lib/request-context/request-context.js +108 -0
  146. package/src/lib/request-context/request-context.js.map +1 -0
  147. package/src/lib/request-context/request-context.middleware.d.ts +4 -0
  148. package/src/lib/request-context/request-context.middleware.js +16 -0
  149. package/src/lib/request-context/request-context.middleware.js.map +1 -0
  150. package/src/lib/services/auth-migration-service.d.ts +22 -0
  151. package/src/lib/services/auth-migration-service.js +125 -0
  152. package/src/lib/services/auth-migration-service.js.map +1 -0
  153. package/src/lib/services/auth-provider-registry.service.d.ts +25 -0
  154. package/src/lib/services/auth-provider-registry.service.js +72 -0
  155. package/src/lib/services/auth-provider-registry.service.js.map +1 -0
  156. package/src/lib/services/auth.service.d.ts +45 -0
  157. package/src/lib/services/auth.service.js +344 -0
  158. package/src/lib/services/auth.service.js.map +1 -0
  159. package/src/lib/services/cookie.service.d.ts +10 -0
  160. package/src/lib/services/cookie.service.js +43 -0
  161. package/src/lib/services/cookie.service.js.map +1 -0
  162. package/src/lib/services/jwt.service.d.ts +15 -0
  163. package/src/lib/services/jwt.service.js +93 -0
  164. package/src/lib/services/jwt.service.js.map +1 -0
  165. package/src/lib/services/mfa.service.d.ts +40 -0
  166. package/src/lib/services/mfa.service.js +254 -0
  167. package/src/lib/services/mfa.service.js.map +1 -0
  168. package/src/lib/services/session/base-session.service.d.ts +23 -0
  169. package/src/lib/services/session/base-session.service.js +64 -0
  170. package/src/lib/services/session/base-session.service.js.map +1 -0
  171. package/src/lib/services/session/database-session.service.d.ts +19 -0
  172. package/src/lib/services/session/database-session.service.js +55 -0
  173. package/src/lib/services/session/database-session.service.js.map +1 -0
  174. package/src/lib/services/session/redis-session.service.d.ts +22 -0
  175. package/src/lib/services/session/redis-session.service.js +120 -0
  176. package/src/lib/services/session/redis-session.service.js.map +1 -0
  177. package/src/lib/utils/database.utils.d.ts +2 -0
  178. package/src/lib/utils/database.utils.js +8 -0
  179. package/src/lib/utils/database.utils.js.map +1 -0
  180. package/src/lib/utils/otp.d.ts +1 -0
  181. package/src/lib/utils/otp.js +7 -0
  182. package/src/lib/utils/otp.js.map +1 -0
  183. package/src/typeorm.config.d.ts +2 -0
  184. package/src/typeorm.config.js +18 -0
  185. package/src/typeorm.config.js.map +1 -0
  186. package/tsconfig.tsbuildinfo +1 -0
@@ -0,0 +1,125 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AuthMigrationService = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const common_1 = require("@nestjs/common");
6
+ const typeorm_1 = require("typeorm");
7
+ const typeorm_2 = require("@nestjs/typeorm");
8
+ const _1746242659133_migration_1 = require("../migrations/1746242659133-migration");
9
+ let AuthMigrationService = class AuthMigrationService {
10
+ constructor(defaultDataSource) {
11
+ this.isSynchronizedEnabled = false;
12
+ this.migrationsTableName = 'nest_auth_migrations';
13
+ this.migrations = [
14
+ _1746242659133_migration_1.Migration1746242659133
15
+ ];
16
+ this.isSynchronizedEnabled = defaultDataSource.options.synchronize;
17
+ this.dataSource = this.cloneDataSource(defaultDataSource, {
18
+ synchronize: false,
19
+ migrationsRun: false,
20
+ migrations: [],
21
+ });
22
+ }
23
+ cloneDataSource(base, overrides = {}) {
24
+ return new typeorm_1.DataSource({
25
+ name: 'nest_auth',
26
+ ...base.options,
27
+ ...overrides,
28
+ });
29
+ }
30
+ async onModuleInit() {
31
+ await this.dataSource.initialize();
32
+ if (!this.isSynchronizedEnabled) {
33
+ await this.runMigrations(this.dataSource);
34
+ }
35
+ }
36
+ async onModuleDestroy() {
37
+ await this.dataSource.destroy();
38
+ }
39
+ async runMigrations(dataSource, skipMigrations = []) {
40
+ const queryRunner = dataSource.createQueryRunner();
41
+ await queryRunner.connect();
42
+ await queryRunner.startTransaction();
43
+ try {
44
+ await this.createMigrationsTable(queryRunner);
45
+ const executedMigrations = await this.getExecutedMigrations(queryRunner);
46
+ const migrationsToRun = this.migrations.filter(migration => !skipMigrations.includes(migration.name) && !executedMigrations.includes(migration.name));
47
+ for (const migration of migrationsToRun) {
48
+ const migrationInstance = new migration();
49
+ console.info(`Running migration: ${migrationInstance.name}`);
50
+ try {
51
+ await migrationInstance.up(queryRunner);
52
+ await this.recordMigration(queryRunner, migrationInstance.name);
53
+ }
54
+ catch (error) {
55
+ console.error(`Failed to run migration ${migrationInstance.name}:`, error);
56
+ throw error;
57
+ }
58
+ }
59
+ await queryRunner.commitTransaction();
60
+ }
61
+ catch (error) {
62
+ console.error('Migration failed:', error);
63
+ await queryRunner.rollbackTransaction();
64
+ throw error;
65
+ }
66
+ finally {
67
+ await queryRunner.release();
68
+ }
69
+ }
70
+ async rollbackMigrations(dataSource, count = 1) {
71
+ const queryRunner = dataSource.createQueryRunner();
72
+ await queryRunner.connect();
73
+ await queryRunner.startTransaction();
74
+ try {
75
+ const executedMigrations = await this.getExecutedMigrations(queryRunner);
76
+ const migrationsToRollback = executedMigrations.slice(-count);
77
+ for (const migrationName of migrationsToRollback.reverse()) {
78
+ const migration = this.migrations.find(m => m.name === migrationName);
79
+ const migrationInstance = new migration();
80
+ if (migration) {
81
+ console.info(`Rolling back migration: ${migration.name}`);
82
+ await migrationInstance.down(queryRunner);
83
+ await this.removeMigration(queryRunner, migration.name);
84
+ }
85
+ }
86
+ await queryRunner.commitTransaction();
87
+ }
88
+ catch (error) {
89
+ await queryRunner.rollbackTransaction();
90
+ throw error;
91
+ }
92
+ finally {
93
+ await queryRunner.release();
94
+ }
95
+ }
96
+ async createMigrationsTable(queryRunner) {
97
+ const tableExists = await queryRunner.hasTable(this.migrationsTableName);
98
+ if (!tableExists) {
99
+ await queryRunner.query(`
100
+ CREATE TABLE ${this.migrationsTableName} (
101
+ id SERIAL PRIMARY KEY,
102
+ name VARCHAR(255) NOT NULL UNIQUE,
103
+ executed_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
104
+ )
105
+ `);
106
+ }
107
+ }
108
+ async getExecutedMigrations(queryRunner) {
109
+ const result = await queryRunner.query(`SELECT name FROM ${this.migrationsTableName} ORDER BY executed_at ASC`);
110
+ return result.map((row) => row.name);
111
+ }
112
+ async recordMigration(queryRunner, migrationName) {
113
+ await queryRunner.query(`INSERT INTO ${this.migrationsTableName} (name) VALUES ($1)`, [migrationName]);
114
+ }
115
+ async removeMigration(queryRunner, migrationName) {
116
+ await queryRunner.query(`DELETE FROM ${this.migrationsTableName} WHERE name = $1`, [migrationName]);
117
+ }
118
+ };
119
+ exports.AuthMigrationService = AuthMigrationService;
120
+ exports.AuthMigrationService = AuthMigrationService = tslib_1.__decorate([
121
+ (0, common_1.Injectable)(),
122
+ tslib_1.__param(0, (0, typeorm_2.InjectDataSource)()),
123
+ tslib_1.__metadata("design:paramtypes", [typeorm_1.DataSource])
124
+ ], AuthMigrationService);
125
+ //# sourceMappingURL=auth-migration-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-migration-service.js","sourceRoot":"","sources":["../../../../../../packages/nest-auth/src/lib/services/auth-migration-service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import { BaseAuthProvider } from '../providers/base-auth.provider';
2
+ import { AuthModuleOptions } from '../interfaces/auth-module-options.interface';
3
+ import { EmailAuthProvider } from '../providers/email-auth.provider';
4
+ import { PhoneAuthProvider } from '../providers/phone-auth.provider';
5
+ import { AppleAuthProvider } from '../providers/apple-auth.provider';
6
+ import { GoogleAuthProvider } from '../providers/google-auth.provider';
7
+ import { JwtAuthProvider } from '../providers/jwt-auth.provider';
8
+ import { FacebookAuthProvider } from '../providers/facebook-auth.provider';
9
+ export declare class AuthProviderRegistryService {
10
+ private readonly options;
11
+ private readonly emailAuthProvider;
12
+ private readonly phoneAuthProvider;
13
+ private readonly jwtAuthProvider;
14
+ private readonly googleAuthProvider;
15
+ private readonly facebookAuthProvider;
16
+ private readonly appleAuthProvider;
17
+ private providers;
18
+ constructor(options: AuthModuleOptions, emailAuthProvider: EmailAuthProvider, phoneAuthProvider: PhoneAuthProvider, jwtAuthProvider: JwtAuthProvider, googleAuthProvider: GoogleAuthProvider, facebookAuthProvider: FacebookAuthProvider, appleAuthProvider: AppleAuthProvider);
19
+ registerDefaultProviders(): void;
20
+ registerProvider(provider: BaseAuthProvider): void;
21
+ getProvider(providerId: string): BaseAuthProvider | undefined;
22
+ getAllProviders(): BaseAuthProvider[];
23
+ getEnabledProviders(): BaseAuthProvider[];
24
+ hasProvider(providerId: string): boolean;
25
+ }
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AuthProviderRegistryService = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const common_1 = require("@nestjs/common");
6
+ const auth_constants_1 = require("../auth.constants");
7
+ const email_auth_provider_1 = require("../providers/email-auth.provider");
8
+ const phone_auth_provider_1 = require("../providers/phone-auth.provider");
9
+ const apple_auth_provider_1 = require("../providers/apple-auth.provider");
10
+ const google_auth_provider_1 = require("../providers/google-auth.provider");
11
+ const jwt_auth_provider_1 = require("../providers/jwt-auth.provider");
12
+ const facebook_auth_provider_1 = require("../providers/facebook-auth.provider");
13
+ let AuthProviderRegistryService = class AuthProviderRegistryService {
14
+ constructor(options, emailAuthProvider, phoneAuthProvider, jwtAuthProvider, googleAuthProvider, facebookAuthProvider, appleAuthProvider) {
15
+ this.options = options;
16
+ this.emailAuthProvider = emailAuthProvider;
17
+ this.phoneAuthProvider = phoneAuthProvider;
18
+ this.jwtAuthProvider = jwtAuthProvider;
19
+ this.googleAuthProvider = googleAuthProvider;
20
+ this.facebookAuthProvider = facebookAuthProvider;
21
+ this.appleAuthProvider = appleAuthProvider;
22
+ this.providers = new Map();
23
+ this.registerDefaultProviders();
24
+ }
25
+ registerDefaultProviders() {
26
+ if (this.options.emailAuth?.enabled) {
27
+ this.registerProvider(this.emailAuthProvider);
28
+ }
29
+ if (this.options.phoneAuth?.enabled) {
30
+ this.registerProvider(this.phoneAuthProvider);
31
+ }
32
+ if (this.options.jwt) {
33
+ this.registerProvider(this.jwtAuthProvider);
34
+ }
35
+ if (this.options.google) {
36
+ this.registerProvider(this.googleAuthProvider);
37
+ }
38
+ if (this.options.facebook) {
39
+ this.registerProvider(this.facebookAuthProvider);
40
+ }
41
+ if (this.options.apple) {
42
+ this.registerProvider(this.appleAuthProvider);
43
+ }
44
+ }
45
+ registerProvider(provider) {
46
+ this.providers.set(provider.providerId, provider);
47
+ }
48
+ getProvider(providerId) {
49
+ return this.providers.get(providerId);
50
+ }
51
+ getAllProviders() {
52
+ return Array.from(this.providers.values());
53
+ }
54
+ getEnabledProviders() {
55
+ return this.getAllProviders().filter(provider => 'enabled' in provider ? provider.enabled : true);
56
+ }
57
+ hasProvider(providerId) {
58
+ return this.providers.has(providerId);
59
+ }
60
+ };
61
+ exports.AuthProviderRegistryService = AuthProviderRegistryService;
62
+ exports.AuthProviderRegistryService = AuthProviderRegistryService = tslib_1.__decorate([
63
+ (0, common_1.Injectable)(),
64
+ tslib_1.__param(0, (0, common_1.Inject)(auth_constants_1.AUTH_MODULE_OPTIONS)),
65
+ tslib_1.__metadata("design:paramtypes", [Object, email_auth_provider_1.EmailAuthProvider,
66
+ phone_auth_provider_1.PhoneAuthProvider,
67
+ jwt_auth_provider_1.JwtAuthProvider,
68
+ google_auth_provider_1.GoogleAuthProvider,
69
+ facebook_auth_provider_1.FacebookAuthProvider,
70
+ apple_auth_provider_1.AppleAuthProvider])
71
+ ], AuthProviderRegistryService);
72
+ //# sourceMappingURL=auth-provider-registry.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-provider-registry.service.js","sourceRoot":"","sources":["../../../../../../packages/nest-auth/src/lib/services/auth-provider-registry.service.ts"],"names":[],"mappings":";;;;AAAA,2CAAoD;AAGpD,sDAAwD;AACxD,0EAAqE;AACrE,0EAAqE;AACrE,0EAAqE;AACrE,4EAAuE;AACvE,sEAAiE;AACjE,gFAA2E;AAGpE,IAAM,2BAA2B,GAAjC,MAAM,2BAA2B;IAGpC,YAEI,OAA2C,EAE1B,iBAAoC,EACpC,iBAAoC,EACpC,eAAgC,EAChC,kBAAsC,EACtC,oBAA0C,EAC1C,iBAAoC;QAPpC,YAAO,GAAP,OAAO,CAAmB;QAE1B,sBAAiB,GAAjB,iBAAiB,CAAmB;QACpC,sBAAiB,GAAjB,iBAAiB,CAAmB;QACpC,oBAAe,GAAf,eAAe,CAAiB;QAChC,uBAAkB,GAAlB,kBAAkB,CAAoB;QACtC,yBAAoB,GAApB,oBAAoB,CAAsB;QAC1C,sBAAiB,GAAjB,iBAAiB,CAAmB;QAXjD,cAAS,GAAkC,IAAI,GAAG,EAAE,CAAC;QAazD,IAAI,CAAC,wBAAwB,EAAE,CAAC;IACpC,CAAC;IAED,wBAAwB;QACpB,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,EAAE,CAAC;YAClC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAClD,CAAC;QACD,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,EAAE,CAAC;YAClC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAClD,CAAC;QACD,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;YACnB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAChD,CAAC;QACD,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YACtB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QACnD,CAAC;QACD,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;YACxB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QACrD,CAAC;QACD,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACrB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAClD,CAAC;IACL,CAAC;IAKD,gBAAgB,CAAC,QAA0B;QACvC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IACtD,CAAC;IAKD,WAAW,CAAC,UAAkB;QAC1B,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC1C,CAAC;IAKD,eAAe;QACX,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;IAC/C,CAAC;IAKD,mBAAmB;QACf,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAC5C,SAAS,IAAI,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAClD,CAAC;IACN,CAAC;IAKD,WAAW,CAAC,UAAkB;QAC1B,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC1C,CAAC;CACJ,CAAA;AA1EY,kEAA2B;sCAA3B,2BAA2B;IADvC,IAAA,mBAAU,GAAE;IAKJ,mBAAA,IAAA,eAAM,EAAC,oCAAmB,CAAC,CAAA;qDAGQ,uCAAiB;QACjB,uCAAiB;QACnB,mCAAe;QACZ,yCAAkB;QAChB,6CAAoB;QACvB,uCAAiB;GAZhD,2BAA2B,CA0EvC"}
@@ -0,0 +1,45 @@
1
+ import { Repository } from 'typeorm';
2
+ import { User } from '../entities/user.entity';
3
+ import { Session } from '../entities/session.entity';
4
+ import { OTP } from '../entities/otp.entity';
5
+ import { AuthResponseDto, MessageResponseDto, DeviceInfoDto, SignupRequestDto, LoginRequestDto, ForgotPasswordRequestDto, ResetPasswordRequestDto } from '../dto';
6
+ import { BaseAuthProvider } from '../providers/base-auth.provider';
7
+ import { MfaService } from './mfa.service';
8
+ import { MFAMethodEnum } from '../interfaces/mfa-options.interface';
9
+ import { Verify2faRequestDto } from '../dto/requests/verify-2fa.request.dto';
10
+ import { BaseSessionService } from './session/base-session.service';
11
+ import { JwtService } from './jwt.service';
12
+ export declare class AuthService {
13
+ private readonly userRepository;
14
+ private readonly sessionRepository;
15
+ private otpRepository;
16
+ private readonly authProviders;
17
+ private readonly mfaService;
18
+ private readonly sessionService;
19
+ private readonly jwtService;
20
+ constructor(userRepository: Repository<User>, sessionRepository: Repository<Session>, otpRepository: Repository<OTP>, authProviders: BaseAuthProvider[], mfaService: MfaService, sessionService: BaseSessionService, jwtService: JwtService);
21
+ getUserWithRolesAndPermissions(userId: string, relations?: string[]): Promise<User>;
22
+ getUser(): Promise<User>;
23
+ signup(input: SignupRequestDto): Promise<AuthResponseDto>;
24
+ login(input: LoginRequestDto): Promise<AuthResponseDto>;
25
+ verify2fa(input: Verify2faRequestDto): Promise<{
26
+ accessToken: string;
27
+ refreshToken: string;
28
+ }>;
29
+ send2faCode(userId: string, method: MFAMethodEnum): Promise<boolean>;
30
+ private handleSocialLogin;
31
+ refreshToken(refreshToken: string): Promise<{
32
+ accessToken: string;
33
+ refreshToken: string;
34
+ }>;
35
+ forgotPassword(input: ForgotPasswordRequestDto): Promise<true | {
36
+ message: string;
37
+ }>;
38
+ resetPassword(input: ResetPasswordRequestDto): Promise<boolean>;
39
+ logout(): Promise<boolean>;
40
+ logoutAll(userId: string): Promise<boolean>;
41
+ listDevices(userId: string): Promise<DeviceInfoDto[]>;
42
+ deleteDevice(userId: string, deviceId: string): Promise<MessageResponseDto>;
43
+ private generateTokensPayload;
44
+ private generateTokensFromSession;
45
+ }
@@ -0,0 +1,344 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AuthService = 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 user_entity_1 = require("../entities/user.entity");
9
+ const session_entity_1 = require("../entities/session.entity");
10
+ const otp_entity_1 = require("../entities/otp.entity");
11
+ const auth_constants_1 = require("../auth.constants");
12
+ const typeorm_3 = require("typeorm");
13
+ const request_context_1 = require("../request-context/request-context");
14
+ const mfa_service_1 = require("./mfa.service");
15
+ const base_session_service_1 = require("./session/base-session.service");
16
+ const otp_1 = require("../utils/otp");
17
+ const jwt_service_1 = require("./jwt.service");
18
+ let AuthService = class AuthService {
19
+ constructor(userRepository, sessionRepository, otpRepository, authProviders, mfaService, sessionService, jwtService) {
20
+ this.userRepository = userRepository;
21
+ this.sessionRepository = sessionRepository;
22
+ this.otpRepository = otpRepository;
23
+ this.authProviders = authProviders;
24
+ this.mfaService = mfaService;
25
+ this.sessionService = sessionService;
26
+ this.jwtService = jwtService;
27
+ }
28
+ getUserWithRolesAndPermissions(userId, relations = []) {
29
+ return this.userRepository.findOne({
30
+ where: { id: userId },
31
+ relations: [
32
+ 'userRoles',
33
+ 'userRoles.role',
34
+ 'userRoles.role.rolePermissions',
35
+ 'userRoles.role.rolePermissions.permission',
36
+ ...relations
37
+ ],
38
+ });
39
+ }
40
+ async getUser() {
41
+ const user = request_context_1.RequestContext.currentUser();
42
+ if (!user) {
43
+ throw new common_1.UnauthorizedException('User not found');
44
+ }
45
+ return this.getUserWithRolesAndPermissions(user.id);
46
+ }
47
+ async signup(input) {
48
+ const { email, phone, password, tenantId = null } = input;
49
+ if (!email && !phone) {
50
+ throw new common_1.BadRequestException('Either email or phone must be provided');
51
+ }
52
+ let provider = null;
53
+ let providerUserId = null;
54
+ if (email) {
55
+ provider = this.authProviders.find(p => p.providerId === auth_constants_1.EMAIL_AUTH_PROVIDER);
56
+ providerUserId = email;
57
+ }
58
+ else if (phone) {
59
+ provider = this.authProviders.find(p => p.providerId === auth_constants_1.PHONE_AUTH_PROVIDER);
60
+ providerUserId = phone;
61
+ }
62
+ if (!provider) {
63
+ throw new common_1.BadRequestException('Phone or email authentication is not enabled');
64
+ }
65
+ const identity = await provider.findIdentity(providerUserId);
66
+ if (identity) {
67
+ if (email) {
68
+ throw new common_1.BadRequestException('Email already exists in this tenant');
69
+ }
70
+ if (phone) {
71
+ throw new common_1.BadRequestException('Phone number already exists in this tenant');
72
+ }
73
+ }
74
+ let user = this.userRepository.create({
75
+ email,
76
+ phone,
77
+ tenantId,
78
+ isVerified: false,
79
+ });
80
+ await user.setPassword(password);
81
+ await this.userRepository.save(user);
82
+ user = await this.getUserWithRolesAndPermissions(user.id);
83
+ await provider.linkToUser(user.id, providerUserId);
84
+ const session = await this.sessionService.createSessionFromUser(user);
85
+ const tokens = await this.generateTokensFromSession(session);
86
+ const isRequiresMfa = await this.mfaService.isRequiresMfa(user.id);
87
+ return {
88
+ accessToken: tokens.accessToken,
89
+ refreshToken: tokens.refreshToken,
90
+ isRequiresMfa: isRequiresMfa,
91
+ };
92
+ }
93
+ async login(input) {
94
+ const { credentials, providerId, tenantId = null, createUserIfNotExists = false } = input;
95
+ const provider = this.authProviders.find(p => p.providerId === providerId);
96
+ if (!provider) {
97
+ throw new common_1.UnauthorizedException('Invalid authentication providerId or provider is not enabled');
98
+ }
99
+ const requiredFields = provider.getRequiredFields();
100
+ if (!requiredFields.every(field => credentials[field])) {
101
+ throw new common_1.BadRequestException(`Missing ${requiredFields.join(', ')} required fields`);
102
+ }
103
+ const authProviderUser = await provider.validate(credentials);
104
+ const identity = await provider.findIdentity(authProviderUser.userId);
105
+ let user = identity?.user || null;
106
+ if (!user) {
107
+ if (!createUserIfNotExists) {
108
+ throw new common_1.UnauthorizedException('Invalid credentials');
109
+ }
110
+ user = await this.handleSocialLogin(provider, authProviderUser);
111
+ }
112
+ user = await this.getUserWithRolesAndPermissions(user.id);
113
+ const session = await this.sessionService.createSessionFromUser(user);
114
+ const tokens = await this.generateTokensFromSession(session);
115
+ const isRequiresMfa = await this.mfaService.isRequiresMfa(user.id);
116
+ return {
117
+ accessToken: tokens.accessToken,
118
+ refreshToken: tokens.refreshToken,
119
+ isRequiresMfa: isRequiresMfa,
120
+ };
121
+ }
122
+ async verify2fa(input) {
123
+ const session = request_context_1.RequestContext.currentSession();
124
+ if (!session) {
125
+ throw new common_1.UnauthorizedException({
126
+ message: 'Session not found',
127
+ code: auth_constants_1.SESSION_NOT_FOUND_ERROR,
128
+ });
129
+ }
130
+ const isValid = await this.mfaService.verifyMfa(session.userId, input.otp, input.method);
131
+ if (!isValid) {
132
+ throw new common_1.UnauthorizedException({
133
+ message: 'Invalid MFA code',
134
+ code: auth_constants_1.INVALID_MFA_EXCEPTION_CODE,
135
+ });
136
+ }
137
+ const payload = await this.sessionService.updateSession(session.id, {
138
+ data: {
139
+ ...session.data,
140
+ isMfaVerified: true,
141
+ }
142
+ });
143
+ const tokens = await this.generateTokensFromSession(payload);
144
+ return {
145
+ accessToken: tokens.accessToken,
146
+ refreshToken: tokens.refreshToken,
147
+ };
148
+ }
149
+ async send2faCode(userId, method) {
150
+ const user = await this.userRepository.findOne({ where: { id: userId } });
151
+ if (!user) {
152
+ throw new common_1.UnauthorizedException('User not found');
153
+ }
154
+ await this.mfaService.sendMfaCode(user.id, method);
155
+ return true;
156
+ }
157
+ async handleSocialLogin(provider, providerUser) {
158
+ let identity = await provider.findIdentity(providerUser.userId);
159
+ if (identity) {
160
+ return identity.user;
161
+ }
162
+ const linkUserWith = provider.linkUserWith();
163
+ let user = await this.userRepository.findOne({ where: { [linkUserWith]: providerUser.userId } });
164
+ if (!user) {
165
+ user = this.userRepository.create({
166
+ [linkUserWith]: providerUser.userId,
167
+ isVerified: true,
168
+ metadata: providerUser.metadata || {},
169
+ });
170
+ await this.userRepository.save(user);
171
+ }
172
+ await provider.linkToUser(user.id, providerUser.userId, providerUser.metadata || {});
173
+ return user;
174
+ }
175
+ async refreshToken(refreshToken) {
176
+ if (!refreshToken) {
177
+ throw new common_1.UnauthorizedException({
178
+ message: 'No refresh token provided',
179
+ code: auth_constants_1.REFRESH_TOKEN_INVALID,
180
+ });
181
+ }
182
+ let payload;
183
+ try {
184
+ payload = await this.jwtService.verifyToken(refreshToken);
185
+ }
186
+ catch (error) {
187
+ throw new common_1.UnauthorizedException({
188
+ message: 'Invalid or expired refresh token',
189
+ code: auth_constants_1.REFRESH_TOKEN_EXPIRED,
190
+ });
191
+ }
192
+ const session = await this.sessionService.getSession(payload.sessionId);
193
+ if (!session) {
194
+ throw new common_1.UnauthorizedException({
195
+ message: 'Invalid refresh token',
196
+ code: auth_constants_1.REFRESH_TOKEN_INVALID,
197
+ });
198
+ }
199
+ const newSession = await this.sessionService.createSessionFromSession(session);
200
+ await this.sessionService.revokeSession(session.id);
201
+ const tokens = await this.generateTokensFromSession(newSession);
202
+ return tokens;
203
+ }
204
+ async forgotPassword(input) {
205
+ const { email, phone, tenantId = null } = input;
206
+ let provider = null;
207
+ if (phone) {
208
+ provider = this.authProviders.find(p => p.providerId === auth_constants_1.PHONE_AUTH_PROVIDER);
209
+ }
210
+ else if (email) {
211
+ provider = this.authProviders.find(p => p.providerId === auth_constants_1.EMAIL_AUTH_PROVIDER);
212
+ }
213
+ else {
214
+ throw new common_1.BadRequestException('Either email or phone must be provided');
215
+ }
216
+ if (!provider) {
217
+ throw new common_1.BadRequestException('Phone or email authentication is not enabled');
218
+ }
219
+ if (!provider.enabled) {
220
+ if (email) {
221
+ throw new common_1.BadRequestException('Email authentication is not enabled');
222
+ }
223
+ else if (phone) {
224
+ throw new common_1.BadRequestException('Phone authentication is not enabled');
225
+ }
226
+ }
227
+ const identity = await provider.findIdentity(email || phone);
228
+ if (!identity) {
229
+ return { message: 'If the account exists, a password reset code has been sent' };
230
+ }
231
+ const otp = (0, otp_1.generateOtp)();
232
+ const expiresAt = new Date();
233
+ expiresAt.setMinutes(expiresAt.getMinutes() + 15);
234
+ await this.otpRepository.save({
235
+ userId: identity.user?.id,
236
+ code: otp,
237
+ expiresAt,
238
+ type: otp_entity_1.OTPTypeEnum.PASSWORD_RESET
239
+ });
240
+ if (email) {
241
+ console.info(`Password reset OTP for ${email}: ${otp}`);
242
+ }
243
+ else if (phone) {
244
+ console.info(`Password reset OTP for ${phone}: ${otp}`);
245
+ }
246
+ return true;
247
+ }
248
+ async resetPassword(input) {
249
+ const { email, phone, otp, newPassword, tenantId = null } = input;
250
+ if (!email && !phone) {
251
+ throw new common_1.BadRequestException('Either email or phone must be provided');
252
+ }
253
+ const user = await this.userRepository.findOne({
254
+ where: [
255
+ ...(email ? [{ email, tenantId }] : []),
256
+ ...(phone ? [{ phone, tenantId }] : [])
257
+ ]
258
+ });
259
+ if (!user) {
260
+ throw new common_1.BadRequestException('Invalid reset request');
261
+ }
262
+ const validOtp = await this.otpRepository.findOne({
263
+ where: {
264
+ userId: user.id,
265
+ code: otp,
266
+ type: otp_entity_1.OTPTypeEnum.PASSWORD_RESET,
267
+ expiresAt: (0, typeorm_3.MoreThan)(new Date()),
268
+ used: false
269
+ }
270
+ });
271
+ if (!validOtp) {
272
+ throw new common_1.BadRequestException('Invalid or expired OTP');
273
+ }
274
+ await user.setPassword(newPassword);
275
+ await this.userRepository.save(user);
276
+ validOtp.used = true;
277
+ await this.otpRepository.save(validOtp);
278
+ return true;
279
+ }
280
+ async logout() {
281
+ const session = request_context_1.RequestContext.currentSession();
282
+ if (!session) {
283
+ throw new common_1.UnauthorizedException('Session not found');
284
+ }
285
+ if (session) {
286
+ await this.sessionService.revokeSession(session.id);
287
+ }
288
+ return true;
289
+ }
290
+ async logoutAll(userId) {
291
+ await this.sessionService.revokeUserSessions(userId);
292
+ return true;
293
+ }
294
+ async listDevices(userId) {
295
+ const sessions = await this.sessionRepository.find({
296
+ where: { userId },
297
+ select: ['id', 'deviceName', 'lastActive', 'ipAddress'],
298
+ });
299
+ return sessions.map(session => ({
300
+ id: session.id,
301
+ name: session.deviceName || 'Unknown Device',
302
+ lastActive: session.lastActive,
303
+ ipAddress: session.ipAddress,
304
+ }));
305
+ }
306
+ async deleteDevice(userId, deviceId) {
307
+ await this.sessionRepository.delete({ userId, id: deviceId });
308
+ return { message: 'Device removed successfully' };
309
+ }
310
+ generateTokensPayload(session, otherPayload = {}) {
311
+ const payload = {
312
+ sub: session.userId,
313
+ sessionId: session.id,
314
+ email: session.data?.user?.email,
315
+ phone: session.data?.user?.phone,
316
+ isVerified: session.data?.user?.isVerified,
317
+ roles: session.data?.roles,
318
+ tenantId: session.data?.user?.tenantId,
319
+ isMfaEnabled: session.data?.user?.isMfaEnabled,
320
+ isMfaVerified: session.data?.isMfaVerified,
321
+ ...otherPayload,
322
+ };
323
+ return payload;
324
+ }
325
+ async generateTokensFromSession(session) {
326
+ const payload = this.generateTokensPayload(session);
327
+ const tokens = await this.jwtService.generateTokens(payload);
328
+ return tokens;
329
+ }
330
+ };
331
+ exports.AuthService = AuthService;
332
+ exports.AuthService = AuthService = tslib_1.__decorate([
333
+ (0, common_1.Injectable)(),
334
+ tslib_1.__param(0, (0, typeorm_1.InjectRepository)(user_entity_1.User)),
335
+ tslib_1.__param(1, (0, typeorm_1.InjectRepository)(session_entity_1.Session)),
336
+ tslib_1.__param(2, (0, typeorm_1.InjectRepository)(otp_entity_1.OTP)),
337
+ tslib_1.__param(3, (0, common_1.Inject)(auth_constants_1.ENABLED_AUTH_PROVIDERS)),
338
+ tslib_1.__metadata("design:paramtypes", [typeorm_2.Repository,
339
+ typeorm_2.Repository,
340
+ typeorm_2.Repository, Array, mfa_service_1.MfaService,
341
+ base_session_service_1.BaseSessionService,
342
+ jwt_service_1.JwtService])
343
+ ], AuthService);
344
+ //# sourceMappingURL=auth.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.service.js","sourceRoot":"","sources":["../../../../../../packages/nest-auth/src/lib/services/auth.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { Response } from 'express';
2
+ import { AuthModuleOptions } from '../interfaces/auth-module-options.interface';
3
+ export declare class CookieService {
4
+ private options;
5
+ constructor(options: AuthModuleOptions);
6
+ setAccessTokenCookie(response: Response, token: string): void;
7
+ setRefreshTokenCookie(response: Response, token: string): void;
8
+ clearCookies(response: Response): void;
9
+ setTokens(response: Response, accessToken: string, refreshToken: string): void;
10
+ }