@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,39 @@
1
+ import { User } from '../entities/user.entity';
2
+ export interface JWTTokenPayload {
3
+ id?: string;
4
+ sub?: string;
5
+ email?: string;
6
+ phone?: string;
7
+ isVerified?: boolean;
8
+ roles?: string[];
9
+ tenantId?: string;
10
+ isMfaEnabled?: boolean;
11
+ isMfaVerified?: boolean;
12
+ sessionId?: string;
13
+ type?: 'access' | 'refresh';
14
+ exp?: number;
15
+ iat?: number;
16
+ }
17
+ export interface SessionPayload {
18
+ id?: string;
19
+ userId?: string;
20
+ refreshToken?: string;
21
+ userAgent?: string;
22
+ ipAddress?: string;
23
+ deviceName?: string;
24
+ data?: {
25
+ user: User;
26
+ isMfaVerified: boolean;
27
+ roles: string[];
28
+ permissions: string[];
29
+ };
30
+ expiresAt?: Date;
31
+ lastActive: Date;
32
+ createdAt?: Date;
33
+ updatedAt?: Date;
34
+ }
35
+ export interface TokenGenerationResponse {
36
+ accessToken: string;
37
+ refreshToken: string;
38
+ user?: User;
39
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=token-payload.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token-payload.interface.js","sourceRoot":"","sources":["../../../../../../packages/nest-auth/src/lib/interfaces/token-payload.interface.ts"],"names":[],"mappings":""}
@@ -0,0 +1,6 @@
1
+ import { MigrationInterface, QueryRunner } from "typeorm";
2
+ export declare class Migration1746242659133 implements MigrationInterface {
3
+ name: string;
4
+ up(queryRunner: QueryRunner): Promise<void>;
5
+ down(queryRunner: QueryRunner): Promise<void>;
6
+ }
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Migration1746242659133 = void 0;
4
+ class Migration1746242659133 {
5
+ constructor() {
6
+ this.name = 'Migration1746242659133';
7
+ }
8
+ async up(queryRunner) {
9
+ await queryRunner.query(`CREATE TABLE "nest_auth_tenants" ("id" uuid NOT NULL DEFAULT uuid_generate_v4(), "name" character varying NOT NULL, "domain" character varying, "createdByUserId" character varying, "createdAt" TIMESTAMP NOT NULL DEFAULT now(), "updatedAt" TIMESTAMP NOT NULL DEFAULT now(), CONSTRAINT "UQ_5c7ee0a1cea7262fe4b05131e47" UNIQUE ("domain"), CONSTRAINT "PK_ba45cc5aed381c14d3005cf296c" PRIMARY KEY ("id"))`);
10
+ await queryRunner.query(`CREATE TABLE "nest_auth_permissions" ("id" uuid NOT NULL DEFAULT uuid_generate_v4(), "name" character varying NOT NULL, "description" character varying, "createdAt" TIMESTAMP NOT NULL DEFAULT now(), "updatedAt" TIMESTAMP NOT NULL DEFAULT now(), CONSTRAINT "PK_843fb7e1457834361ed7570d3b9" PRIMARY KEY ("id"))`);
11
+ await queryRunner.query(`CREATE TABLE "nest_auth_role_permissions" ("roleId" uuid NOT NULL, "permissionId" uuid NOT NULL, CONSTRAINT "PK_8067a601510dd6fd8927a40ac38" PRIMARY KEY ("roleId", "permissionId"))`);
12
+ await queryRunner.query(`CREATE TABLE "nest_auth_roles" ("id" uuid NOT NULL DEFAULT uuid_generate_v4(), "name" character varying NOT NULL, "description" character varying, "createdAt" TIMESTAMP NOT NULL DEFAULT now(), "updatedAt" TIMESTAMP NOT NULL DEFAULT now(), CONSTRAINT "PK_7ebd7c1e0f8faa171b69ca3e237" PRIMARY KEY ("id"))`);
13
+ await queryRunner.query(`CREATE TABLE "nest_auth_user_roles" ("userId" uuid NOT NULL, "roleId" uuid NOT NULL, "tenantId" uuid NOT NULL, "createdAt" TIMESTAMP NOT NULL DEFAULT now(), "updatedAt" TIMESTAMP NOT NULL DEFAULT now(), CONSTRAINT "PK_66a7e82e417c81bd8d892f5029b" PRIMARY KEY ("userId", "roleId", "tenantId"))`);
14
+ await queryRunner.query(`CREATE TABLE "nest_auth_mfa_secrets" ("id" uuid NOT NULL DEFAULT uuid_generate_v4(), "userId" uuid, "secret" character varying NOT NULL, "verified" boolean NOT NULL DEFAULT false, "deviceName" character varying, "lastUsedAt" TIMESTAMP, "createdAt" TIMESTAMP NOT NULL DEFAULT now(), "updatedAt" TIMESTAMP NOT NULL DEFAULT now(), CONSTRAINT "PK_effef8b53e6d1eb3bd36dd76117" PRIMARY KEY ("id"))`);
15
+ await queryRunner.query(`CREATE TABLE "nest_auth_sessions" ("id" uuid NOT NULL DEFAULT uuid_generate_v4(), "userId" uuid, "data" text DEFAULT '{}', "refreshToken" character varying, "expiresAt" TIMESTAMP, "userAgent" character varying, "deviceName" character varying, "ipAddress" character varying, "lastActive" TIMESTAMP, "createdAt" TIMESTAMP NOT NULL DEFAULT now(), "updatedAt" TIMESTAMP NOT NULL DEFAULT now(), CONSTRAINT "PK_b51d540fb19801e1fabfcd4cc25" PRIMARY KEY ("id"))`);
16
+ await queryRunner.query(`CREATE TABLE "nest_auth_otps" ("id" uuid NOT NULL DEFAULT uuid_generate_v4(), "code" character varying NOT NULL, "type" character varying NOT NULL, "expiresAt" TIMESTAMP NOT NULL, "used" boolean NOT NULL DEFAULT false, "userId" uuid, "createdAt" TIMESTAMP NOT NULL DEFAULT now(), CONSTRAINT "PK_feb667fc6a6f684329fbdb6df7b" PRIMARY KEY ("id"))`);
17
+ await queryRunner.query(`CREATE TABLE "nest_auth_users" ("id" uuid NOT NULL DEFAULT uuid_generate_v4(), "firstName" character varying, "lastName" character varying, "displayName" character varying, "email" character varying, "emailVerifiedAt" TIMESTAMP, "phone" character varying, "phoneVerifiedAt" TIMESTAMP, "passwordHash" character varying, "isVerified" boolean NOT NULL DEFAULT false, "isActive" boolean NOT NULL DEFAULT true, "metadata" text DEFAULT '{}', "tenantId" uuid, "isMfaEnabled" boolean NOT NULL DEFAULT false, "mfaRecoveryCode" character varying, "createdAt" TIMESTAMP NOT NULL DEFAULT now(), "updatedAt" TIMESTAMP NOT NULL DEFAULT now(), "emailTenant" character varying, "phoneTenant" character varying, CONSTRAINT "PK_f8c4a108b080822fe175136b2b4" PRIMARY KEY ("id"))`);
18
+ await queryRunner.query(`CREATE INDEX "IDX_f205a76fddd9b6112e8ebadceb" ON "nest_auth_users" ("email") `);
19
+ await queryRunner.query(`CREATE INDEX "IDX_b9394230fea3a13678fcc49c0b" ON "nest_auth_users" ("emailVerifiedAt") `);
20
+ await queryRunner.query(`CREATE INDEX "IDX_8969475b8054414c938bf750bf" ON "nest_auth_users" ("phone") `);
21
+ await queryRunner.query(`CREATE INDEX "IDX_cddb7f4f8d2445b7cae9406c5f" ON "nest_auth_users" ("phoneVerifiedAt") `);
22
+ await queryRunner.query(`CREATE UNIQUE INDEX "IDX_USER_EMAIL_TENANT" ON "nest_auth_users" ("emailTenant") `);
23
+ await queryRunner.query(`CREATE UNIQUE INDEX "IDX_USER_PHONE_TENANT" ON "nest_auth_users" ("phoneTenant") `);
24
+ await queryRunner.query(`CREATE TABLE "auth_identities" ("id" uuid NOT NULL DEFAULT uuid_generate_v4(), "provider" character varying NOT NULL, "providerId" character varying, "metadata" text DEFAULT '{}', "createdAt" TIMESTAMP NOT NULL DEFAULT now(), "updatedAt" TIMESTAMP NOT NULL DEFAULT now(), "userId" uuid, CONSTRAINT "PK_63a29aebcddd09448dbeee4666b" PRIMARY KEY ("id"))`);
25
+ await queryRunner.query(`ALTER TABLE "nest_auth_role_permissions" ADD CONSTRAINT "FK_e890e94238c68a858bce449faa4" FOREIGN KEY ("roleId") REFERENCES "nest_auth_roles"("id") ON DELETE CASCADE ON UPDATE NO ACTION`);
26
+ await queryRunner.query(`ALTER TABLE "nest_auth_role_permissions" ADD CONSTRAINT "FK_f4db4c9f909314ea01e3924f1a6" FOREIGN KEY ("permissionId") REFERENCES "nest_auth_permissions"("id") ON DELETE CASCADE ON UPDATE NO ACTION`);
27
+ await queryRunner.query(`ALTER TABLE "nest_auth_user_roles" ADD CONSTRAINT "FK_ef42754933234ac1092319fde39" FOREIGN KEY ("userId") REFERENCES "nest_auth_users"("id") ON DELETE CASCADE ON UPDATE NO ACTION`);
28
+ await queryRunner.query(`ALTER TABLE "nest_auth_user_roles" ADD CONSTRAINT "FK_e960d551ae46638da46ae26bb7c" FOREIGN KEY ("roleId") REFERENCES "nest_auth_roles"("id") ON DELETE CASCADE ON UPDATE NO ACTION`);
29
+ await queryRunner.query(`ALTER TABLE "nest_auth_user_roles" ADD CONSTRAINT "FK_3059f244088592434e620429f9e" FOREIGN KEY ("tenantId") REFERENCES "nest_auth_tenants"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`);
30
+ await queryRunner.query(`ALTER TABLE "nest_auth_mfa_secrets" ADD CONSTRAINT "FK_0a98696968066c0dbe3ab9e5c2f" FOREIGN KEY ("userId") REFERENCES "nest_auth_users"("id") ON DELETE CASCADE ON UPDATE NO ACTION`);
31
+ await queryRunner.query(`ALTER TABLE "nest_auth_sessions" ADD CONSTRAINT "FK_f63d081d00c171b7f5da6585e55" FOREIGN KEY ("userId") REFERENCES "nest_auth_users"("id") ON DELETE CASCADE ON UPDATE NO ACTION`);
32
+ await queryRunner.query(`ALTER TABLE "nest_auth_otps" ADD CONSTRAINT "FK_e442622c3ec0c9832b666653c62" FOREIGN KEY ("userId") REFERENCES "nest_auth_users"("id") ON DELETE CASCADE ON UPDATE NO ACTION`);
33
+ await queryRunner.query(`ALTER TABLE "nest_auth_users" ADD CONSTRAINT "FK_148a7bcc4883ec21e3d993998ef" FOREIGN KEY ("tenantId") REFERENCES "nest_auth_tenants"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`);
34
+ await queryRunner.query(`ALTER TABLE "auth_identities" ADD CONSTRAINT "FK_6ed26ac7e2276ae145ca68c23af" FOREIGN KEY ("userId") REFERENCES "nest_auth_users"("id") ON DELETE CASCADE ON UPDATE NO ACTION`);
35
+ }
36
+ async down(queryRunner) {
37
+ await queryRunner.query(`ALTER TABLE "auth_identities" DROP CONSTRAINT "FK_6ed26ac7e2276ae145ca68c23af"`);
38
+ await queryRunner.query(`ALTER TABLE "nest_auth_users" DROP CONSTRAINT "FK_148a7bcc4883ec21e3d993998ef"`);
39
+ await queryRunner.query(`ALTER TABLE "nest_auth_otps" DROP CONSTRAINT "FK_e442622c3ec0c9832b666653c62"`);
40
+ await queryRunner.query(`ALTER TABLE "nest_auth_sessions" DROP CONSTRAINT "FK_f63d081d00c171b7f5da6585e55"`);
41
+ await queryRunner.query(`ALTER TABLE "nest_auth_mfa_secrets" DROP CONSTRAINT "FK_0a98696968066c0dbe3ab9e5c2f"`);
42
+ await queryRunner.query(`ALTER TABLE "nest_auth_user_roles" DROP CONSTRAINT "FK_3059f244088592434e620429f9e"`);
43
+ await queryRunner.query(`ALTER TABLE "nest_auth_user_roles" DROP CONSTRAINT "FK_e960d551ae46638da46ae26bb7c"`);
44
+ await queryRunner.query(`ALTER TABLE "nest_auth_user_roles" DROP CONSTRAINT "FK_ef42754933234ac1092319fde39"`);
45
+ await queryRunner.query(`ALTER TABLE "nest_auth_role_permissions" DROP CONSTRAINT "FK_f4db4c9f909314ea01e3924f1a6"`);
46
+ await queryRunner.query(`ALTER TABLE "nest_auth_role_permissions" DROP CONSTRAINT "FK_e890e94238c68a858bce449faa4"`);
47
+ await queryRunner.query(`DROP TABLE "auth_identities"`);
48
+ await queryRunner.query(`DROP INDEX "public"."IDX_USER_PHONE_TENANT"`);
49
+ await queryRunner.query(`DROP INDEX "public"."IDX_USER_EMAIL_TENANT"`);
50
+ await queryRunner.query(`DROP INDEX "public"."IDX_cddb7f4f8d2445b7cae9406c5f"`);
51
+ await queryRunner.query(`DROP INDEX "public"."IDX_8969475b8054414c938bf750bf"`);
52
+ await queryRunner.query(`DROP INDEX "public"."IDX_b9394230fea3a13678fcc49c0b"`);
53
+ await queryRunner.query(`DROP INDEX "public"."IDX_f205a76fddd9b6112e8ebadceb"`);
54
+ await queryRunner.query(`DROP TABLE "nest_auth_users"`);
55
+ await queryRunner.query(`DROP TABLE "nest_auth_otps"`);
56
+ await queryRunner.query(`DROP TABLE "nest_auth_sessions"`);
57
+ await queryRunner.query(`DROP TABLE "nest_auth_mfa_secrets"`);
58
+ await queryRunner.query(`DROP TABLE "nest_auth_user_roles"`);
59
+ await queryRunner.query(`DROP TABLE "nest_auth_roles"`);
60
+ await queryRunner.query(`DROP TABLE "nest_auth_role_permissions"`);
61
+ await queryRunner.query(`DROP TABLE "nest_auth_permissions"`);
62
+ await queryRunner.query(`DROP TABLE "nest_auth_tenants"`);
63
+ }
64
+ }
65
+ exports.Migration1746242659133 = Migration1746242659133;
66
+ //# sourceMappingURL=1746242659133-migration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"1746242659133-migration.js","sourceRoot":"","sources":["../../../../../../packages/nest-auth/src/lib/migrations/1746242659133-migration.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { MigrationInterface, QueryRunner } from "typeorm";
2
+ export declare class Migration1746244352713 implements MigrationInterface {
3
+ name: string;
4
+ up(queryRunner: QueryRunner): Promise<void>;
5
+ down(queryRunner: QueryRunner): Promise<void>;
6
+ }
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Migration1746244352713 = void 0;
4
+ class Migration1746244352713 {
5
+ constructor() {
6
+ this.name = 'Migration1746244352713';
7
+ }
8
+ async up(queryRunner) {
9
+ await queryRunner.query(`ALTER TABLE "nest_auth_users" DROP COLUMN "displayName"`);
10
+ }
11
+ async down(queryRunner) {
12
+ await queryRunner.query(`ALTER TABLE "nest_auth_users" ADD "displayName" character varying`);
13
+ }
14
+ }
15
+ exports.Migration1746244352713 = Migration1746244352713;
16
+ //# sourceMappingURL=1746244352713-migration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"1746244352713-migration.js","sourceRoot":"","sources":["../../../../../../packages/nest-auth/src/lib/migrations/1746244352713-migration.ts"],"names":[],"mappings":";;;AAEA,MAAa,sBAAsB;IAAnC;QACI,SAAI,GAAG,wBAAwB,CAAA;IAUnC,CAAC;IARU,KAAK,CAAC,EAAE,CAAC,WAAwB;QACpC,MAAM,WAAW,CAAC,KAAK,CAAC,yDAAyD,CAAC,CAAC;IACvF,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,WAAwB;QACtC,MAAM,WAAW,CAAC,KAAK,CAAC,mEAAmE,CAAC,CAAC;IACjG,CAAC;CAEJ;AAXD,wDAWC"}
@@ -0,0 +1,13 @@
1
+ import { DynamicModule, Provider, MiddlewareConsumer } from '@nestjs/common';
2
+ import { AuthModuleAsyncOptions, AuthModuleOptions } from './interfaces/auth-module-options.interface';
3
+ export declare class NestAuthModule {
4
+ static moduleDefaultOptions: Partial<AuthModuleOptions>;
5
+ private static createDynamicModule;
6
+ static forRoot(options: AuthModuleOptions): DynamicModule;
7
+ static forRootAsync(options: AuthModuleAsyncOptions): DynamicModule;
8
+ static createSessionBaseServiceProvider(): Provider[];
9
+ private static registerCustomProviders;
10
+ private static createAsyncProviders;
11
+ static getOptions(options: AuthModuleOptions): AuthModuleOptions;
12
+ configure(consumer: MiddlewareConsumer): void;
13
+ }
@@ -0,0 +1,247 @@
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 entities_1 = require("./entities");
9
+ const auth_constants_1 = require("./auth.constants");
10
+ const auth_service_1 = require("./services/auth.service");
11
+ const auth_guard_1 = require("./guards/auth.guard");
12
+ const email_auth_provider_1 = require("./providers/email-auth.provider");
13
+ const apple_auth_provider_1 = require("./providers/apple-auth.provider");
14
+ const facebook_auth_provider_1 = require("./providers/facebook-auth.provider");
15
+ const google_auth_provider_1 = require("./providers/google-auth.provider");
16
+ const jwt_auth_provider_1 = require("./providers/jwt-auth.provider");
17
+ const phone_auth_provider_1 = require("./providers/phone-auth.provider");
18
+ const auth_provider_registry_service_1 = require("./services/auth-provider-registry.service");
19
+ const request_context_middleware_1 = require("./request-context/request-context.middleware");
20
+ const auth_migration_service_1 = require("./services/auth-migration-service");
21
+ const mfa_service_1 = require("./services/mfa.service");
22
+ const database_session_service_1 = require("./services/session/database-session.service");
23
+ const redis_session_service_1 = require("./services/session/redis-session.service");
24
+ const session_options_interface_1 = require("./interfaces/session-options.interface");
25
+ const base_session_service_1 = require("./services/session/base-session.service");
26
+ const ioredis_1 = require("@nestjs-modules/ioredis");
27
+ const deepmerge_1 = tslib_1.__importDefault(require("deepmerge"));
28
+ const mfa_options_interface_1 = require("./interfaces/mfa-options.interface");
29
+ const jwt_service_1 = require("./services/jwt.service");
30
+ const cookie_service_1 = require("./services/cookie.service");
31
+ const mfa_controller_1 = require("./controllers/mfa.controller");
32
+ const auth_controller_1 = require("./controllers/auth.controller");
33
+ let NestAuthModule = NestAuthModule_1 = class NestAuthModule {
34
+ static createDynamicModule(providers, imports = []) {
35
+ const commonProviders = [
36
+ auth_migration_service_1.AuthMigrationService,
37
+ auth_service_1.AuthService,
38
+ auth_guard_1.AuthGuard,
39
+ email_auth_provider_1.EmailAuthProvider,
40
+ phone_auth_provider_1.PhoneAuthProvider,
41
+ jwt_auth_provider_1.JwtAuthProvider,
42
+ google_auth_provider_1.GoogleAuthProvider,
43
+ facebook_auth_provider_1.FacebookAuthProvider,
44
+ apple_auth_provider_1.AppleAuthProvider,
45
+ auth_provider_registry_service_1.AuthProviderRegistryService,
46
+ mfa_service_1.MfaService,
47
+ jwt_service_1.JwtService,
48
+ cookie_service_1.CookieService,
49
+ ...this.createSessionBaseServiceProvider(),
50
+ {
51
+ provide: auth_constants_1.ENABLED_AUTH_PROVIDERS,
52
+ useFactory: (registry, options) => {
53
+ if (options.customAuthProviders) {
54
+ options.customAuthProviders.forEach(provider => {
55
+ registry.registerProvider(provider);
56
+ });
57
+ }
58
+ return registry.getAllProviders();
59
+ },
60
+ inject: [auth_provider_registry_service_1.AuthProviderRegistryService, auth_constants_1.AUTH_MODULE_OPTIONS],
61
+ },
62
+ ];
63
+ return {
64
+ module: NestAuthModule_1,
65
+ controllers: [
66
+ auth_controller_1.AuthController,
67
+ mfa_controller_1.MfaController,
68
+ ],
69
+ imports: [
70
+ typeorm_1.TypeOrmModule.forFeature(entities_1.AllAuthEntities),
71
+ ioredis_1.RedisModule.forRoot({
72
+ url: 'redis://localhost:6379',
73
+ type: 'single',
74
+ }),
75
+ ...imports,
76
+ ],
77
+ providers: [...providers, ...commonProviders],
78
+ exports: [
79
+ auth_constants_1.AUTH_MODULE_OPTIONS,
80
+ auth_migration_service_1.AuthMigrationService,
81
+ auth_service_1.AuthService,
82
+ auth_guard_1.AuthGuard,
83
+ email_auth_provider_1.EmailAuthProvider,
84
+ phone_auth_provider_1.PhoneAuthProvider,
85
+ jwt_auth_provider_1.JwtAuthProvider,
86
+ google_auth_provider_1.GoogleAuthProvider,
87
+ facebook_auth_provider_1.FacebookAuthProvider,
88
+ apple_auth_provider_1.AppleAuthProvider,
89
+ auth_provider_registry_service_1.AuthProviderRegistryService,
90
+ mfa_service_1.MfaService,
91
+ base_session_service_1.BaseSessionService,
92
+ jwt_service_1.JwtService,
93
+ cookie_service_1.CookieService,
94
+ auth_constants_1.ENABLED_AUTH_PROVIDERS,
95
+ ],
96
+ };
97
+ }
98
+ static forRoot(options) {
99
+ const mergedOptions = this.getOptions(options);
100
+ const providers = [
101
+ {
102
+ provide: auth_constants_1.AUTH_MODULE_OPTIONS,
103
+ useValue: mergedOptions,
104
+ },
105
+ ];
106
+ return this.createDynamicModule(providers, []);
107
+ }
108
+ static forRootAsync(options) {
109
+ const asyncProviders = [...this.createAsyncProviders(options)];
110
+ return this.createDynamicModule(asyncProviders, options.imports);
111
+ }
112
+ static createSessionBaseServiceProvider() {
113
+ return [
114
+ redis_session_service_1.RedisSessionService,
115
+ database_session_service_1.DatabaseSessionService,
116
+ {
117
+ provide: base_session_service_1.BaseSessionService,
118
+ useFactory: (options, redisSessionService, databaseSessionService) => {
119
+ const sessionOptions = {
120
+ storageType: options.session?.storageType || session_options_interface_1.SessionStorageType.DATABASE,
121
+ redisUrl: options.session?.redisUrl,
122
+ sessionExpiry: options.session?.sessionExpiry,
123
+ refreshTokenExpiry: options.session?.refreshTokenExpiry,
124
+ };
125
+ if (sessionOptions.storageType === session_options_interface_1.SessionStorageType.REDIS) {
126
+ return redisSessionService;
127
+ }
128
+ else if (sessionOptions.storageType === session_options_interface_1.SessionStorageType.DATABASE) {
129
+ return databaseSessionService;
130
+ }
131
+ else {
132
+ throw new Error('Invalid session storage type');
133
+ }
134
+ },
135
+ inject: [auth_constants_1.AUTH_MODULE_OPTIONS, redis_session_service_1.RedisSessionService, database_session_service_1.DatabaseSessionService],
136
+ }
137
+ ];
138
+ }
139
+ static registerCustomProviders(options) {
140
+ const providers = [];
141
+ if (options?.customAuthProviders) {
142
+ options.customAuthProviders.forEach((provider) => {
143
+ providers.push({
144
+ provide: provider.providerId,
145
+ useValue: provider,
146
+ });
147
+ });
148
+ }
149
+ return providers;
150
+ }
151
+ static createAsyncProviders(options) {
152
+ if (options.useFactory) {
153
+ return [
154
+ {
155
+ provide: auth_constants_1.AUTH_MODULE_OPTIONS,
156
+ useFactory: async (...args) => {
157
+ const config = await options.useFactory(...args);
158
+ const mergedOptions = this.getOptions(config);
159
+ return {
160
+ ...mergedOptions,
161
+ ...this.registerCustomProviders(mergedOptions),
162
+ };
163
+ },
164
+ inject: options.inject || [],
165
+ },
166
+ ];
167
+ }
168
+ let useClassProvider;
169
+ if (options.useClass) {
170
+ useClassProvider = {
171
+ provide: options.useClass,
172
+ useClass: options.useClass,
173
+ };
174
+ }
175
+ return [
176
+ {
177
+ provide: auth_constants_1.AUTH_MODULE_OPTIONS,
178
+ useFactory: async (optionsFactory) => {
179
+ const options = await optionsFactory.createAuthModuleOptions();
180
+ return {
181
+ ...options,
182
+ ...this.registerCustomProviders(options),
183
+ };
184
+ },
185
+ inject: [options.useExisting || options.useClass],
186
+ },
187
+ ...(useClassProvider ? [useClassProvider] : []),
188
+ ];
189
+ }
190
+ static getOptions(options) {
191
+ return (0, deepmerge_1.default)(this.moduleDefaultOptions, options);
192
+ }
193
+ configure(consumer) {
194
+ consumer.apply(request_context_middleware_1.RequestContextMiddleware).forRoutes('auth/*');
195
+ }
196
+ };
197
+ exports.NestAuthModule = NestAuthModule;
198
+ NestAuthModule.moduleDefaultOptions = {
199
+ passwordResetOtpExpiresIn: '15m',
200
+ session: {
201
+ storageType: session_options_interface_1.SessionStorageType.DATABASE,
202
+ sessionExpiry: '1h',
203
+ refreshTokenExpiry: '30d',
204
+ },
205
+ jwt: {
206
+ secret: 'secret',
207
+ },
208
+ accessTokenType: 'header',
209
+ cookieOptions: {
210
+ httpOnly: true,
211
+ secure: false,
212
+ },
213
+ emailAuth: {
214
+ enabled: true,
215
+ },
216
+ mfa: {
217
+ enabled: false,
218
+ methods: [mfa_options_interface_1.MFAMethodEnum.EMAIL, mfa_options_interface_1.MFAMethodEnum.TOTP],
219
+ allowUserToggle: true,
220
+ allowMethodSelection: true,
221
+ otpLength: 6,
222
+ otpExpiresIn: '15m',
223
+ },
224
+ };
225
+ exports.NestAuthModule = NestAuthModule = NestAuthModule_1 = tslib_1.__decorate([
226
+ (0, common_1.Module)({
227
+ imports: [
228
+ typeorm_1.TypeOrmModule.forFeature(entities_1.AllAuthEntities),
229
+ ],
230
+ providers: [
231
+ auth_migration_service_1.AuthMigrationService,
232
+ auth_service_1.AuthService,
233
+ auth_guard_1.AuthGuard,
234
+ auth_provider_registry_service_1.AuthProviderRegistryService,
235
+ mfa_service_1.MfaService,
236
+ jwt_service_1.JwtService,
237
+ ],
238
+ exports: [
239
+ auth_migration_service_1.AuthMigrationService,
240
+ auth_service_1.AuthService,
241
+ auth_guard_1.AuthGuard,
242
+ auth_provider_registry_service_1.AuthProviderRegistryService,
243
+ mfa_service_1.MfaService,
244
+ ],
245
+ })
246
+ ], NestAuthModule);
247
+ //# 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":"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"}
@@ -0,0 +1,23 @@
1
+ import { AuthIdentity } from '../entities/auth-identity.entity';
2
+ import { Repository } from 'typeorm';
3
+ import { BaseAuthProvider } from './base-auth.provider';
4
+ import { User } from '../entities/user.entity';
5
+ import { AuthModuleOptions } from '../interfaces/auth-module-options.interface';
6
+ import { JwtService } from '../services/jwt.service';
7
+ export declare class AppleAuthProvider extends BaseAuthProvider {
8
+ readonly userRepository: Repository<User>;
9
+ readonly authIdentityRepository: Repository<AuthIdentity>;
10
+ private options;
11
+ private readonly jwtService;
12
+ providerId: string;
13
+ private appleAuth;
14
+ constructor(userRepository: Repository<User>, authIdentityRepository: Repository<AuthIdentity>, options: AuthModuleOptions, jwtService: JwtService);
15
+ validate(credentials: {
16
+ accessToken: string;
17
+ }): Promise<{
18
+ userId: string;
19
+ email: string;
20
+ metadata: import("../interfaces/token-payload.interface").JWTTokenPayload;
21
+ }>;
22
+ getRequiredFields(): string[];
23
+ }
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AppleAuthProvider = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const apple_auth_1 = tslib_1.__importDefault(require("apple-auth"));
6
+ const common_1 = require("@nestjs/common");
7
+ const auth_identity_entity_1 = require("../entities/auth-identity.entity");
8
+ const typeorm_1 = require("typeorm");
9
+ const base_auth_provider_1 = require("./base-auth.provider");
10
+ const user_entity_1 = require("../entities/user.entity");
11
+ const typeorm_2 = require("@nestjs/typeorm");
12
+ const auth_constants_1 = require("../auth.constants");
13
+ const jwt_service_1 = require("../services/jwt.service");
14
+ let AppleAuthProvider = class AppleAuthProvider extends base_auth_provider_1.BaseAuthProvider {
15
+ constructor(userRepository, authIdentityRepository, options, jwtService) {
16
+ super(userRepository, authIdentityRepository);
17
+ this.userRepository = userRepository;
18
+ this.authIdentityRepository = authIdentityRepository;
19
+ this.options = options;
20
+ this.jwtService = jwtService;
21
+ this.providerId = auth_constants_1.APPLE_AUTH_PROVIDER;
22
+ const appleConfig = this.options.apple;
23
+ this.enabled = Boolean(this.options.apple);
24
+ if (this.enabled) {
25
+ this.appleAuth = new apple_auth_1.default({
26
+ scope: 'email name',
27
+ redirect_uri: appleConfig.redirectUri,
28
+ team_id: appleConfig.teamId,
29
+ key_id: appleConfig.keyId,
30
+ client_id: appleConfig.clientId,
31
+ }, appleConfig.privateKey, appleConfig.privateKeyMethod || 'text');
32
+ }
33
+ }
34
+ async validate(credentials) {
35
+ try {
36
+ const response = await this.appleAuth.accessToken(credentials.accessToken);
37
+ const user = this.jwtService.decodeToken(response.id_token);
38
+ return {
39
+ userId: user.id,
40
+ email: user.email || '',
41
+ metadata: user,
42
+ };
43
+ }
44
+ catch (error) {
45
+ throw new common_1.UnauthorizedException('Invalid Apple token');
46
+ }
47
+ }
48
+ getRequiredFields() {
49
+ return ['accessToken'];
50
+ }
51
+ };
52
+ exports.AppleAuthProvider = AppleAuthProvider;
53
+ exports.AppleAuthProvider = AppleAuthProvider = tslib_1.__decorate([
54
+ (0, common_1.Injectable)(),
55
+ tslib_1.__param(0, (0, typeorm_2.InjectRepository)(user_entity_1.User)),
56
+ tslib_1.__param(1, (0, typeorm_2.InjectRepository)(auth_identity_entity_1.AuthIdentity)),
57
+ tslib_1.__param(2, (0, common_1.Inject)(auth_constants_1.AUTH_MODULE_OPTIONS)),
58
+ tslib_1.__metadata("design:paramtypes", [typeorm_1.Repository,
59
+ typeorm_1.Repository, Object, jwt_service_1.JwtService])
60
+ ], AppleAuthProvider);
61
+ //# sourceMappingURL=apple-auth.provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apple-auth.provider.js","sourceRoot":"","sources":["../../../../../../packages/nest-auth/src/lib/providers/apple-auth.provider.ts"],"names":[],"mappings":";;;;AAAA,oEAAmC;AACnC,2CAA2E;AAC3E,2EAAgE;AAChE,qCAAqC;AACrC,6DAAwD;AACxD,yDAA+C;AAC/C,6CAAmD;AAEnD,sDAA6E;AAC7E,yDAAqD;AAI9C,IAAM,iBAAiB,GAAvB,MAAM,iBAAkB,SAAQ,qCAAgB;IAKnD,YAEI,cAAkD,EAGlD,sBAAkE,EAGlE,OAAkC,EAEjB,UAAsB;QAEvC,KAAK,CAAC,cAAc,EAAE,sBAAsB,CAAC,CAAC;QAV5B,mBAAc,GAAd,cAAc,CAAkB;QAGhC,2BAAsB,GAAtB,sBAAsB,CAA0B;QAG1D,YAAO,GAAP,OAAO,CAAmB;QAEjB,eAAU,GAAV,UAAU,CAAY;QAd3C,eAAU,GAAG,oCAAmB,CAAC;QAkB7B,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;QAEvC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAE3C,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,IAAI,CAAC,SAAS,GAAG,IAAI,oBAAS,CAC1B;gBACI,KAAK,EAAE,YAAY;gBACnB,YAAY,EAAE,WAAW,CAAC,WAAW;gBACrC,OAAO,EAAE,WAAW,CAAC,MAAM;gBAC3B,MAAM,EAAE,WAAW,CAAC,KAAK;gBACzB,SAAS,EAAE,WAAW,CAAC,QAAQ;aAClC,EACD,WAAW,CAAC,UAAU,EACtB,WAAW,CAAC,gBAAgB,IAAI,MAAM,CACzC,CAAC;QACN,CAAC;IACL,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,WAAoC;QAC/C,IAAI,CAAC;YACD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;YAC3E,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAC5D,OAAO;gBACH,MAAM,EAAE,IAAI,CAAC,EAAE;gBACf,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE;gBACvB,QAAQ,EAAE,IAAI;aACjB,CAAC;QACN,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,MAAM,IAAI,8BAAqB,CAAC,qBAAqB,CAAC,CAAC;QAC3D,CAAC;IACL,CAAC;IAED,iBAAiB;QACb,OAAO,CAAC,aAAa,CAAC,CAAC;IAC3B,CAAC;CACJ,CAAA;AAvDY,8CAAiB;4BAAjB,iBAAiB;IAD7B,IAAA,mBAAU,GAAE;IAOJ,mBAAA,IAAA,0BAAgB,EAAC,kBAAI,CAAC,CAAA;IAGtB,mBAAA,IAAA,0BAAgB,EAAC,mCAAY,CAAC,CAAA;IAG9B,mBAAA,IAAA,eAAM,EAAC,oCAAmB,CAAC,CAAA;6CALM,oBAAU;QAGF,oBAAU,UAKvB,wBAAU;GAflC,iBAAiB,CAuD7B"}
@@ -0,0 +1,24 @@
1
+ import { Repository } from 'typeorm';
2
+ import { User } from '../entities/user.entity';
3
+ import { AuthIdentity } from '../entities/auth-identity.entity';
4
+ export interface AuthProviderUser {
5
+ userId: string;
6
+ email?: string;
7
+ phone?: string;
8
+ username?: string;
9
+ metadata?: Record<string, any>;
10
+ }
11
+ export type LinkUserWith = 'email' | 'phone';
12
+ export declare abstract class BaseAuthProvider {
13
+ protected readonly userRepository: Repository<User>;
14
+ protected readonly authIdentityRepository: Repository<AuthIdentity>;
15
+ abstract providerId: string;
16
+ enabled: boolean;
17
+ constructor(userRepository: Repository<User>, authIdentityRepository: Repository<AuthIdentity>);
18
+ linkToUser(userId: string, providerUserId: string, metadata?: Record<string, any>): Promise<void>;
19
+ findIdentityByUserId(userId: string): Promise<AuthIdentity | null>;
20
+ findIdentity(providerUserId: string): Promise<AuthIdentity | null>;
21
+ abstract validate(credentials: any): Promise<AuthProviderUser | null>;
22
+ abstract getRequiredFields(): string[];
23
+ linkUserWith(): LinkUserWith;
24
+ }
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BaseAuthProvider = 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 auth_identity_entity_1 = require("../entities/auth-identity.entity");
10
+ let BaseAuthProvider = class BaseAuthProvider {
11
+ constructor(userRepository, authIdentityRepository) {
12
+ this.userRepository = userRepository;
13
+ this.authIdentityRepository = authIdentityRepository;
14
+ }
15
+ async linkToUser(userId, providerUserId, metadata) {
16
+ const identity = this.authIdentityRepository.create({
17
+ userId,
18
+ provider: this.providerId,
19
+ providerId: providerUserId,
20
+ metadata: metadata || {},
21
+ });
22
+ await this.authIdentityRepository.save(identity);
23
+ }
24
+ async findIdentityByUserId(userId) {
25
+ return this.authIdentityRepository.findOne({
26
+ where: {
27
+ userId,
28
+ provider: this.providerId,
29
+ },
30
+ relations: ['user'],
31
+ });
32
+ }
33
+ async findIdentity(providerUserId) {
34
+ return this.authIdentityRepository.findOne({
35
+ where: {
36
+ provider: this.providerId,
37
+ providerId: providerUserId,
38
+ },
39
+ relations: ['user'],
40
+ });
41
+ }
42
+ linkUserWith() {
43
+ return 'email';
44
+ }
45
+ };
46
+ exports.BaseAuthProvider = BaseAuthProvider;
47
+ exports.BaseAuthProvider = BaseAuthProvider = tslib_1.__decorate([
48
+ (0, common_1.Injectable)(),
49
+ tslib_1.__param(0, (0, typeorm_1.InjectRepository)(user_entity_1.User)),
50
+ tslib_1.__param(1, (0, typeorm_1.InjectRepository)(auth_identity_entity_1.AuthIdentity)),
51
+ tslib_1.__metadata("design:paramtypes", [typeorm_2.Repository,
52
+ typeorm_2.Repository])
53
+ ], BaseAuthProvider);
54
+ //# sourceMappingURL=base-auth.provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-auth.provider.js","sourceRoot":"","sources":["../../../../../../packages/nest-auth/src/lib/providers/base-auth.provider.ts"],"names":[],"mappings":";;;;AAAA,2CAA4C;AAC5C,6CAAmD;AACnD,qCAAqC;AACrC,yDAA+C;AAC/C,2EAAgE;AAazD,IAAe,gBAAgB,GAA/B,MAAe,gBAAgB;IAIlC,YAEuB,cAAgC,EAEhC,sBAAgD;QAFhD,mBAAc,GAAd,cAAc,CAAkB;QAEhC,2BAAsB,GAAtB,sBAAsB,CAA0B;IACnE,CAAC;IAKL,KAAK,CAAC,UAAU,CAAC,MAAc,EAAE,cAAsB,EAAE,QAA8B;QACnF,MAAM,QAAQ,GAAG,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC;YAChD,MAAM;YACN,QAAQ,EAAE,IAAI,CAAC,UAAU;YACzB,UAAU,EAAE,cAAc;YAC1B,QAAQ,EAAE,QAAQ,IAAI,EAAE;SAC3B,CAAC,CAAC;QACH,MAAM,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACrD,CAAC;IAED,KAAK,CAAC,oBAAoB,CAAC,MAAc;QACrC,OAAO,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC;YACvC,KAAK,EAAE;gBACH,MAAM;gBACN,QAAQ,EAAE,IAAI,CAAC,UAAU;aAC5B;YACD,SAAS,EAAE,CAAC,MAAM,CAAC;SACtB,CAAC,CAAC;IACP,CAAC;IAKD,KAAK,CAAC,YAAY,CAAC,cAAsB;QACrC,OAAO,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC;YACvC,KAAK,EAAE;gBACH,QAAQ,EAAE,IAAI,CAAC,UAAU;gBACzB,UAAU,EAAE,cAAc;aAC7B;YACD,SAAS,EAAE,CAAC,MAAM,CAAC;SACtB,CAAC,CAAC;IACP,CAAC;IAOD,YAAY;QACR,OAAO,OAAO,CAAC;IACnB,CAAC;CACJ,CAAA;AAvDqB,4CAAgB;2BAAhB,gBAAgB;IADrC,IAAA,mBAAU,GAAE;IAMJ,mBAAA,IAAA,0BAAgB,EAAC,kBAAI,CAAC,CAAA;IAEtB,mBAAA,IAAA,0BAAgB,EAAC,mCAAY,CAAC,CAAA;6CADI,oBAAU;QAEF,oBAAU;GARvC,gBAAgB,CAuDrC"}
@@ -0,0 +1,21 @@
1
+ import { Repository } from 'typeorm';
2
+ import { User } from '../entities/user.entity';
3
+ import { BaseAuthProvider } from './base-auth.provider';
4
+ import { AuthIdentity } from '../entities/auth-identity.entity';
5
+ import { AuthModuleOptions } from '../interfaces/auth-module-options.interface';
6
+ export declare class EmailAuthProvider extends BaseAuthProvider {
7
+ readonly userRepository: Repository<User>;
8
+ readonly authIdentityRepository: Repository<AuthIdentity>;
9
+ private options;
10
+ providerId: string;
11
+ constructor(userRepository: Repository<User>, authIdentityRepository: Repository<AuthIdentity>, options: AuthModuleOptions);
12
+ validate(credentials: {
13
+ email?: string;
14
+ password?: string;
15
+ }): Promise<{
16
+ userId: string;
17
+ email: string;
18
+ metadata: User;
19
+ }>;
20
+ getRequiredFields(): string[];
21
+ }