@drax/identity-back 3.14.0 → 3.15.0

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 (133) hide show
  1. package/dist/config/PasswordPolicyConfig.js +14 -0
  2. package/dist/controllers/UserController.js +10 -0
  3. package/dist/factory/PasswordPolicyResolverFactory.js +9 -0
  4. package/dist/factory/PasswordPolicyServiceFactory.js +27 -0
  5. package/dist/factory/UserPasswordHistoryServiceFactory.js +25 -0
  6. package/dist/factory/UserServiceFactory.js +3 -1
  7. package/dist/index.js +20 -8
  8. package/dist/interfaces/IUserPasswordHistory.js +1 -0
  9. package/dist/interfaces/IUserPasswordHistoryRepository.js +1 -0
  10. package/dist/models/UserPasswordHistoryModel.js +30 -0
  11. package/dist/policies/defaultPasswordPolicy.js +12 -0
  12. package/dist/repository/mongo/UserPasswordHistoryMongoRepository.js +20 -0
  13. package/dist/repository/sqlite/UserPasswordHistorySqliteRepository.js +38 -0
  14. package/dist/resolver/PasswordPolicyResolver.js +27 -0
  15. package/dist/routes/UserRoutes.js +10 -0
  16. package/dist/schemas/PasswordPolicySchema.js +18 -0
  17. package/dist/schemas/RegisterSchema.js +1 -3
  18. package/dist/schemas/UserSchema.js +1 -3
  19. package/dist/security/constants/defaultPasswordPolicy.js +12 -0
  20. package/dist/security/interfaces/IPasswordPolicy.js +1 -0
  21. package/dist/security/interfaces/IPasswordPolicyProjectContext.js +1 -0
  22. package/dist/security/schemas/PasswordPolicySchema.js +18 -0
  23. package/dist/security/services/PasswordPolicyResolver.js +21 -0
  24. package/dist/security/services/PasswordPolicyService.js +147 -0
  25. package/dist/security/utils/PasswordPolicySchemaFactory.js +36 -0
  26. package/dist/security/utils/getPasswordEnvPolicy.js +19 -0
  27. package/dist/services/PasswordPolicyService.js +147 -0
  28. package/dist/services/UserPasswordHistoryService.js +18 -0
  29. package/dist/services/UserService.js +34 -9
  30. package/dist/setup/LoadIdentityConfigFromEnv.js +10 -0
  31. package/dist/setup/SetProjectPasswordPolicy.js +7 -0
  32. package/dist/utils/PasswordPolicySchemaFactory.js +36 -0
  33. package/dist/utils/getPasswordEnvPolicy.js +19 -0
  34. package/docs/password-policy.md +33 -0
  35. package/package.json +4 -4
  36. package/src/config/PasswordPolicyConfig.ts +14 -0
  37. package/src/controllers/UserController.ts +10 -1
  38. package/src/factory/PasswordPolicyResolverFactory.ts +14 -0
  39. package/src/factory/PasswordPolicyServiceFactory.ts +38 -0
  40. package/src/factory/UserPasswordHistoryServiceFactory.ts +31 -0
  41. package/src/factory/UserServiceFactory.ts +7 -1
  42. package/src/index.ts +28 -3
  43. package/src/interfaces/IUserPasswordHistory.ts +21 -0
  44. package/src/interfaces/IUserPasswordHistoryRepository.ts +8 -0
  45. package/src/models/UserPasswordHistoryModel.ts +42 -0
  46. package/src/policies/defaultPasswordPolicy.ts +17 -0
  47. package/src/repository/mongo/UserPasswordHistoryMongoRepository.ts +25 -0
  48. package/src/repository/sqlite/UserPasswordHistorySqliteRepository.ts +47 -0
  49. package/src/resolver/PasswordPolicyResolver.ts +33 -0
  50. package/src/routes/UserRoutes.ts +11 -0
  51. package/src/schemas/PasswordPolicySchema.ts +29 -0
  52. package/src/schemas/RegisterSchema.ts +1 -3
  53. package/src/schemas/UserSchema.ts +1 -3
  54. package/src/services/PasswordPolicyService.ts +184 -0
  55. package/src/services/UserPasswordHistoryService.ts +23 -0
  56. package/src/services/UserService.ts +38 -9
  57. package/src/setup/LoadIdentityConfigFromEnv.ts +11 -0
  58. package/src/setup/SetProjectPasswordPolicy.ts +12 -0
  59. package/src/utils/PasswordPolicySchemaFactory.ts +47 -0
  60. package/src/utils/getPasswordEnvPolicy.ts +25 -0
  61. package/test/data-obj/users/root-mongo-user.ts +1 -1
  62. package/test/data-obj/users/root-sqlite-user.ts +1 -1
  63. package/test/endpoints/data/users-data.ts +3 -3
  64. package/test/endpoints/password-policy-route.test.ts +33 -0
  65. package/test/endpoints/user-route.test.ts +17 -4
  66. package/test/security/password-policy-resolver.test.ts +55 -0
  67. package/test/security/password-policy-schema-factory.test.ts +40 -0
  68. package/test/services/user-service.test.ts +218 -31
  69. package/test/setup/TestSetup.ts +22 -4
  70. package/test/setup/data/basic-user.ts +1 -1
  71. package/test/setup/data/root-user.ts +1 -1
  72. package/tsconfig.tsbuildinfo +1 -1
  73. package/types/config/PasswordPolicyConfig.d.ts +14 -0
  74. package/types/config/PasswordPolicyConfig.d.ts.map +1 -0
  75. package/types/controllers/UserController.d.ts +1 -0
  76. package/types/controllers/UserController.d.ts.map +1 -1
  77. package/types/factory/PasswordPolicyResolverFactory.d.ts +4 -0
  78. package/types/factory/PasswordPolicyResolverFactory.d.ts.map +1 -0
  79. package/types/factory/PasswordPolicyServiceFactory.d.ts +4 -0
  80. package/types/factory/PasswordPolicyServiceFactory.d.ts.map +1 -0
  81. package/types/factory/UserPasswordHistoryServiceFactory.d.ts +4 -0
  82. package/types/factory/UserPasswordHistoryServiceFactory.d.ts.map +1 -0
  83. package/types/factory/UserServiceFactory.d.ts.map +1 -1
  84. package/types/index.d.ts +15 -2
  85. package/types/index.d.ts.map +1 -1
  86. package/types/interfaces/IUserPasswordHistory.d.ts +17 -0
  87. package/types/interfaces/IUserPasswordHistory.d.ts.map +1 -0
  88. package/types/interfaces/IUserPasswordHistoryRepository.d.ts +7 -0
  89. package/types/interfaces/IUserPasswordHistoryRepository.d.ts.map +1 -0
  90. package/types/models/UserPasswordHistoryModel.d.ts +15 -0
  91. package/types/models/UserPasswordHistoryModel.d.ts.map +1 -0
  92. package/types/policies/defaultPasswordPolicy.d.ts +4 -0
  93. package/types/policies/defaultPasswordPolicy.d.ts.map +1 -0
  94. package/types/repository/mongo/UserPasswordHistoryMongoRepository.d.ts +10 -0
  95. package/types/repository/mongo/UserPasswordHistoryMongoRepository.d.ts.map +1 -0
  96. package/types/repository/sqlite/UserPasswordHistorySqliteRepository.d.ts +25 -0
  97. package/types/repository/sqlite/UserPasswordHistorySqliteRepository.d.ts.map +1 -0
  98. package/types/resolver/PasswordPolicyResolver.d.ts +10 -0
  99. package/types/resolver/PasswordPolicyResolver.d.ts.map +1 -0
  100. package/types/routes/UserRoutes.d.ts.map +1 -1
  101. package/types/schemas/PasswordPolicySchema.d.ts +25 -0
  102. package/types/schemas/PasswordPolicySchema.d.ts.map +1 -0
  103. package/types/schemas/RegisterSchema.d.ts.map +1 -1
  104. package/types/schemas/UserSchema.d.ts.map +1 -1
  105. package/types/security/constants/defaultPasswordPolicy.d.ts +4 -0
  106. package/types/security/constants/defaultPasswordPolicy.d.ts.map +1 -0
  107. package/types/security/interfaces/IPasswordPolicy.d.ts +13 -0
  108. package/types/security/interfaces/IPasswordPolicy.d.ts.map +1 -0
  109. package/types/security/interfaces/IPasswordPolicyProjectContext.d.ts +6 -0
  110. package/types/security/interfaces/IPasswordPolicyProjectContext.d.ts.map +1 -0
  111. package/types/security/schemas/PasswordPolicySchema.d.ts +25 -0
  112. package/types/security/schemas/PasswordPolicySchema.d.ts.map +1 -0
  113. package/types/security/services/PasswordPolicyResolver.d.ts +9 -0
  114. package/types/security/services/PasswordPolicyResolver.d.ts.map +1 -0
  115. package/types/security/services/PasswordPolicyService.d.ts +35 -0
  116. package/types/security/services/PasswordPolicyService.d.ts.map +1 -0
  117. package/types/security/utils/PasswordPolicySchemaFactory.d.ts +9 -0
  118. package/types/security/utils/PasswordPolicySchemaFactory.d.ts.map +1 -0
  119. package/types/security/utils/getPasswordEnvPolicy.d.ts +5 -0
  120. package/types/security/utils/getPasswordEnvPolicy.d.ts.map +1 -0
  121. package/types/services/PasswordPolicyService.d.ts +34 -0
  122. package/types/services/PasswordPolicyService.d.ts.map +1 -0
  123. package/types/services/UserPasswordHistoryService.d.ts +10 -0
  124. package/types/services/UserPasswordHistoryService.d.ts.map +1 -0
  125. package/types/services/UserService.d.ts +5 -1
  126. package/types/services/UserService.d.ts.map +1 -1
  127. package/types/setup/LoadIdentityConfigFromEnv.d.ts.map +1 -1
  128. package/types/setup/SetProjectPasswordPolicy.d.ts +5 -0
  129. package/types/setup/SetProjectPasswordPolicy.d.ts.map +1 -0
  130. package/types/utils/PasswordPolicySchemaFactory.d.ts +9 -0
  131. package/types/utils/PasswordPolicySchemaFactory.d.ts.map +1 -0
  132. package/types/utils/getPasswordEnvPolicy.d.ts +5 -0
  133. package/types/utils/getPasswordEnvPolicy.d.ts.map +1 -0
@@ -0,0 +1,14 @@
1
+ declare enum PasswordPolicyConfig {
2
+ MinLength = "PASSWORD_POLICY_MIN_LENGTH",
3
+ MaxLength = "PASSWORD_POLICY_MAX_LENGTH",
4
+ RequireUppercase = "PASSWORD_POLICY_REQUIRE_UPPERCASE",
5
+ RequireLowercase = "PASSWORD_POLICY_REQUIRE_LOWERCASE",
6
+ RequireNumber = "PASSWORD_POLICY_REQUIRE_NUMBER",
7
+ RequireSpecialChar = "PASSWORD_POLICY_REQUIRE_SPECIAL_CHAR",
8
+ DisallowSpaces = "PASSWORD_POLICY_DISALLOW_SPACES",
9
+ PreventReuse = "PASSWORD_POLICY_PREVENT_REUSE",
10
+ ExpirationDays = "PASSWORD_POLICY_EXPIRATION_DAYS"
11
+ }
12
+ export default PasswordPolicyConfig;
13
+ export { PasswordPolicyConfig };
14
+ //# sourceMappingURL=PasswordPolicyConfig.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PasswordPolicyConfig.d.ts","sourceRoot":"","sources":["../../src/config/PasswordPolicyConfig.ts"],"names":[],"mappings":"AAAA,aAAK,oBAAoB;IACrB,SAAS,+BAA+B;IACxC,SAAS,+BAA+B;IACxC,gBAAgB,sCAAsC;IACtD,gBAAgB,sCAAsC;IACtD,aAAa,mCAAmC;IAChD,kBAAkB,yCAAyC;IAC3D,cAAc,oCAAoC;IAClD,YAAY,kCAAkC;IAC9C,cAAc,oCAAoC;CACrD;AAED,eAAe,oBAAoB,CAAC;AACpC,OAAO,EAAC,oBAAoB,EAAC,CAAC"}
@@ -9,6 +9,7 @@ declare class UserController extends AbstractFastifyController<IUser, IUserCreat
9
9
  auth(request: any, reply: any): Promise<{
10
10
  accessToken: any;
11
11
  }>;
12
+ passwordPolicy(request: any, reply: any): Promise<import("@drax/identity-share").IPasswordPolicy>;
12
13
  me(request: any, reply: any): Promise<IUser>;
13
14
  onUserEvent(request: CustomRequest, action: string, resourceId?: string, detail?: string): Promise<void>;
14
15
  switchTenant(request: any, reply: any): Promise<{
@@ -1 +1 @@
1
- {"version":3,"file":"UserController.d.ts","sourceRoot":"","sources":["../../src/controllers/UserController.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,KAAK,EAAE,WAAW,EAAE,WAAW,EAAC,MAAM,sBAAsB,CAAC;AAC1E,OAAO,EAAC,yBAAyB,EAAC,MAAM,iBAAiB,CAAC;AAY1D,OAAO,WAAW,MAAM,4BAA4B,CAAC;AAQrD,OAAO,EAAC,aAAa,EAAC,MAAM,sBAAsB,CAAC;AAOnD,cAAM,cAAe,SAAQ,yBAAyB,CAAC,KAAK,EAAE,WAAW,EAAE,WAAW,CAAC;IAEnF,SAAS,CAAC,OAAO,EAAE,WAAW,CAAA;;IASxB,cAAc,CAAC,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM;IAiCnE,IAAI,CAAC,OAAO,KAAA,EAAE,KAAK,KAAA;;;IAqBnB,EAAE,CAAC,OAAO,KAAA,EAAE,KAAK,KAAA;IA4BjB,WAAW,CAAC,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAE,MAAa,EAAE,MAAM,GAAE,MAAa;IAepG,YAAY,CAAC,OAAO,KAAA,EAAE,KAAK,KAAA;;;IA4B3B,QAAQ,CAAC,OAAO,KAAA,EAAE,KAAK,KAAA;IA0BvB,MAAM,CAAC,OAAO,KAAA,EAAE,KAAK,KAAA;IAerB,QAAQ,CAAC,OAAO,KAAA,EAAE,KAAK,KAAA;;;;IAgDvB,WAAW,CAAC,OAAO,KAAA,EAAE,KAAK,KAAA;IAc1B,WAAW,CAAC,OAAO,KAAA,EAAE,KAAK,KAAA;IAU1B,MAAM,CAAC,OAAO,KAAA,EAAE,KAAK,KAAA;IAoBrB,MAAM,CAAC,OAAO,KAAA,EAAE,KAAK,KAAA;IAoBrB,MAAM,CAAC,OAAO,KAAA,EAAE,KAAK,KAAA;IA4BrB,uBAAuB,CAAC,OAAO,KAAA,EAAE,KAAK,KAAA;IAqCtC,wBAAwB,CAAC,OAAO,KAAA,EAAE,KAAK,KAAA;IA+BvC,gBAAgB,CAAC,OAAO,KAAA,EAAE,KAAK,KAAA;;;IAkB/B,cAAc,CAAC,OAAO,KAAA,EAAE,KAAK,KAAA;;;IAmB7B,YAAY,CAAC,OAAO,KAAA,EAAE,KAAK,KAAA;;;;;;IAoC3B,SAAS,CAAC,OAAO,KAAA,EAAE,KAAK,KAAA;CAcjC;AAED,eAAe,cAAc,CAAC;AAC9B,OAAO,EACH,cAAc,EACjB,CAAA"}
1
+ {"version":3,"file":"UserController.d.ts","sourceRoot":"","sources":["../../src/controllers/UserController.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,KAAK,EAAE,WAAW,EAAE,WAAW,EAAC,MAAM,sBAAsB,CAAC;AAC1E,OAAO,EAAC,yBAAyB,EAAC,MAAM,iBAAiB,CAAC;AAY1D,OAAO,WAAW,MAAM,4BAA4B,CAAC;AAQrD,OAAO,EAAC,aAAa,EAAC,MAAM,sBAAsB,CAAC;AAQnD,cAAM,cAAe,SAAQ,yBAAyB,CAAC,KAAK,EAAE,WAAW,EAAE,WAAW,CAAC;IAEnF,SAAS,CAAC,OAAO,EAAE,WAAW,CAAA;;IASxB,cAAc,CAAC,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM;IAiCnE,IAAI,CAAC,OAAO,KAAA,EAAE,KAAK,KAAA;;;IAqBnB,cAAc,CAAC,OAAO,KAAA,EAAE,KAAK,KAAA;IAS7B,EAAE,CAAC,OAAO,KAAA,EAAE,KAAK,KAAA;IA4BjB,WAAW,CAAC,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAE,MAAa,EAAE,MAAM,GAAE,MAAa;IAepG,YAAY,CAAC,OAAO,KAAA,EAAE,KAAK,KAAA;;;IA4B3B,QAAQ,CAAC,OAAO,KAAA,EAAE,KAAK,KAAA;IA0BvB,MAAM,CAAC,OAAO,KAAA,EAAE,KAAK,KAAA;IAerB,QAAQ,CAAC,OAAO,KAAA,EAAE,KAAK,KAAA;;;;IAgDvB,WAAW,CAAC,OAAO,KAAA,EAAE,KAAK,KAAA;IAc1B,WAAW,CAAC,OAAO,KAAA,EAAE,KAAK,KAAA;IAU1B,MAAM,CAAC,OAAO,KAAA,EAAE,KAAK,KAAA;IAoBrB,MAAM,CAAC,OAAO,KAAA,EAAE,KAAK,KAAA;IAoBrB,MAAM,CAAC,OAAO,KAAA,EAAE,KAAK,KAAA;IA4BrB,uBAAuB,CAAC,OAAO,KAAA,EAAE,KAAK,KAAA;IAqCtC,wBAAwB,CAAC,OAAO,KAAA,EAAE,KAAK,KAAA;IA+BvC,gBAAgB,CAAC,OAAO,KAAA,EAAE,KAAK,KAAA;;;IAkB/B,cAAc,CAAC,OAAO,KAAA,EAAE,KAAK,KAAA;;;IAmB7B,YAAY,CAAC,OAAO,KAAA,EAAE,KAAK,KAAA;;;;;;IAoC3B,SAAS,CAAC,OAAO,KAAA,EAAE,KAAK,KAAA;CAcjC;AAED,eAAe,cAAc,CAAC;AAC9B,OAAO,EACH,cAAc,EACjB,CAAA"}
@@ -0,0 +1,4 @@
1
+ import PasswordPolicyResolver from "../resolver/PasswordPolicyResolver.js";
2
+ declare const PasswordPolicyResolverFactory: () => PasswordPolicyResolver;
3
+ export default PasswordPolicyResolverFactory;
4
+ //# sourceMappingURL=PasswordPolicyResolverFactory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PasswordPolicyResolverFactory.d.ts","sourceRoot":"","sources":["../../src/factory/PasswordPolicyResolverFactory.ts"],"names":[],"mappings":"AAAA,OAAO,sBAAsB,MAAM,uCAAuC,CAAC;AAI3E,QAAA,MAAM,6BAA6B,QAAO,sBAOzC,CAAA;AAED,eAAe,6BAA6B,CAAA"}
@@ -0,0 +1,4 @@
1
+ import PasswordPolicyService from "../services/PasswordPolicyService.js";
2
+ declare const PasswordPolicyServiceFactory: (verbose?: boolean) => PasswordPolicyService;
3
+ export default PasswordPolicyServiceFactory;
4
+ //# sourceMappingURL=PasswordPolicyServiceFactory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PasswordPolicyServiceFactory.d.ts","sourceRoot":"","sources":["../../src/factory/PasswordPolicyServiceFactory.ts"],"names":[],"mappings":"AAAA,OAAO,qBAAqB,MAAM,sCAAsC,CAAC;AAUzE,QAAA,MAAM,4BAA4B,GAAI,UAAS,OAAe,KAAG,qBAyBhE,CAAA;AAED,eAAe,4BAA4B,CAAA"}
@@ -0,0 +1,4 @@
1
+ import UserPasswordHistoryService from "../services/UserPasswordHistoryService.js";
2
+ declare const UserPasswordHistoryServiceFactory: (verbose?: boolean) => UserPasswordHistoryService;
3
+ export default UserPasswordHistoryServiceFactory;
4
+ //# sourceMappingURL=UserPasswordHistoryServiceFactory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UserPasswordHistoryServiceFactory.d.ts","sourceRoot":"","sources":["../../src/factory/UserPasswordHistoryServiceFactory.ts"],"names":[],"mappings":"AAIA,OAAO,0BAA0B,MAAM,2CAA2C,CAAC;AAInF,QAAA,MAAM,iCAAiC,GAAI,UAAS,OAAe,KAAG,0BAoBrE,CAAA;AAED,eAAe,iCAAiC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"UserServiceFactory.d.ts","sourceRoot":"","sources":["../../src/factory/UserServiceFactory.ts"],"names":[],"mappings":"AACA,OAAO,WAAW,MAAM,4BAA4B,CAAC;AAOrD,QAAA,MAAM,kBAAkB,GAAI,UAAQ,OAAe,KAAI,WAoBtD,CAAA;AAEA,eAAe,kBAAkB,CAAA"}
1
+ {"version":3,"file":"UserServiceFactory.d.ts","sourceRoot":"","sources":["../../src/factory/UserServiceFactory.ts"],"names":[],"mappings":"AACA,OAAO,WAAW,MAAM,4BAA4B,CAAC;AASrD,QAAA,MAAM,kBAAkB,GAAI,UAAQ,OAAe,KAAI,WAwBtD,CAAA;AAEA,eAAe,kBAAkB,CAAA"}
package/types/index.d.ts CHANGED
@@ -4,6 +4,8 @@ import TenantServiceFactory from "./factory/TenantServiceFactory.js";
4
4
  import UserApiKeyServiceFactory from "./factory/UserApiKeyServiceFactory.js";
5
5
  import UserLoginFailServiceFactory from "./factory/UserLoginFailServiceFactory.js";
6
6
  import UserSessionServiceFactory from "./factory/UserSessionServiceFactory.js";
7
+ import PasswordPolicyServiceFactory from "./factory/PasswordPolicyServiceFactory.js";
8
+ import UserPasswordHistoryServiceFactory from "./factory/UserPasswordHistoryServiceFactory.js";
7
9
  import RoleService from "./services/RoleService.js";
8
10
  import UserService from "./services/UserService.js";
9
11
  import TenantService from "./services/TenantService.js";
@@ -11,6 +13,9 @@ import PermissionService from "./services/PermissionService.js";
11
13
  import UserApiKeyService from "./services/UserApiKeyService.js";
12
14
  import UserSessionService from "./services/UserSessionService.js";
13
15
  import UserLoginFailService from "./services/UserLoginFailService.js";
16
+ import UserPasswordHistoryService from "./services/UserPasswordHistoryService.js";
17
+ import PasswordPolicyService from "./services/PasswordPolicyService.js";
18
+ import PasswordPolicyResolver from "./resolver/PasswordPolicyResolver.js";
14
19
  import Rbac from "./rbac/Rbac.js";
15
20
  import { UserRoutes } from "./routes/UserRoutes.js";
16
21
  import { RoleRoutes } from "./routes/RoleRoutes.js";
@@ -23,6 +28,7 @@ import { jwtMiddleware } from "./middleware/jwtMiddleware.js";
23
28
  import { rbacMiddleware } from "./middleware/rbacMiddleware.js";
24
29
  import { apiKeyMiddleware } from "./middleware/apiKeyMiddleware.js";
25
30
  import IdentityConfig from "./config/IdentityConfig.js";
31
+ import PasswordPolicyConfig from "./config/PasswordPolicyConfig.js";
26
32
  import BadCredentialsError from "./errors/BadCredentialsError.js";
27
33
  import CreateUserIfNotExist from "./setup/CreateUserIfNotExist.js";
28
34
  import CreateTenantIfNotExist from "./setup/CreateTenantIfNotExist.js";
@@ -30,30 +36,35 @@ import CreateOrUpdateRole from "./setup/CreateOrUpdateRole.js";
30
36
  import LoadPermissions from "./setup/LoadPermissions.js";
31
37
  import LoadIdentityConfigFromEnv from "./setup/LoadIdentityConfigFromEnv.js";
32
38
  import RecoveryUserPassword from "./setup/RecoveryUserPassword.js";
39
+ import SetProjectPasswordPolicy from "./setup/SetProjectPasswordPolicy.js";
33
40
  import type { IRoleRepository } from "./interfaces/IRoleRepository";
34
41
  import type { ITenantRepository } from "./interfaces/ITenantRepository";
35
42
  import type { IUserRepository } from "./interfaces/IUserRepository";
36
43
  import type { IUserApiKeyRepository } from "./interfaces/IUserApiKeyRepository";
37
44
  import type { IUserLoginFailRepository } from "./interfaces/IUserLoginFailRepository";
38
45
  import type { IUserSessionRepository } from "./interfaces/IUserSessionRepository";
46
+ import type { IUserPasswordHistoryRepository } from "./interfaces/IUserPasswordHistoryRepository";
39
47
  import { RoleModel, RoleMongoSchema } from "./models/RoleModel.js";
40
48
  import { TenantModel, TenantMongoSchema } from "./models/TenantModel.js";
41
49
  import { UserModel, UserMongoSchema } from "./models/UserModel.js";
42
50
  import { UserApiKeyModel, UserApiKeyMongoSchema } from "./models/UserApiKeyModel.js";
43
51
  import { UserSessionModel, UserSessionMongoSchema } from "./models/UserSessionModel.js";
44
52
  import { UserLoginFailModel, UserLoginFailMongoSchema } from "./models/UserLoginFailModel.js";
53
+ import { UserPasswordHistoryModel, UserPasswordHistoryMongoSchema } from "./models/UserPasswordHistoryModel.js";
45
54
  import RoleMongoRepository from "./repository/mongo/RoleMongoRepository.js";
46
55
  import TenantMongoRepository from "./repository/mongo/TenantMongoRepository.js";
47
56
  import UserMongoRepository from "./repository/mongo/UserMongoRepository.js";
48
57
  import UserApiKeyMongoRepository from "./repository/mongo/UserApiKeyMongoRepository.js";
49
58
  import UserSessionMongoRepository from "./repository/mongo/UserSessionMongoRepository.js";
50
59
  import UserLoginFailMongoRepository from "./repository/mongo/UserLoginFailMongoRepository.js";
60
+ import UserPasswordHistoryMongoRepository from "./repository/mongo/UserPasswordHistoryMongoRepository.js";
51
61
  import RoleSqliteRepository from "./repository/sqlite/RoleSqliteRepository.js";
52
62
  import TenantSqliteRepository from "./repository/sqlite/TenantSqliteRepository.js";
53
63
  import UserSqliteRepository from "./repository/sqlite/UserSqliteRepository.js";
54
64
  import UserApiKeySqliteRepository from "./repository/sqlite/UserApiKeySqliteRepository.js";
55
65
  import UserLoginFailSqliteRepository from "./repository/sqlite/UserLoginFailSqliteRepository.js";
56
66
  import UserSessionSqliteRepository from "./repository/sqlite/UserSessionSqliteRepository.js";
67
+ import UserPasswordHistorySqliteRepository from "./repository/sqlite/UserPasswordHistorySqliteRepository.js";
57
68
  import { RolePermissions } from "./permissions/RolePermissions.js";
58
69
  import { TenantPermissions } from "./permissions/TenantPermissions.js";
59
70
  import { UserPermissions } from "./permissions/UserPermissions.js";
@@ -66,8 +77,10 @@ import { RoleSchema, RoleBaseSchema } from "./schemas/RoleSchema.js";
66
77
  import { UserApiKeySchema, UserApiKeyBaseSchema } from "./schemas/UserApiKeySchema.js";
67
78
  import { UserLoginFailBaseSchema } from "./schemas/UserLoginFailSchema.js";
68
79
  import { UserSessionBaseSchema } from "./schemas/UserSessionSchema.js";
80
+ import { defaultPasswordPolicy } from "./policies/defaultPasswordPolicy.js";
81
+ import { PasswordPolicySchema } from "./schemas/PasswordPolicySchema.js";
69
82
  declare const identityTypeDefs: import("@graphql-tools/utils").TypeSource;
70
83
  declare const identityResolvers: import("@graphql-tools/utils").IResolvers;
71
- export type { IRoleRepository, ITenantRepository, IUserRepository, IUserApiKeyRepository, IUserLoginFailRepository, IUserSessionRepository, };
72
- export { UserSchema, UserBaseSchema, TenantSchema, TenantBaseSchema, RoleSchema, RoleBaseSchema, UserApiKeyBaseSchema, UserApiKeySchema, UserLoginFailBaseSchema, UserSessionBaseSchema, UserService, RoleService, TenantService, UserApiKeyService, UserSessionService, UserLoginFailService, PermissionService, Rbac, UserServiceFactory, RoleServiceFactory, TenantServiceFactory, UserApiKeyServiceFactory, UserSessionServiceFactory, UserLoginFailServiceFactory, identityTypeDefs, identityResolvers, UserRoutes, RoleRoutes, TenantRoutes, UserApiKeyRoutes, UserSessionRoutes, UserLoginFailRoutes, AuthUtils, jwtMiddleware, rbacMiddleware, apiKeyMiddleware, RolePermissions, TenantPermissions, UserPermissions, UserApiKeyPermissions, UserSessionPermissions, UserLoginFailPermissions, RoleMongoRepository, TenantMongoRepository, UserMongoRepository, UserApiKeyMongoRepository, UserSessionMongoRepository, UserLoginFailMongoRepository, RoleModel, TenantModel, UserModel, UserApiKeyModel, UserSessionModel, UserLoginFailModel, RoleMongoSchema, TenantMongoSchema, UserMongoSchema, UserApiKeyMongoSchema, UserSessionMongoSchema, UserLoginFailMongoSchema, RoleSqliteRepository, TenantSqliteRepository, UserSqliteRepository, UserApiKeySqliteRepository, UserLoginFailSqliteRepository, UserSessionSqliteRepository, IdentityConfig, BadCredentialsError, LoadIdentityConfigFromEnv, LoadPermissions, CreateOrUpdateRole, CreateUserIfNotExist, CreateTenantIfNotExist, RecoveryUserPassword };
84
+ export type { IRoleRepository, ITenantRepository, IUserRepository, IUserApiKeyRepository, IUserLoginFailRepository, IUserSessionRepository, IUserPasswordHistoryRepository, };
85
+ export { UserSchema, UserBaseSchema, TenantSchema, TenantBaseSchema, RoleSchema, RoleBaseSchema, UserApiKeyBaseSchema, UserApiKeySchema, UserLoginFailBaseSchema, UserSessionBaseSchema, UserService, RoleService, TenantService, UserApiKeyService, UserSessionService, UserLoginFailService, UserPasswordHistoryService, PasswordPolicyService, PasswordPolicyResolver, PermissionService, Rbac, UserServiceFactory, RoleServiceFactory, TenantServiceFactory, UserApiKeyServiceFactory, UserSessionServiceFactory, UserLoginFailServiceFactory, UserPasswordHistoryServiceFactory, PasswordPolicyServiceFactory, identityTypeDefs, identityResolvers, UserRoutes, RoleRoutes, TenantRoutes, UserApiKeyRoutes, UserSessionRoutes, UserLoginFailRoutes, AuthUtils, jwtMiddleware, rbacMiddleware, apiKeyMiddleware, RolePermissions, TenantPermissions, UserPermissions, UserApiKeyPermissions, UserSessionPermissions, UserLoginFailPermissions, RoleMongoRepository, TenantMongoRepository, UserMongoRepository, UserApiKeyMongoRepository, UserSessionMongoRepository, UserLoginFailMongoRepository, UserPasswordHistoryMongoRepository, RoleModel, TenantModel, UserModel, UserApiKeyModel, UserSessionModel, UserLoginFailModel, UserPasswordHistoryModel, RoleMongoSchema, TenantMongoSchema, UserMongoSchema, UserApiKeyMongoSchema, UserSessionMongoSchema, UserLoginFailMongoSchema, UserPasswordHistoryMongoSchema, RoleSqliteRepository, TenantSqliteRepository, UserSqliteRepository, UserApiKeySqliteRepository, UserLoginFailSqliteRepository, UserSessionSqliteRepository, UserPasswordHistorySqliteRepository, IdentityConfig, PasswordPolicyConfig, BadCredentialsError, defaultPasswordPolicy, PasswordPolicySchema, LoadIdentityConfigFromEnv, LoadPermissions, CreateOrUpdateRole, CreateUserIfNotExist, CreateTenantIfNotExist, RecoveryUserPassword, SetProjectPasswordPolicy };
73
86
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ interface IUserPasswordHistory {
2
+ _id?: string;
3
+ id?: string;
4
+ user: string;
5
+ passwordHash: string;
6
+ createdAt?: string | Date;
7
+ updatedAt?: string | Date;
8
+ }
9
+ interface IUserPasswordHistoryCreate {
10
+ _id?: string;
11
+ id?: string;
12
+ user: string;
13
+ passwordHash: string;
14
+ createdAt?: string | Date;
15
+ }
16
+ export type { IUserPasswordHistory, IUserPasswordHistoryCreate };
17
+ //# sourceMappingURL=IUserPasswordHistory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IUserPasswordHistory.d.ts","sourceRoot":"","sources":["../../src/interfaces/IUserPasswordHistory.ts"],"names":[],"mappings":"AAAA,UAAU,oBAAoB;IAC1B,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,YAAY,EAAE,MAAM,CAAA;IACpB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAC5B;AAED,UAAU,0BAA0B;IAChC,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,YAAY,EAAE,MAAM,CAAA;IACpB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAC5B;AAED,YAAY,EACR,oBAAoB,EACpB,0BAA0B,EAC7B,CAAA"}
@@ -0,0 +1,7 @@
1
+ import type { IUserPasswordHistory, IUserPasswordHistoryCreate } from "./IUserPasswordHistory.js";
2
+ interface IUserPasswordHistoryRepository {
3
+ create(data: IUserPasswordHistoryCreate): Promise<IUserPasswordHistory>;
4
+ findLatestByUserId(userId: string, limit: number): Promise<IUserPasswordHistory[]>;
5
+ }
6
+ export type { IUserPasswordHistoryRepository };
7
+ //# sourceMappingURL=IUserPasswordHistoryRepository.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IUserPasswordHistoryRepository.d.ts","sourceRoot":"","sources":["../../src/interfaces/IUserPasswordHistoryRepository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,oBAAoB,EAAE,0BAA0B,EAAC,MAAM,2BAA2B,CAAC;AAEhG,UAAU,8BAA8B;IACpC,MAAM,CAAC,IAAI,EAAE,0BAA0B,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAA;IACvE,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAAA;CACrF;AAED,YAAY,EAAC,8BAA8B,EAAC,CAAA"}
@@ -0,0 +1,15 @@
1
+ import { mongoose } from "@drax/common-back";
2
+ import type { IUserPasswordHistory } from "../interfaces/IUserPasswordHistory.js";
3
+ declare const UserPasswordHistoryMongoSchema: mongoose.Schema<IUserPasswordHistory, mongoose.Model<IUserPasswordHistory, any, any, any, mongoose.Document<unknown, any, IUserPasswordHistory, any, {}> & IUserPasswordHistory & Required<{
4
+ _id: string;
5
+ }> & {
6
+ __v: number;
7
+ }, any>, {}, {}, {}, {}, mongoose.DefaultSchemaOptions, IUserPasswordHistory, mongoose.Document<unknown, {}, mongoose.FlatRecord<IUserPasswordHistory>, {}, mongoose.DefaultSchemaOptions> & mongoose.FlatRecord<IUserPasswordHistory> & Required<{
8
+ _id: string;
9
+ }> & {
10
+ __v: number;
11
+ }>;
12
+ declare let UserPasswordHistoryModel: any;
13
+ export { UserPasswordHistoryMongoSchema, UserPasswordHistoryModel };
14
+ export default UserPasswordHistoryModel;
15
+ //# sourceMappingURL=UserPasswordHistoryModel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UserPasswordHistoryModel.d.ts","sourceRoot":"","sources":["../../src/models/UserPasswordHistoryModel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAC,MAAM,mBAAmB,CAAC;AAI3C,OAAO,KAAK,EAAC,oBAAoB,EAAC,MAAM,uCAAuC,CAAC;AAEhF,QAAA,MAAM,8BAA8B;;;;;;;;EAGd,CAAC;AAevB,QAAA,IAAI,wBAAwB,KAAA,CAAC;AAY7B,OAAO,EACH,8BAA8B,EAC9B,wBAAwB,EAC3B,CAAA;AAED,eAAe,wBAAwB,CAAA"}
@@ -0,0 +1,4 @@
1
+ import type { IPasswordPolicy } from "@drax/identity-share/dist";
2
+ declare const defaultPasswordPolicy: IPasswordPolicy;
3
+ export { defaultPasswordPolicy };
4
+ //# sourceMappingURL=defaultPasswordPolicy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defaultPasswordPolicy.d.ts","sourceRoot":"","sources":["../../src/policies/defaultPasswordPolicy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,2BAA2B,CAAC;AAE/D,QAAA,MAAM,qBAAqB,EAAE,eAU5B,CAAA;AAED,OAAO,EACH,qBAAqB,EACxB,CAAA"}
@@ -0,0 +1,10 @@
1
+ import { AbstractMongoRepository } from "@drax/crud-back";
2
+ import type { IUserPasswordHistoryRepository } from "../../interfaces/IUserPasswordHistoryRepository.js";
3
+ import type { IUserPasswordHistory, IUserPasswordHistoryCreate } from "../../interfaces/IUserPasswordHistory.js";
4
+ declare class UserPasswordHistoryMongoRepository extends AbstractMongoRepository<IUserPasswordHistory, IUserPasswordHistoryCreate, IUserPasswordHistoryCreate> implements IUserPasswordHistoryRepository {
5
+ constructor();
6
+ findLatestByUserId(userId: string, limit: number): Promise<IUserPasswordHistory[]>;
7
+ }
8
+ export default UserPasswordHistoryMongoRepository;
9
+ export { UserPasswordHistoryMongoRepository };
10
+ //# sourceMappingURL=UserPasswordHistoryMongoRepository.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UserPasswordHistoryMongoRepository.d.ts","sourceRoot":"","sources":["../../../src/repository/mongo/UserPasswordHistoryMongoRepository.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,uBAAuB,EAAC,MAAM,iBAAiB,CAAC;AACxD,OAAO,KAAK,EAAC,8BAA8B,EAAC,MAAM,oDAAoD,CAAC;AACvG,OAAO,KAAK,EAAC,oBAAoB,EAAE,0BAA0B,EAAC,MAAM,0CAA0C,CAAC;AAG/G,cAAM,kCAAmC,SAAQ,uBAAuB,CAAC,oBAAoB,EAAE,0BAA0B,EAAE,0BAA0B,CAAE,YAAW,8BAA8B;;IAQtL,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC;CAQ3F;AAED,eAAe,kCAAkC,CAAA;AACjD,OAAO,EAAC,kCAAkC,EAAC,CAAA"}
@@ -0,0 +1,25 @@
1
+ import type { SqliteTableField } from "@drax/common-back";
2
+ import { AbstractSqliteRepository } from "@drax/crud-back";
3
+ import type { IUserPasswordHistoryRepository } from "../../interfaces/IUserPasswordHistoryRepository.js";
4
+ import type { IUserPasswordHistory, IUserPasswordHistoryCreate } from "../../interfaces/IUserPasswordHistory.js";
5
+ declare class UserPasswordHistorySqliteRepository extends AbstractSqliteRepository<IUserPasswordHistory, IUserPasswordHistoryCreate, IUserPasswordHistoryCreate> implements IUserPasswordHistoryRepository {
6
+ protected db: any;
7
+ protected tableName: string;
8
+ protected dataBaseFile: string;
9
+ protected searchFields: string[];
10
+ protected booleanFields: string[];
11
+ protected identifier: string;
12
+ protected populateFields: {
13
+ field: string;
14
+ table: string;
15
+ identifier: string;
16
+ }[];
17
+ protected tableFields: SqliteTableField[];
18
+ protected verbose: boolean;
19
+ prepareData(): Promise<void>;
20
+ prepareItem(item: IUserPasswordHistory): Promise<void>;
21
+ findLatestByUserId(userId: string, limit: number): Promise<IUserPasswordHistory[]>;
22
+ }
23
+ export default UserPasswordHistorySqliteRepository;
24
+ export { UserPasswordHistorySqliteRepository };
25
+ //# sourceMappingURL=UserPasswordHistorySqliteRepository.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UserPasswordHistorySqliteRepository.d.ts","sourceRoot":"","sources":["../../../src/repository/sqlite/UserPasswordHistorySqliteRepository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAC,wBAAwB,EAAC,MAAM,iBAAiB,CAAC;AACzD,OAAO,KAAK,EAAC,8BAA8B,EAAC,MAAM,oDAAoD,CAAC;AACvG,OAAO,KAAK,EAAC,oBAAoB,EAAE,0BAA0B,EAAC,MAAM,0CAA0C,CAAC;AAE/G,cAAM,mCAAoC,SAAQ,wBAAwB,CAAC,oBAAoB,EAAE,0BAA0B,EAAE,0BAA0B,CAAE,YAAW,8BAA8B;IAC9L,SAAS,CAAC,EAAE,EAAE,GAAG,CAAC;IAClB,SAAS,CAAC,SAAS,EAAE,MAAM,CAA2B;IACtD,SAAS,CAAC,YAAY,EAAE,MAAM,CAAC;IAC/B,SAAS,CAAC,YAAY,EAAE,MAAM,EAAE,CAAM;IACtC,SAAS,CAAC,aAAa,EAAE,MAAM,EAAE,CAAM;IACvC,SAAS,CAAC,UAAU,EAAE,MAAM,CAAS;IACrC,SAAS,CAAC,cAAc;;;;QAEvB;IACD,SAAS,CAAC,WAAW,EAAE,gBAAgB,EAAE,CAKxC;IACD,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC;IAErB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAG5B,WAAW,CAAC,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;IAUtD,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC;CAO3F;AAED,eAAe,mCAAmC,CAAA;AAClD,OAAO,EAAC,mCAAmC,EAAC,CAAA"}
@@ -0,0 +1,10 @@
1
+ import type { IPasswordPolicy, IPasswordPolicyProject } from "@drax/identity-share";
2
+ declare class PasswordPolicyResolver {
3
+ private projectPolicy;
4
+ setProjectPolicy(projectPolicy: IPasswordPolicyProject): void;
5
+ resolve(): Promise<IPasswordPolicy>;
6
+ private getProjectPolicy;
7
+ }
8
+ export default PasswordPolicyResolver;
9
+ export { PasswordPolicyResolver };
10
+ //# sourceMappingURL=PasswordPolicyResolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PasswordPolicyResolver.d.ts","sourceRoot":"","sources":["../../src/resolver/PasswordPolicyResolver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,eAAe,EAAE,sBAAsB,EAAC,MAAM,sBAAsB,CAAC;AAKlF,cAAM,sBAAsB;IAExB,OAAO,CAAC,aAAa,CAA+B;IAEpD,gBAAgB,CAAE,aAAa,EAAG,sBAAsB;IAIlD,OAAO,IAAI,OAAO,CAAC,eAAe,CAAC;YAW3B,gBAAgB;CAKjC;AAED,eAAe,sBAAsB,CAAA;AACrC,OAAO,EAAC,sBAAsB,EAAC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"UserRoutes.d.ts","sourceRoot":"","sources":["../../src/routes/UserRoutes.ts"],"names":[],"mappings":"AAaA,iBAAe,UAAU,CAAC,OAAO,KAAA,EAAE,OAAO,KAAA,iBA8HzC;AAED,eAAe,UAAU,CAAC;AAC1B,OAAO,EAAC,UAAU,EAAC,CAAA"}
1
+ {"version":3,"file":"UserRoutes.d.ts","sourceRoot":"","sources":["../../src/routes/UserRoutes.ts"],"names":[],"mappings":"AAcA,iBAAe,UAAU,CAAC,OAAO,KAAA,EAAE,OAAO,KAAA,iBAwIzC;AAED,eAAe,UAAU,CAAC;AAC1B,OAAO,EAAC,UAAU,EAAC,CAAA"}
@@ -0,0 +1,25 @@
1
+ import z from "zod";
2
+ declare const PasswordPolicySchema: z.ZodObject<{
3
+ minLength: z.ZodNumber;
4
+ maxLength: z.ZodNumber;
5
+ requireUppercase: z.ZodBoolean;
6
+ requireLowercase: z.ZodBoolean;
7
+ requireNumber: z.ZodBoolean;
8
+ requireSpecialChar: z.ZodBoolean;
9
+ disallowSpaces: z.ZodBoolean;
10
+ preventReuse: z.ZodNumber;
11
+ expirationDays: z.ZodNullable<z.ZodNumber>;
12
+ }, z.core.$strip>;
13
+ declare const PartialPasswordPolicySchema: z.ZodObject<{
14
+ minLength: z.ZodOptional<z.ZodNumber>;
15
+ maxLength: z.ZodOptional<z.ZodNumber>;
16
+ requireUppercase: z.ZodOptional<z.ZodBoolean>;
17
+ requireLowercase: z.ZodOptional<z.ZodBoolean>;
18
+ requireNumber: z.ZodOptional<z.ZodBoolean>;
19
+ requireSpecialChar: z.ZodOptional<z.ZodBoolean>;
20
+ disallowSpaces: z.ZodOptional<z.ZodBoolean>;
21
+ preventReuse: z.ZodOptional<z.ZodNumber>;
22
+ expirationDays: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
23
+ }, z.core.$strip>;
24
+ export { PasswordPolicySchema, PartialPasswordPolicySchema };
25
+ //# sourceMappingURL=PasswordPolicySchema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PasswordPolicySchema.d.ts","sourceRoot":"","sources":["../../src/schemas/PasswordPolicySchema.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAC;AAcpB,QAAA,MAAM,oBAAoB;;;;;;;;;;iBAOzB,CAAC;AAEF,QAAA,MAAM,2BAA2B;;;;;;;;;;iBAAqC,CAAC;AAEvE,OAAO,EACH,oBAAoB,EACpB,2BAA2B,EAC9B,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"RegisterSchema.d.ts","sourceRoot":"","sources":["../../src/schemas/RegisterSchema.ts"],"names":[],"mappings":"AAAA,OAAO,CAAkB,MAAM,KAAK,CAAA;AAEpC,QAAA,MAAM,yBAAyB;;;;;;iBAW7B,CAAC;AAEH,QAAA,MAAM,0BAA0B;;;iBAI9B,CAAC;AAEH,OAAO,EAAC,yBAAyB,EAAE,0BAA0B,EAAC,CAAA"}
1
+ {"version":3,"file":"RegisterSchema.d.ts","sourceRoot":"","sources":["../../src/schemas/RegisterSchema.ts"],"names":[],"mappings":"AAAA,OAAO,CAAkB,MAAM,KAAK,CAAA;AAEpC,QAAA,MAAM,yBAAyB;;;;;;iBAS7B,CAAC;AAEH,QAAA,MAAM,0BAA0B;;;iBAI9B,CAAC;AAEH,OAAO,EAAC,yBAAyB,EAAE,0BAA0B,EAAC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"UserSchema.d.ts","sourceRoot":"","sources":["../../src/schemas/UserSchema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,GAAG,EAA+C,MAAM,KAAK,CAAA;AAE5E,QAAA,MAAM,cAAc;;;;;;;;gCAalB,CAAA;AAEF,QAAA,MAAM,gBAAgB;;;;;;;;;gCAKpB,CAAC;AAGH,QAAA,MAAM,gBAAgB;;;;;;;;gCAA4B,CAAC;AAEnD,QAAA,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;gCAqBV,CAAC;AAGP,OAAO,EACH,cAAc,EACd,UAAU,EACV,gBAAgB,EAChB,gBAAgB,GACnB,CAAA"}
1
+ {"version":3,"file":"UserSchema.d.ts","sourceRoot":"","sources":["../../src/schemas/UserSchema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,GAAG,EAA+C,MAAM,KAAK,CAAA;AAE5E,QAAA,MAAM,cAAc;;;;;;;;gCAalB,CAAA;AAEF,QAAA,MAAM,gBAAgB;;;;;;;;;gCAGpB,CAAC;AAGH,QAAA,MAAM,gBAAgB;;;;;;;;gCAA4B,CAAC;AAEnD,QAAA,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;gCAqBV,CAAC;AAGP,OAAO,EACH,cAAc,EACd,UAAU,EACV,gBAAgB,EAChB,gBAAgB,GACnB,CAAA"}
@@ -0,0 +1,4 @@
1
+ import type { IPasswordPolicy } from "../interfaces/IPasswordPolicy.js";
2
+ declare const defaultPasswordPolicy: IPasswordPolicy;
3
+ export { defaultPasswordPolicy };
4
+ //# sourceMappingURL=defaultPasswordPolicy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defaultPasswordPolicy.d.ts","sourceRoot":"","sources":["../../../src/security/constants/defaultPasswordPolicy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,kCAAkC,CAAC;AAEtE,QAAA,MAAM,qBAAqB,EAAE,eAU5B,CAAA;AAED,OAAO,EACH,qBAAqB,EACxB,CAAA"}
@@ -0,0 +1,13 @@
1
+ interface IPasswordPolicy {
2
+ minLength: number;
3
+ maxLength: number;
4
+ requireUppercase: boolean;
5
+ requireLowercase: boolean;
6
+ requireNumber: boolean;
7
+ requireSpecialChar: boolean;
8
+ disallowSpaces: boolean;
9
+ preventReuse: number;
10
+ expirationDays: number | null;
11
+ }
12
+ export type { IPasswordPolicy };
13
+ //# sourceMappingURL=IPasswordPolicy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IPasswordPolicy.d.ts","sourceRoot":"","sources":["../../../src/security/interfaces/IPasswordPolicy.ts"],"names":[],"mappings":"AAAA,UAAU,eAAe;IACrB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,gBAAgB,EAAE,OAAO,CAAA;IACzB,gBAAgB,EAAE,OAAO,CAAA;IACzB,aAAa,EAAE,OAAO,CAAA;IACtB,kBAAkB,EAAE,OAAO,CAAA;IAC3B,cAAc,EAAE,OAAO,CAAA;IACvB,YAAY,EAAE,MAAM,CAAA;IACpB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;CAChC;AAED,YAAY,EAAC,eAAe,EAAC,CAAA"}
@@ -0,0 +1,6 @@
1
+ import type { IPasswordPolicy } from "./IPasswordPolicy.js";
2
+ interface IPasswordPolicyProjectContext {
3
+ projectPolicy?: Partial<IPasswordPolicy>;
4
+ }
5
+ export type { IPasswordPolicyProjectContext };
6
+ //# sourceMappingURL=IPasswordPolicyProjectContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IPasswordPolicyProjectContext.d.ts","sourceRoot":"","sources":["../../../src/security/interfaces/IPasswordPolicyProjectContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,sBAAsB,CAAC;AAE1D,UAAU,6BAA6B;IACnC,aAAa,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAA;CAC3C;AAED,YAAY,EAAC,6BAA6B,EAAC,CAAA"}
@@ -0,0 +1,25 @@
1
+ import z from "zod";
2
+ declare const PasswordPolicySchema: z.ZodObject<{
3
+ minLength: z.ZodNumber;
4
+ maxLength: z.ZodNumber;
5
+ requireUppercase: z.ZodBoolean;
6
+ requireLowercase: z.ZodBoolean;
7
+ requireNumber: z.ZodBoolean;
8
+ requireSpecialChar: z.ZodBoolean;
9
+ disallowSpaces: z.ZodBoolean;
10
+ preventReuse: z.ZodNumber;
11
+ expirationDays: z.ZodNullable<z.ZodNumber>;
12
+ }, z.core.$strip>;
13
+ declare const PartialPasswordPolicySchema: z.ZodObject<{
14
+ minLength: z.ZodOptional<z.ZodNumber>;
15
+ maxLength: z.ZodOptional<z.ZodNumber>;
16
+ requireUppercase: z.ZodOptional<z.ZodBoolean>;
17
+ requireLowercase: z.ZodOptional<z.ZodBoolean>;
18
+ requireNumber: z.ZodOptional<z.ZodBoolean>;
19
+ requireSpecialChar: z.ZodOptional<z.ZodBoolean>;
20
+ disallowSpaces: z.ZodOptional<z.ZodBoolean>;
21
+ preventReuse: z.ZodOptional<z.ZodNumber>;
22
+ expirationDays: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
23
+ }, z.core.$strip>;
24
+ export { PasswordPolicySchema, PartialPasswordPolicySchema };
25
+ //# sourceMappingURL=PasswordPolicySchema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PasswordPolicySchema.d.ts","sourceRoot":"","sources":["../../../src/security/schemas/PasswordPolicySchema.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAC;AAcpB,QAAA,MAAM,oBAAoB;;;;;;;;;;iBAGxB,CAAC;AAEH,QAAA,MAAM,2BAA2B;;;;;;;;;;iBAAqC,CAAC;AAEvE,OAAO,EACH,oBAAoB,EACpB,2BAA2B,EAC9B,CAAA"}
@@ -0,0 +1,9 @@
1
+ import type { IPasswordPolicy } from "../interfaces/IPasswordPolicy.js";
2
+ import type { IPasswordPolicyProjectContext } from "../interfaces/IPasswordPolicyProjectContext.js";
3
+ declare class PasswordPolicyResolver {
4
+ resolve(projectContext?: IPasswordPolicyProjectContext): Promise<IPasswordPolicy>;
5
+ private getProjectPolicy;
6
+ }
7
+ export default PasswordPolicyResolver;
8
+ export { PasswordPolicyResolver };
9
+ //# sourceMappingURL=PasswordPolicyResolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PasswordPolicyResolver.d.ts","sourceRoot":"","sources":["../../../src/security/services/PasswordPolicyResolver.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,kCAAkC,CAAC;AACtE,OAAO,KAAK,EAAC,6BAA6B,EAAC,MAAM,gDAAgD,CAAC;AAIlG,cAAM,sBAAsB;IAClB,OAAO,CAAC,cAAc,CAAC,EAAE,6BAA6B,GAAG,OAAO,CAAC,eAAe,CAAC;YAWzE,gBAAgB;CAKjC;AAED,eAAe,sBAAsB,CAAA;AACrC,OAAO,EAAC,sBAAsB,EAAC,CAAA"}
@@ -0,0 +1,35 @@
1
+ import { ZodType } from "zod";
2
+ import type { IUser } from "@drax/identity-share";
3
+ import type { IPasswordPolicy } from "../interfaces/IPasswordPolicy.js";
4
+ import type { IPasswordPolicyProjectContext } from "../interfaces/IPasswordPolicyProjectContext.js";
5
+ import type UserPasswordHistoryService from "../../services/UserPasswordHistoryService.js";
6
+ import type { IUserRepository } from "../../interfaces/IUserRepository.js";
7
+ import PasswordPolicyResolver from "./PasswordPolicyResolver.js";
8
+ interface IValidatePasswordOptions {
9
+ field?: string;
10
+ userId?: string;
11
+ currentPasswordHash?: string;
12
+ }
13
+ declare class PasswordPolicyService {
14
+ private readonly resolver;
15
+ private readonly userRepository?;
16
+ private readonly userPasswordHistoryService?;
17
+ constructor(resolver: PasswordPolicyResolver, userRepository?: IUserRepository, userPasswordHistoryService?: UserPasswordHistoryService);
18
+ getFinalPolicy(projectContext?: IPasswordPolicyProjectContext): Promise<IPasswordPolicy>;
19
+ getPasswordSchema(projectContext?: IPasswordPolicyProjectContext): Promise<ZodType<string>>;
20
+ validatePassword(password: string, projectContext?: IPasswordPolicyProjectContext, options?: IValidatePasswordOptions): Promise<void>;
21
+ generateCompatiblePassword(projectContext?: IPasswordPolicyProjectContext): Promise<string>;
22
+ getPasswordStatus(user: IUser, projectContext?: IPasswordPolicyProjectContext): Promise<{
23
+ expired: boolean;
24
+ expiresAt: Date | null;
25
+ }>;
26
+ recordPassword(userId: string, passwordHash: string): Promise<void>;
27
+ private validateBusinessRules;
28
+ private getRecentPasswordHashes;
29
+ private getLastPasswordChangeDate;
30
+ private randomChar;
31
+ private shuffle;
32
+ }
33
+ export default PasswordPolicyService;
34
+ export { PasswordPolicyService };
35
+ //# sourceMappingURL=PasswordPolicyService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PasswordPolicyService.d.ts","sourceRoot":"","sources":["../../../src/security/services/PasswordPolicyService.ts"],"names":[],"mappings":"AACA,OAAO,EAAW,OAAO,EAAC,MAAM,KAAK,CAAC;AAGtC,OAAO,KAAK,EAAC,KAAK,EAAC,MAAM,sBAAsB,CAAC;AAEhD,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,kCAAkC,CAAC;AACtE,OAAO,KAAK,EAAC,6BAA6B,EAAC,MAAM,gDAAgD,CAAC;AAClG,OAAO,KAAK,0BAA0B,MAAM,8CAA8C,CAAC;AAC3F,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,qCAAqC,CAAC;AACzE,OAAO,sBAAsB,MAAM,6BAA6B,CAAC;AAGjE,UAAU,wBAAwB;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,mBAAmB,CAAC,EAAE,MAAM,CAAA;CAC/B;AAED,cAAM,qBAAqB;IAEnB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC;IAChC,OAAO,CAAC,QAAQ,CAAC,0BAA0B,CAAC;gBAF3B,QAAQ,EAAE,sBAAsB,EAChC,cAAc,CAAC,EAAE,eAAe,EAChC,0BAA0B,CAAC,EAAE,0BAA0B;IAItE,cAAc,CAAC,cAAc,CAAC,EAAE,6BAA6B,GAAG,OAAO,CAAC,eAAe,CAAC;IAIxF,iBAAiB,CAAC,cAAc,CAAC,EAAE,6BAA6B,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAK3F,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,6BAA6B,EAAE,OAAO,CAAC,EAAE,wBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC;IAsBrI,0BAA0B,CAAC,cAAc,CAAC,EAAE,6BAA6B,GAAG,OAAO,CAAC,MAAM,CAAC;IA0C3F,iBAAiB,CAAC,IAAI,EAAE,KAAK,EAAE,cAAc,CAAC,EAAE,6BAA6B,GAAG,OAAO,CAAC;QAAC,OAAO,EAAE,OAAO,CAAC;QAAC,SAAS,EAAE,IAAI,GAAG,IAAI,CAAA;KAAC,CAAC;IAoBnI,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;YAI3D,qBAAqB;YAcrB,uBAAuB;YAgBvB,yBAAyB;IAavC,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,OAAO;CAUlB;AAED,eAAe,qBAAqB,CAAA;AACpC,OAAO,EAAC,qBAAqB,EAAC,CAAA"}
@@ -0,0 +1,9 @@
1
+ import z from "zod";
2
+ import type { IPasswordPolicy } from "../interfaces/IPasswordPolicy.js";
3
+ declare class PasswordPolicySchemaFactory {
4
+ private static cache;
5
+ static create(policy: IPasswordPolicy): z.ZodType<string>;
6
+ }
7
+ export default PasswordPolicySchemaFactory;
8
+ export { PasswordPolicySchemaFactory };
9
+ //# sourceMappingURL=PasswordPolicySchemaFactory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PasswordPolicySchemaFactory.d.ts","sourceRoot":"","sources":["../../../src/security/utils/PasswordPolicySchemaFactory.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAC;AACpB,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,kCAAkC,CAAC;AAEtE,cAAM,2BAA2B;IAC7B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAuC;IAE3D,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,eAAe,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;CAqC5D;AAED,eAAe,2BAA2B,CAAA;AAC1C,OAAO,EAAC,2BAA2B,EAAC,CAAA"}
@@ -0,0 +1,5 @@
1
+ import type { IPasswordPolicy } from "../interfaces/IPasswordPolicy.js";
2
+ declare function getPasswordEnvPolicy(): Partial<IPasswordPolicy>;
3
+ export default getPasswordEnvPolicy;
4
+ export { getPasswordEnvPolicy };
5
+ //# sourceMappingURL=getPasswordEnvPolicy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getPasswordEnvPolicy.d.ts","sourceRoot":"","sources":["../../../src/security/utils/getPasswordEnvPolicy.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,kCAAkC,CAAC;AAEtE,iBAAS,oBAAoB,IAAI,OAAO,CAAC,eAAe,CAAC,CAgBxD;AAED,eAAe,oBAAoB,CAAA;AACnC,OAAO,EAAC,oBAAoB,EAAC,CAAA"}
@@ -0,0 +1,34 @@
1
+ import { ZodType } from "zod";
2
+ import type { IUser } from "@drax/identity-share";
3
+ import type { IPasswordPolicy } from "@drax/identity-share";
4
+ import type UserPasswordHistoryService from "./UserPasswordHistoryService";
5
+ import type { IUserRepository } from "../interfaces/IUserRepository";
6
+ import PasswordPolicyResolver from "../resolver/PasswordPolicyResolver.js";
7
+ interface IValidatePasswordOptions {
8
+ field?: string;
9
+ userId?: string;
10
+ currentPasswordHash?: string;
11
+ }
12
+ declare class PasswordPolicyService {
13
+ private readonly resolver;
14
+ private readonly userRepository?;
15
+ private readonly userPasswordHistoryService?;
16
+ constructor(resolver: PasswordPolicyResolver, userRepository?: IUserRepository, userPasswordHistoryService?: UserPasswordHistoryService);
17
+ getFinalPolicy(): Promise<IPasswordPolicy>;
18
+ getPasswordSchema(): Promise<ZodType<string>>;
19
+ validatePassword(password: string, options?: IValidatePasswordOptions): Promise<void>;
20
+ generateCompatiblePassword(): Promise<string>;
21
+ getPasswordExpiration(user: IUser): Promise<{
22
+ expired: boolean;
23
+ expiresAt: Date | null;
24
+ }>;
25
+ recordPassword(userId: string, passwordHash: string): Promise<void>;
26
+ private validateReuse;
27
+ private getRecentPasswordHashes;
28
+ private getLastPasswordChangeDate;
29
+ private randomChar;
30
+ private shuffle;
31
+ }
32
+ export default PasswordPolicyService;
33
+ export { PasswordPolicyService };
34
+ //# sourceMappingURL=PasswordPolicyService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PasswordPolicyService.d.ts","sourceRoot":"","sources":["../../src/services/PasswordPolicyService.ts"],"names":[],"mappings":"AACA,OAAO,EAAW,OAAO,EAAC,MAAM,KAAK,CAAC;AAEtC,OAAO,KAAK,EAAC,KAAK,EAAC,MAAM,sBAAsB,CAAC;AAEhD,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,0BAA0B,MAAM,8BAA8B,CAAC;AAC3E,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,+BAA+B,CAAC;AAEnE,OAAO,sBAAsB,MAAM,uCAAuC,CAAC;AAG3E,UAAU,wBAAwB;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,mBAAmB,CAAC,EAAE,MAAM,CAAA;CAC/B;AAED,cAAM,qBAAqB;IAEnB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC;IAChC,OAAO,CAAC,QAAQ,CAAC,0BAA0B,CAAC;gBAF3B,QAAQ,EAAE,sBAAsB,EAChC,cAAc,CAAC,EAAE,eAAe,EAChC,0BAA0B,CAAC,EAAE,0BAA0B;IAItE,cAAc,IAAI,OAAO,CAAC,eAAe,CAAC;IAI1C,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAK7C,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAG,OAAO,CAAC,EAAE,wBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC;IAsBtF,0BAA0B,IAAI,OAAO,CAAC,MAAM,CAAC;IA0C7C,qBAAqB,CAAC,IAAI,EAAE,KAAK,GAAG,OAAO,CAAC;QAAC,OAAO,EAAE,OAAO,CAAC;QAAC,SAAS,EAAE,IAAI,GAAG,IAAI,CAAA;KAAC,CAAC;IAoBvF,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;YAI3D,aAAa;YAcb,uBAAuB;YAgBvB,yBAAyB;IAavC,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,OAAO;CAUlB;AAED,eAAe,qBAAqB,CAAA;AACpC,OAAO,EAAC,qBAAqB,EAAC,CAAA"}
@@ -0,0 +1,10 @@
1
+ import type { IUserPasswordHistoryRepository } from "../interfaces/IUserPasswordHistoryRepository.js";
2
+ import type { IUserPasswordHistory } from "../interfaces/IUserPasswordHistory.js";
3
+ declare class UserPasswordHistoryService {
4
+ private readonly repository;
5
+ constructor(repository: IUserPasswordHistoryRepository);
6
+ create(userId: string, passwordHash: string): Promise<IUserPasswordHistory>;
7
+ findLatestByUserId(userId: string, limit: number): Promise<IUserPasswordHistory[]>;
8
+ }
9
+ export default UserPasswordHistoryService;
10
+ //# sourceMappingURL=UserPasswordHistoryService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UserPasswordHistoryService.d.ts","sourceRoot":"","sources":["../../src/services/UserPasswordHistoryService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,8BAA8B,EAAC,MAAM,iDAAiD,CAAC;AACpG,OAAO,KAAK,EAAC,oBAAoB,EAAC,MAAM,uCAAuC,CAAC;AAEhF,cAAM,0BAA0B;IAChB,OAAO,CAAC,QAAQ,CAAC,UAAU;gBAAV,UAAU,EAAE,8BAA8B;IAGjE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAO3E,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC;CAM3F;AAED,eAAe,0BAA0B,CAAA"}
@@ -2,9 +2,13 @@ import type { IUser, IUserCreate, IUserUpdate } from "@drax/identity-share";
2
2
  import type { IUserRepository } from "../interfaces/IUserRepository";
3
3
  import { IDraxPaginateOptions, IDraxPaginateResult } from "@drax/crud-share";
4
4
  import { AbstractService } from "@drax/crud-back";
5
+ import type PasswordPolicyService from "./PasswordPolicyService";
6
+ import type UserPasswordHistoryService from "./UserPasswordHistoryService.js";
5
7
  declare class UserService extends AbstractService<IUser, IUserCreate, IUserUpdate> {
8
+ private readonly passwordPolicyService;
9
+ private readonly userPasswordHistoryService;
6
10
  _repository: IUserRepository;
7
- constructor(userRepository: IUserRepository);
11
+ constructor(userRepository: IUserRepository, passwordPolicyService?: PasswordPolicyService, userPasswordHistoryService?: UserPasswordHistoryService);
8
12
  auth(username: string, password: string, { userAgent, ip }: {
9
13
  userAgent: any;
10
14
  ip: any;