@ackplus/nest-auth 2.7.5 → 2.8.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 (220) hide show
  1. package/dist/lib/admin-console/admin-console.module.d.ts +3 -1
  2. package/dist/lib/admin-console/admin-console.module.d.ts.map +1 -1
  3. package/dist/lib/admin-console/admin-console.module.js +10 -0
  4. package/dist/lib/admin-console/admin-console.module.js.map +1 -1
  5. package/dist/lib/admin-console/controllers/admin-auth.controller.d.ts +13 -5
  6. package/dist/lib/admin-console/controllers/admin-auth.controller.d.ts.map +1 -1
  7. package/dist/lib/admin-console/controllers/admin-auth.controller.js +112 -15
  8. package/dist/lib/admin-console/controllers/admin-auth.controller.js.map +1 -1
  9. package/dist/lib/admin-console/controllers/admin-blocked-domains.controller.d.ts +23 -0
  10. package/dist/lib/admin-console/controllers/admin-blocked-domains.controller.d.ts.map +1 -0
  11. package/dist/lib/admin-console/controllers/admin-blocked-domains.controller.js +105 -0
  12. package/dist/lib/admin-console/controllers/admin-blocked-domains.controller.js.map +1 -0
  13. package/dist/lib/admin-console/controllers/admin-console.controller.d.ts.map +1 -1
  14. package/dist/lib/admin-console/controllers/admin-console.controller.js +5 -1
  15. package/dist/lib/admin-console/controllers/admin-console.controller.js.map +1 -1
  16. package/dist/lib/admin-console/decorators/admin-throttle.decorator.d.ts +4 -0
  17. package/dist/lib/admin-console/decorators/admin-throttle.decorator.d.ts.map +1 -0
  18. package/dist/lib/admin-console/decorators/admin-throttle.decorator.js +11 -0
  19. package/dist/lib/admin-console/decorators/admin-throttle.decorator.js.map +1 -0
  20. package/dist/lib/admin-console/dto/admin-blocked-domain.dto.d.ts +4 -0
  21. package/dist/lib/admin-console/dto/admin-blocked-domain.dto.d.ts.map +1 -0
  22. package/dist/lib/admin-console/dto/admin-blocked-domain.dto.js +32 -0
  23. package/dist/lib/admin-console/dto/admin-blocked-domain.dto.js.map +1 -0
  24. package/dist/lib/admin-console/entities/admin-user.entity.d.ts +1 -0
  25. package/dist/lib/admin-console/entities/admin-user.entity.d.ts.map +1 -1
  26. package/dist/lib/admin-console/entities/admin-user.entity.js +15 -0
  27. package/dist/lib/admin-console/entities/admin-user.entity.js.map +1 -1
  28. package/dist/lib/admin-console/guards/admin-brute-force.guard.d.ts +12 -0
  29. package/dist/lib/admin-console/guards/admin-brute-force.guard.d.ts.map +1 -0
  30. package/dist/lib/admin-console/guards/admin-brute-force.guard.js +45 -0
  31. package/dist/lib/admin-console/guards/admin-brute-force.guard.js.map +1 -0
  32. package/dist/lib/admin-console/guards/admin-session.guard.d.ts +3 -1
  33. package/dist/lib/admin-console/guards/admin-session.guard.d.ts.map +1 -1
  34. package/dist/lib/admin-console/guards/admin-session.guard.js +10 -2
  35. package/dist/lib/admin-console/guards/admin-session.guard.js.map +1 -1
  36. package/dist/lib/admin-console/middleware/admin-security-headers.middleware.d.ts +6 -0
  37. package/dist/lib/admin-console/middleware/admin-security-headers.middleware.d.ts.map +1 -0
  38. package/dist/lib/admin-console/middleware/admin-security-headers.middleware.js +35 -0
  39. package/dist/lib/admin-console/middleware/admin-security-headers.middleware.js.map +1 -0
  40. package/dist/lib/admin-console/services/admin-auth.service.d.ts +2 -0
  41. package/dist/lib/admin-console/services/admin-auth.service.d.ts.map +1 -1
  42. package/dist/lib/admin-console/services/admin-auth.service.js +14 -0
  43. package/dist/lib/admin-console/services/admin-auth.service.js.map +1 -1
  44. package/dist/lib/admin-console/services/admin-console-config.service.d.ts +2 -0
  45. package/dist/lib/admin-console/services/admin-console-config.service.d.ts.map +1 -1
  46. package/dist/lib/admin-console/services/admin-console-config.service.js +25 -3
  47. package/dist/lib/admin-console/services/admin-console-config.service.js.map +1 -1
  48. package/dist/lib/admin-console/services/admin-session.service.d.ts +1 -0
  49. package/dist/lib/admin-console/services/admin-session.service.d.ts.map +1 -1
  50. package/dist/lib/admin-console/services/admin-session.service.js +4 -3
  51. package/dist/lib/admin-console/services/admin-session.service.js.map +1 -1
  52. package/dist/lib/admin-console/services/admin-user.service.d.ts +1 -0
  53. package/dist/lib/admin-console/services/admin-user.service.d.ts.map +1 -1
  54. package/dist/lib/admin-console/services/admin-user.service.js +11 -0
  55. package/dist/lib/admin-console/services/admin-user.service.js.map +1 -1
  56. package/dist/lib/admin-console/static/index.html +405 -372
  57. package/dist/lib/admin-console/static/nest-auth.json +371 -4
  58. package/dist/lib/auth/auth.module.d.ts.map +1 -1
  59. package/dist/lib/auth/auth.module.js +5 -0
  60. package/dist/lib/auth/auth.module.js.map +1 -1
  61. package/dist/lib/auth/controllers/auth.controller.d.ts +14 -1
  62. package/dist/lib/auth/controllers/auth.controller.d.ts.map +1 -1
  63. package/dist/lib/auth/controllers/auth.controller.js +62 -2
  64. package/dist/lib/auth/controllers/auth.controller.js.map +1 -1
  65. package/dist/lib/auth/controllers/mfa.controller.d.ts.map +1 -1
  66. package/dist/lib/auth/controllers/mfa.controller.js +2 -1
  67. package/dist/lib/auth/controllers/mfa.controller.js.map +1 -1
  68. package/dist/lib/auth/data/disposable-domains.generated.d.ts +2 -0
  69. package/dist/lib/auth/data/disposable-domains.generated.d.ts.map +1 -0
  70. package/dist/lib/auth/data/disposable-domains.generated.js +8061 -0
  71. package/dist/lib/auth/data/disposable-domains.generated.js.map +1 -0
  72. package/dist/lib/auth/dto/credentials/social-credentials.dto.d.ts +3 -0
  73. package/dist/lib/auth/dto/credentials/social-credentials.dto.d.ts.map +1 -1
  74. package/dist/lib/auth/dto/credentials/social-credentials.dto.js +34 -1
  75. package/dist/lib/auth/dto/credentials/social-credentials.dto.js.map +1 -1
  76. package/dist/lib/auth/entities/blocked-email-domain.entity.d.ts +8 -0
  77. package/dist/lib/auth/entities/blocked-email-domain.entity.d.ts.map +1 -0
  78. package/dist/lib/auth/entities/blocked-email-domain.entity.js +41 -0
  79. package/dist/lib/auth/entities/blocked-email-domain.entity.js.map +1 -0
  80. package/dist/lib/auth/entities/otp.entity.d.ts +1 -0
  81. package/dist/lib/auth/entities/otp.entity.d.ts.map +1 -1
  82. package/dist/lib/auth/entities/otp.entity.js +5 -0
  83. package/dist/lib/auth/entities/otp.entity.js.map +1 -1
  84. package/dist/lib/auth/guards/auth.guard.d.ts +4 -1
  85. package/dist/lib/auth/guards/auth.guard.d.ts.map +1 -1
  86. package/dist/lib/auth/guards/auth.guard.js +40 -7
  87. package/dist/lib/auth/guards/auth.guard.js.map +1 -1
  88. package/dist/lib/auth/interceptors/token-response.interceptor.d.ts +3 -1
  89. package/dist/lib/auth/interceptors/token-response.interceptor.d.ts.map +1 -1
  90. package/dist/lib/auth/interceptors/token-response.interceptor.js +15 -2
  91. package/dist/lib/auth/interceptors/token-response.interceptor.js.map +1 -1
  92. package/dist/lib/auth/services/auth.service.d.ts +3 -1
  93. package/dist/lib/auth/services/auth.service.d.ts.map +1 -1
  94. package/dist/lib/auth/services/auth.service.js +52 -13
  95. package/dist/lib/auth/services/auth.service.js.map +1 -1
  96. package/dist/lib/auth/services/disposable-email.service.d.ts +37 -0
  97. package/dist/lib/auth/services/disposable-email.service.d.ts.map +1 -0
  98. package/dist/lib/auth/services/disposable-email.service.js +141 -0
  99. package/dist/lib/auth/services/disposable-email.service.js.map +1 -0
  100. package/dist/lib/auth/services/mfa.service.d.ts +1 -1
  101. package/dist/lib/auth/services/mfa.service.d.ts.map +1 -1
  102. package/dist/lib/auth/services/mfa.service.js +5 -2
  103. package/dist/lib/auth/services/mfa.service.js.map +1 -1
  104. package/dist/lib/auth/services/otp-flow.service.d.ts.map +1 -1
  105. package/dist/lib/auth/services/otp-flow.service.js +19 -0
  106. package/dist/lib/auth/services/otp-flow.service.js.map +1 -1
  107. package/dist/lib/auth.constants.d.ts +34 -0
  108. package/dist/lib/auth.constants.d.ts.map +1 -1
  109. package/dist/lib/auth.constants.js +22 -1
  110. package/dist/lib/auth.constants.js.map +1 -1
  111. package/dist/lib/core/core.module.d.ts.map +1 -1
  112. package/dist/lib/core/core.module.js +18 -0
  113. package/dist/lib/core/core.module.js.map +1 -1
  114. package/dist/lib/core/decorators/captcha.decorator.d.ts +2 -0
  115. package/dist/lib/core/decorators/captcha.decorator.d.ts.map +1 -0
  116. package/dist/lib/core/decorators/captcha.decorator.js +10 -0
  117. package/dist/lib/core/decorators/captcha.decorator.js.map +1 -0
  118. package/dist/lib/core/decorators/lockout.decorator.d.ts +2 -0
  119. package/dist/lib/core/decorators/lockout.decorator.d.ts.map +1 -0
  120. package/dist/lib/core/decorators/lockout.decorator.js +10 -0
  121. package/dist/lib/core/decorators/lockout.decorator.js.map +1 -0
  122. package/dist/lib/core/decorators/rate-limit.decorator.d.ts +3 -0
  123. package/dist/lib/core/decorators/rate-limit.decorator.d.ts.map +1 -0
  124. package/dist/lib/core/decorators/rate-limit.decorator.js +10 -0
  125. package/dist/lib/core/decorators/rate-limit.decorator.js.map +1 -0
  126. package/dist/lib/core/decorators/skip-email-verification.decorator.d.ts +3 -0
  127. package/dist/lib/core/decorators/skip-email-verification.decorator.d.ts.map +1 -0
  128. package/dist/lib/core/decorators/skip-email-verification.decorator.js +8 -0
  129. package/dist/lib/core/decorators/skip-email-verification.decorator.js.map +1 -0
  130. package/dist/lib/core/guards/captcha.guard.d.ts +8 -0
  131. package/dist/lib/core/guards/captcha.guard.d.ts.map +1 -0
  132. package/dist/lib/core/guards/captcha.guard.js +59 -0
  133. package/dist/lib/core/guards/captcha.guard.js.map +1 -0
  134. package/dist/lib/core/guards/lockout.guard.d.ts +10 -0
  135. package/dist/lib/core/guards/lockout.guard.d.ts.map +1 -0
  136. package/dist/lib/core/guards/lockout.guard.js +55 -0
  137. package/dist/lib/core/guards/lockout.guard.js.map +1 -0
  138. package/dist/lib/core/guards/rate-limit.guard.d.ts +10 -0
  139. package/dist/lib/core/guards/rate-limit.guard.d.ts.map +1 -0
  140. package/dist/lib/core/guards/rate-limit.guard.js +39 -0
  141. package/dist/lib/core/guards/rate-limit.guard.js.map +1 -0
  142. package/dist/lib/core/index.d.ts +1 -0
  143. package/dist/lib/core/index.d.ts.map +1 -1
  144. package/dist/lib/core/index.js +1 -0
  145. package/dist/lib/core/index.js.map +1 -1
  146. package/dist/lib/core/interfaces/auth-module-options.interface.d.ts +52 -0
  147. package/dist/lib/core/interfaces/auth-module-options.interface.d.ts.map +1 -1
  148. package/dist/lib/core/interfaces/rate-limit.interface.d.ts +19 -0
  149. package/dist/lib/core/interfaces/rate-limit.interface.d.ts.map +1 -0
  150. package/dist/lib/core/interfaces/rate-limit.interface.js +3 -0
  151. package/dist/lib/core/interfaces/rate-limit.interface.js.map +1 -0
  152. package/dist/lib/core/interfaces/session-options.interface.d.ts +5 -0
  153. package/dist/lib/core/interfaces/session-options.interface.d.ts.map +1 -1
  154. package/dist/lib/core/providers/apple-auth.provider.d.ts +1 -0
  155. package/dist/lib/core/providers/apple-auth.provider.d.ts.map +1 -1
  156. package/dist/lib/core/providers/apple-auth.provider.js +4 -1
  157. package/dist/lib/core/providers/apple-auth.provider.js.map +1 -1
  158. package/dist/lib/core/providers/base-auth.provider.d.ts +1 -0
  159. package/dist/lib/core/providers/base-auth.provider.d.ts.map +1 -1
  160. package/dist/lib/core/providers/base-auth.provider.js +10 -0
  161. package/dist/lib/core/providers/base-auth.provider.js.map +1 -1
  162. package/dist/lib/core/providers/email-auth.provider.js +3 -3
  163. package/dist/lib/core/providers/email-auth.provider.js.map +1 -1
  164. package/dist/lib/core/providers/facebook-auth.provider.d.ts +1 -0
  165. package/dist/lib/core/providers/facebook-auth.provider.d.ts.map +1 -1
  166. package/dist/lib/core/providers/facebook-auth.provider.js +2 -0
  167. package/dist/lib/core/providers/facebook-auth.provider.js.map +1 -1
  168. package/dist/lib/core/providers/github-auth.provider.d.ts.map +1 -1
  169. package/dist/lib/core/providers/github-auth.provider.js +1 -0
  170. package/dist/lib/core/providers/github-auth.provider.js.map +1 -1
  171. package/dist/lib/core/providers/google-auth.provider.d.ts.map +1 -1
  172. package/dist/lib/core/providers/google-auth.provider.js +1 -0
  173. package/dist/lib/core/providers/google-auth.provider.js.map +1 -1
  174. package/dist/lib/core/providers/jwt-auth.provider.d.ts +4 -19
  175. package/dist/lib/core/providers/jwt-auth.provider.d.ts.map +1 -1
  176. package/dist/lib/core/providers/jwt-auth.provider.js +14 -10
  177. package/dist/lib/core/providers/jwt-auth.provider.js.map +1 -1
  178. package/dist/lib/core/providers/phone-auth.provider.js +3 -3
  179. package/dist/lib/core/providers/phone-auth.provider.js.map +1 -1
  180. package/dist/lib/core/services/auth-config.service.d.ts +2 -0
  181. package/dist/lib/core/services/auth-config.service.d.ts.map +1 -1
  182. package/dist/lib/core/services/auth-config.service.js +62 -12
  183. package/dist/lib/core/services/auth-config.service.js.map +1 -1
  184. package/dist/lib/core/services/auth-provider-registry.service.d.ts.map +1 -1
  185. package/dist/lib/core/services/auth-provider-registry.service.js +1 -1
  186. package/dist/lib/core/services/auth-provider-registry.service.js.map +1 -1
  187. package/dist/lib/core/services/csrf.service.d.ts +13 -0
  188. package/dist/lib/core/services/csrf.service.d.ts.map +1 -0
  189. package/dist/lib/core/services/csrf.service.js +88 -0
  190. package/dist/lib/core/services/csrf.service.js.map +1 -0
  191. package/dist/lib/core/services/lockout.service.d.ts +24 -0
  192. package/dist/lib/core/services/lockout.service.d.ts.map +1 -0
  193. package/dist/lib/core/services/lockout.service.js +129 -0
  194. package/dist/lib/core/services/lockout.service.js.map +1 -0
  195. package/dist/lib/core/services/rate-limit.service.d.ts +22 -0
  196. package/dist/lib/core/services/rate-limit.service.d.ts.map +1 -0
  197. package/dist/lib/core/services/rate-limit.service.js +116 -0
  198. package/dist/lib/core/services/rate-limit.service.js.map +1 -0
  199. package/dist/lib/permission/services/permission.service.d.ts.map +1 -1
  200. package/dist/lib/permission/services/permission.service.js +2 -1
  201. package/dist/lib/permission/services/permission.service.js.map +1 -1
  202. package/dist/lib/user/entities/user.entity.d.ts.map +1 -1
  203. package/dist/lib/user/entities/user.entity.js +2 -0
  204. package/dist/lib/user/entities/user.entity.js.map +1 -1
  205. package/dist/lib/user/services/user.service.d.ts +3 -0
  206. package/dist/lib/user/services/user.service.d.ts.map +1 -1
  207. package/dist/lib/user/services/user.service.js +32 -0
  208. package/dist/lib/user/services/user.service.js.map +1 -1
  209. package/dist/lib/utils/common-passwords.d.ts +2 -0
  210. package/dist/lib/utils/common-passwords.d.ts.map +1 -0
  211. package/dist/lib/utils/common-passwords.js +16 -0
  212. package/dist/lib/utils/common-passwords.js.map +1 -0
  213. package/dist/lib/utils/otp.d.ts.map +1 -1
  214. package/dist/lib/utils/otp.js +11 -3
  215. package/dist/lib/utils/otp.js.map +1 -1
  216. package/dist/lib/utils/password-policy.util.d.ts +11 -0
  217. package/dist/lib/utils/password-policy.util.d.ts.map +1 -0
  218. package/dist/lib/utils/password-policy.util.js +76 -0
  219. package/dist/lib/utils/password-policy.util.js.map +1 -0
  220. package/package.json +3 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin-blocked-domain.dto.d.ts","sourceRoot":"","sources":["../../../../src/lib/admin-console/dto/admin-blocked-domain.dto.ts"],"names":[],"mappings":"AAGA,qBAAa,yBAAyB;IAWlC,OAAO,EAAE,MAAM,EAAE,CAAC;CACrB"}
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.AdminAddBlockedDomainsDto = void 0;
13
+ const swagger_1 = require("@nestjs/swagger");
14
+ const class_validator_1 = require("class-validator");
15
+ class AdminAddBlockedDomainsDto {
16
+ domains;
17
+ }
18
+ exports.AdminAddBlockedDomainsDto = AdminAddBlockedDomainsDto;
19
+ __decorate([
20
+ (0, swagger_1.ApiProperty)({
21
+ description: 'One or more email domains to block (e.g. ["mailinator.com", "guerrillamail.com"]). Max 1000 per request; each max 253 chars.',
22
+ type: [String],
23
+ example: ['mailinator.com', 'guerrillamail.com'],
24
+ }),
25
+ (0, class_validator_1.IsArray)(),
26
+ (0, class_validator_1.ArrayNotEmpty)(),
27
+ (0, class_validator_1.ArrayMaxSize)(1000),
28
+ (0, class_validator_1.IsString)({ each: true }),
29
+ (0, class_validator_1.MaxLength)(253, { each: true }),
30
+ __metadata("design:type", Array)
31
+ ], AdminAddBlockedDomainsDto.prototype, "domains", void 0);
32
+ //# sourceMappingURL=admin-blocked-domain.dto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin-blocked-domain.dto.js","sourceRoot":"","sources":["../../../../src/lib/admin-console/dto/admin-blocked-domain.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6CAA8C;AAC9C,qDAA4F;AAE5F,MAAa,yBAAyB;IAWlC,OAAO,CAAW;CACrB;AAZD,8DAYC;AADG;IAVC,IAAA,qBAAW,EAAC;QACT,WAAW,EAAE,8HAA8H;QAC3I,IAAI,EAAE,CAAC,MAAM,CAAC;QACd,OAAO,EAAE,CAAC,gBAAgB,EAAE,mBAAmB,CAAC;KACnD,CAAC;IACD,IAAA,yBAAO,GAAE;IACT,IAAA,+BAAa,GAAE;IACf,IAAA,8BAAY,EAAC,IAAI,CAAC;IAClB,IAAA,0BAAQ,EAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACxB,IAAA,2BAAS,EAAC,GAAG,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;;0DACb"}
@@ -6,6 +6,7 @@ export declare class NestAuthAdminUser extends BaseEntity {
6
6
  passwordHash: string;
7
7
  metadata?: Record<string, any>;
8
8
  lastLoginAt?: Date;
9
+ tokenVersion: number;
9
10
  createdAt: Date;
10
11
  updatedAt: Date;
11
12
  normalizeEmail(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"admin-user.entity.d.ts","sourceRoot":"","sources":["../../../../src/lib/admin-console/entities/admin-user.entity.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EASX,MAAM,SAAS,CAAC;AAIjB,qBACa,iBAAkB,SAAQ,UAAU;IAE/C,EAAE,EAAE,MAAM,CAAC;IAIX,KAAK,EAAE,MAAM,CAAC;IAGd,IAAI,CAAC,EAAE,MAAM,CAAC;IAGd,YAAY,EAAE,MAAM,CAAC;IAGrB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAG/B,WAAW,CAAC,EAAE,IAAI,CAAC;IAGnB,SAAS,EAAE,IAAI,CAAC;IAGhB,SAAS,EAAE,IAAI,CAAC;IAIhB,cAAc;IAOd,sBAAsB;IAMhB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAS5C,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAU3D"}
1
+ {"version":3,"file":"admin-user.entity.d.ts","sourceRoot":"","sources":["../../../../src/lib/admin-console/entities/admin-user.entity.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EASX,MAAM,SAAS,CAAC;AASjB,qBACa,iBAAkB,SAAQ,UAAU;IAE/C,EAAE,EAAE,MAAM,CAAC;IAIX,KAAK,EAAE,MAAM,CAAC;IAGd,IAAI,CAAC,EAAE,MAAM,CAAC;IAGd,YAAY,EAAE,MAAM,CAAC;IAGrB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAG/B,WAAW,CAAC,EAAE,IAAI,CAAC;IASnB,YAAY,EAAE,MAAM,CAAC;IAGrB,SAAS,EAAE,IAAI,CAAC;IAGhB,SAAS,EAAE,IAAI,CAAC;IAIhB,cAAc;IAOd,sBAAsB;IAMhB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAqB5C,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAU3D"}
@@ -11,8 +11,11 @@ var __metadata = (this && this.__metadata) || function (k, v) {
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.NestAuthAdminUser = void 0;
13
13
  const typeorm_1 = require("typeorm");
14
+ const common_1 = require("@nestjs/common");
14
15
  const argon2_1 = require("@node-rs/argon2");
16
+ const password_policy_util_1 = require("../../utils/password-policy.util");
15
17
  const utils_1 = require("../../utils");
18
+ const ADMIN_PASSWORD_MIN_LENGTH = 8;
16
19
  let NestAuthAdminUser = class NestAuthAdminUser extends typeorm_1.BaseEntity {
17
20
  id;
18
21
  email;
@@ -20,6 +23,7 @@ let NestAuthAdminUser = class NestAuthAdminUser extends typeorm_1.BaseEntity {
20
23
  passwordHash;
21
24
  metadata;
22
25
  lastLoginAt;
26
+ tokenVersion;
23
27
  createdAt;
24
28
  updatedAt;
25
29
  normalizeEmail() {
@@ -33,6 +37,13 @@ let NestAuthAdminUser = class NestAuthAdminUser extends typeorm_1.BaseEntity {
33
37
  }
34
38
  }
35
39
  async setPassword(password) {
40
+ if (typeof password !== 'string' || password.trim().length < ADMIN_PASSWORD_MIN_LENGTH) {
41
+ throw new common_1.BadRequestException({
42
+ message: `Admin password must be at least ${ADMIN_PASSWORD_MIN_LENGTH} characters`,
43
+ code: 'ADMIN_PASSWORD_TOO_SHORT',
44
+ });
45
+ }
46
+ await (0, password_policy_util_1.assertPasswordPolicy)(password, { email: this.email });
36
47
  this.passwordHash = await (0, argon2_1.hash)(password, {
37
48
  algorithm: 2,
38
49
  memoryCost: 65536,
@@ -78,6 +89,10 @@ __decorate([
78
89
  (0, typeorm_1.Column)({ nullable: true }),
79
90
  __metadata("design:type", Date)
80
91
  ], NestAuthAdminUser.prototype, "lastLoginAt", void 0);
92
+ __decorate([
93
+ (0, typeorm_1.Column)({ default: 0 }),
94
+ __metadata("design:type", Number)
95
+ ], NestAuthAdminUser.prototype, "tokenVersion", void 0);
81
96
  __decorate([
82
97
  (0, typeorm_1.CreateDateColumn)(),
83
98
  __metadata("design:type", Date)
@@ -1 +1 @@
1
- {"version":3,"file":"admin-user.entity.js","sourceRoot":"","sources":["../../../../src/lib/admin-console/entities/admin-user.entity.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qCAUiB;AACjB,4CAA0D;AAC1D,uCAA8C;AAGvC,IAAM,iBAAiB,GAAvB,MAAM,iBAAkB,SAAQ,oBAAU;IAE/C,EAAE,CAAS;IAIX,KAAK,CAAS;IAGd,IAAI,CAAU;IAGd,YAAY,CAAS;IAGrB,QAAQ,CAAuB;IAG/B,WAAW,CAAQ;IAGnB,SAAS,CAAO;IAGhB,SAAS,CAAO;IAIhB,cAAc;QACZ,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,KAAK,GAAG,IAAA,uBAAe,EAAC,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC;QACzD,CAAC;IACH,CAAC;IAGD,sBAAsB;QACpB,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,KAAK,GAAG,IAAA,uBAAe,EAAC,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC;QACzD,CAAC;IACH,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,QAAgB;QAChC,IAAI,CAAC,YAAY,GAAG,MAAM,IAAA,aAAI,EAAC,QAAQ,EAAE;YACvC,SAAS,GAAoB;YAC7B,UAAU,EAAE,KAAK;YACjB,QAAQ,EAAE,CAAC;YACX,WAAW,EAAE,CAAC;SACf,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,QAAgB;QACrC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACvB,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,CAAC;YACH,OAAO,MAAM,IAAA,eAAM,EAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;QACnD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;CACF,CAAA;AA5DY,8CAAiB;AAE5B;IADC,IAAA,gCAAsB,EAAC,MAAM,CAAC;;6CACpB;AAIX;IAFC,IAAA,gBAAM,EAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IACxB,IAAA,eAAK,GAAE;;gDACM;AAGd;IADC,IAAA,gBAAM,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;+CACb;AAGd;IADC,IAAA,gBAAM,GAAE;;uDACY;AAGrB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;;mDAChC;AAG/B;IADC,IAAA,gBAAM,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;8BACb,IAAI;sDAAC;AAGnB;IADC,IAAA,0BAAgB,GAAE;8BACR,IAAI;oDAAC;AAGhB;IADC,IAAA,0BAAgB,GAAE;8BACR,IAAI;oDAAC;AAIhB;IADC,IAAA,sBAAY,GAAE;;;;uDAKd;AAGD;IADC,IAAA,sBAAY,GAAE;;;;+DAKd;4BAvCU,iBAAiB;IAD7B,IAAA,gBAAM,EAAC,uBAAuB,CAAC;GACnB,iBAAiB,CA4D7B"}
1
+ {"version":3,"file":"admin-user.entity.js","sourceRoot":"","sources":["../../../../src/lib/admin-console/entities/admin-user.entity.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import { CanActivate, ExecutionContext } from '@nestjs/common';
2
+ import { Reflector } from '@nestjs/core';
3
+ import { RateLimitService } from '../../core/services/rate-limit.service';
4
+ import { AdminConsoleConfigService } from '../services/admin-console-config.service';
5
+ export declare class AdminBruteForceGuard implements CanActivate {
6
+ private readonly reflector;
7
+ private readonly rateLimit;
8
+ private readonly config;
9
+ constructor(reflector: Reflector, rateLimit: RateLimitService, config: AdminConsoleConfigService);
10
+ canActivate(context: ExecutionContext): Promise<boolean>;
11
+ }
12
+ //# sourceMappingURL=admin-brute-force.guard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin-brute-force.guard.d.ts","sourceRoot":"","sources":["../../../../src/lib/admin-console/guards/admin-brute-force.guard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAc,MAAM,gBAAgB,CAAC;AAC3E,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC;AAE1E,OAAO,EAAE,yBAAyB,EAAE,MAAM,0CAA0C,CAAC;AAUrF,qBACa,oBAAqB,YAAW,WAAW;IAEpD,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAFN,SAAS,EAAE,SAAS,EACpB,SAAS,EAAE,gBAAgB,EAC3B,MAAM,EAAE,yBAAyB;IAG9C,WAAW,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC;CAY/D"}
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.AdminBruteForceGuard = void 0;
13
+ const common_1 = require("@nestjs/common");
14
+ const core_1 = require("@nestjs/core");
15
+ const rate_limit_service_1 = require("../../core/services/rate-limit.service");
16
+ const admin_console_config_service_1 = require("../services/admin-console-config.service");
17
+ const admin_throttle_decorator_1 = require("../decorators/admin-throttle.decorator");
18
+ let AdminBruteForceGuard = class AdminBruteForceGuard {
19
+ reflector;
20
+ rateLimit;
21
+ config;
22
+ constructor(reflector, rateLimit, config) {
23
+ this.reflector = reflector;
24
+ this.rateLimit = rateLimit;
25
+ this.config = config;
26
+ }
27
+ async canActivate(context) {
28
+ const bucket = this.reflector.getAllAndOverride(admin_throttle_decorator_1.ADMIN_THROTTLE_BUCKET, [context.getHandler(), context.getClass()]);
29
+ if (!bucket)
30
+ return true;
31
+ if (!this.config.bruteForceProtectionEnabled())
32
+ return true;
33
+ const http = context.switchToHttp();
34
+ await this.rateLimit.enforceAlways(bucket, http.getRequest(), http.getResponse());
35
+ return true;
36
+ }
37
+ };
38
+ exports.AdminBruteForceGuard = AdminBruteForceGuard;
39
+ exports.AdminBruteForceGuard = AdminBruteForceGuard = __decorate([
40
+ (0, common_1.Injectable)(),
41
+ __metadata("design:paramtypes", [core_1.Reflector,
42
+ rate_limit_service_1.RateLimitService,
43
+ admin_console_config_service_1.AdminConsoleConfigService])
44
+ ], AdminBruteForceGuard);
45
+ //# sourceMappingURL=admin-brute-force.guard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin-brute-force.guard.js","sourceRoot":"","sources":["../../../../src/lib/admin-console/guards/admin-brute-force.guard.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA2E;AAC3E,uCAAyC;AACzC,+EAA0E;AAE1E,2FAAqF;AACrF,qFAA+E;AAUxE,IAAM,oBAAoB,GAA1B,MAAM,oBAAoB;IAEZ;IACA;IACA;IAHnB,YACmB,SAAoB,EACpB,SAA2B,EAC3B,MAAiC;QAFjC,cAAS,GAAT,SAAS,CAAW;QACpB,cAAS,GAAT,SAAS,CAAkB;QAC3B,WAAM,GAAN,MAAM,CAA2B;IACjD,CAAC;IAEJ,KAAK,CAAC,WAAW,CAAC,OAAyB;QACzC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAC7C,gDAAqB,EACrB,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAC3C,CAAC;QACF,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC;QACzB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,2BAA2B,EAAE;YAAE,OAAO,IAAI,CAAC;QAE5D,MAAM,IAAI,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;QACpC,MAAM,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QAClF,OAAO,IAAI,CAAC;IACd,CAAC;CACF,CAAA;AAnBY,oDAAoB;+BAApB,oBAAoB;IADhC,IAAA,mBAAU,GAAE;qCAGmB,gBAAS;QACT,qCAAgB;QACnB,wDAAyB;GAJzC,oBAAoB,CAmBhC"}
@@ -3,6 +3,7 @@ import { Request } from 'express';
3
3
  import { AdminSessionService } from '../services/admin-session.service';
4
4
  import { AdminUserService } from '../services/admin-user.service';
5
5
  import { AdminConsoleConfigService } from '../services/admin-console-config.service';
6
+ import { CsrfService } from '../../core/services/csrf.service';
6
7
  import { NestAuthAdminUser } from '../entities/admin-user.entity';
7
8
  export interface AdminRequest extends Request {
8
9
  adminUser?: NestAuthAdminUser;
@@ -11,7 +12,8 @@ export declare class AdminSessionGuard implements CanActivate {
11
12
  private readonly sessions;
12
13
  private readonly adminUsers;
13
14
  private readonly config;
14
- constructor(sessions: AdminSessionService, adminUsers: AdminUserService, config: AdminConsoleConfigService);
15
+ private readonly csrf;
16
+ constructor(sessions: AdminSessionService, adminUsers: AdminUserService, config: AdminConsoleConfigService, csrf: CsrfService);
15
17
  canActivate(context: ExecutionContext): Promise<boolean>;
16
18
  }
17
19
  //# sourceMappingURL=admin-session.guard.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"admin-session.guard.d.ts","sourceRoot":"","sources":["../../../../src/lib/admin-console/guards/admin-session.guard.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,gBAAgB,EAGjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,yBAAyB,EAAE,MAAM,0CAA0C,CAAC;AACrF,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAElE,MAAM,WAAW,YAAa,SAAQ,OAAO;IAC3C,SAAS,CAAC,EAAE,iBAAiB,CAAC;CAC/B;AAED,qBACa,iBAAkB,YAAW,WAAW;IAEjD,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAFN,QAAQ,EAAE,mBAAmB,EAC7B,UAAU,EAAE,gBAAgB,EAC5B,MAAM,EAAE,yBAAyB;IAG9C,WAAW,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC;CAsB/D"}
1
+ {"version":3,"file":"admin-session.guard.d.ts","sourceRoot":"","sources":["../../../../src/lib/admin-console/guards/admin-session.guard.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,gBAAgB,EAGjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,yBAAyB,EAAE,MAAM,0CAA0C,CAAC;AACrF,OAAO,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAElE,MAAM,WAAW,YAAa,SAAQ,OAAO;IAC3C,SAAS,CAAC,EAAE,iBAAiB,CAAC;CAC/B;AAED,qBACa,iBAAkB,YAAW,WAAW;IAEjD,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAHJ,QAAQ,EAAE,mBAAmB,EAC7B,UAAU,EAAE,gBAAgB,EAC5B,MAAM,EAAE,yBAAyB,EACjC,IAAI,EAAE,WAAW;IAG9B,WAAW,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC;CAgC/D"}
@@ -14,14 +14,17 @@ const common_1 = require("@nestjs/common");
14
14
  const admin_session_service_1 = require("../services/admin-session.service");
15
15
  const admin_user_service_1 = require("../services/admin-user.service");
16
16
  const admin_console_config_service_1 = require("../services/admin-console-config.service");
17
+ const csrf_service_1 = require("../../core/services/csrf.service");
17
18
  let AdminSessionGuard = class AdminSessionGuard {
18
19
  sessions;
19
20
  adminUsers;
20
21
  config;
21
- constructor(sessions, adminUsers, config) {
22
+ csrf;
23
+ constructor(sessions, adminUsers, config, csrf) {
22
24
  this.sessions = sessions;
23
25
  this.adminUsers = adminUsers;
24
26
  this.config = config;
27
+ this.csrf = csrf;
25
28
  }
26
29
  async canActivate(context) {
27
30
  const req = context.switchToHttp().getRequest();
@@ -30,6 +33,7 @@ let AdminSessionGuard = class AdminSessionGuard {
30
33
  if (!token) {
31
34
  throw new common_1.UnauthorizedException('Admin authentication required');
32
35
  }
36
+ this.csrf.assertValidForCookieAuth(req);
33
37
  const payload = this.sessions.verifySession(token);
34
38
  if (!payload) {
35
39
  throw new common_1.UnauthorizedException('Invalid admin session');
@@ -38,6 +42,9 @@ let AdminSessionGuard = class AdminSessionGuard {
38
42
  if (!admin) {
39
43
  throw new common_1.UnauthorizedException('Admin account not found');
40
44
  }
45
+ if ((payload.tv ?? 0) !== (admin.tokenVersion ?? 0)) {
46
+ throw new common_1.UnauthorizedException('Admin session has been revoked');
47
+ }
41
48
  req.adminUser = admin;
42
49
  return true;
43
50
  }
@@ -47,6 +54,7 @@ exports.AdminSessionGuard = AdminSessionGuard = __decorate([
47
54
  (0, common_1.Injectable)(),
48
55
  __metadata("design:paramtypes", [admin_session_service_1.AdminSessionService,
49
56
  admin_user_service_1.AdminUserService,
50
- admin_console_config_service_1.AdminConsoleConfigService])
57
+ admin_console_config_service_1.AdminConsoleConfigService,
58
+ csrf_service_1.CsrfService])
51
59
  ], AdminSessionGuard);
52
60
  //# sourceMappingURL=admin-session.guard.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"admin-session.guard.js","sourceRoot":"","sources":["../../../../src/lib/admin-console/guards/admin-session.guard.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAKwB;AAExB,6EAAwE;AACxE,uEAAkE;AAClE,2FAAqF;AAQ9E,IAAM,iBAAiB,GAAvB,MAAM,iBAAiB;IAET;IACA;IACA;IAHnB,YACmB,QAA6B,EAC7B,UAA4B,EAC5B,MAAiC;QAFjC,aAAQ,GAAR,QAAQ,CAAqB;QAC7B,eAAU,GAAV,UAAU,CAAkB;QAC5B,WAAM,GAAN,MAAM,CAA2B;IAChD,CAAC;IAEL,KAAK,CAAC,WAAW,CAAC,OAAyB;QACzC,MAAM,GAAG,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,UAAU,EAAgB,CAAC;QAC9D,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;QAE5B,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QAC9C,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,8BAAqB,CAAC,+BAA+B,CAAC,CAAC;QACnE,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACnD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,8BAAqB,CAAC,uBAAuB,CAAC,CAAC;QAC3D,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC1D,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,8BAAqB,CAAC,yBAAyB,CAAC,CAAC;QAC7D,CAAC;QAED,GAAG,CAAC,SAAS,GAAG,KAAK,CAAC;QACtB,OAAO,IAAI,CAAC;IACd,CAAC;CACF,CAAA;AA7BY,8CAAiB;4BAAjB,iBAAiB;IAD7B,IAAA,mBAAU,GAAE;qCAGkB,2CAAmB;QACjB,qCAAgB;QACpB,wDAAyB;GAJzC,iBAAiB,CA6B7B"}
1
+ {"version":3,"file":"admin-session.guard.js","sourceRoot":"","sources":["../../../../src/lib/admin-console/guards/admin-session.guard.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAKwB;AAExB,6EAAwE;AACxE,uEAAkE;AAClE,2FAAqF;AACrF,mEAA+D;AAQxD,IAAM,iBAAiB,GAAvB,MAAM,iBAAiB;IAET;IACA;IACA;IACA;IAJnB,YACmB,QAA6B,EAC7B,UAA4B,EAC5B,MAAiC,EACjC,IAAiB;QAHjB,aAAQ,GAAR,QAAQ,CAAqB;QAC7B,eAAU,GAAV,UAAU,CAAkB;QAC5B,WAAM,GAAN,MAAM,CAA2B;QACjC,SAAI,GAAJ,IAAI,CAAa;IAChC,CAAC;IAEL,KAAK,CAAC,WAAW,CAAC,OAAyB;QACzC,MAAM,GAAG,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,UAAU,EAAgB,CAAC;QAC9D,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;QAE5B,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QAC9C,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,8BAAqB,CAAC,+BAA+B,CAAC,CAAC;QACnE,CAAC;QAID,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,CAAC;QAExC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACnD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,8BAAqB,CAAC,uBAAuB,CAAC,CAAC;QAC3D,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC1D,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,8BAAqB,CAAC,yBAAyB,CAAC,CAAC;QAC7D,CAAC;QAID,IAAI,CAAE,OAAe,CAAC,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,IAAI,CAAC,CAAC,EAAE,CAAC;YAC7D,MAAM,IAAI,8BAAqB,CAAC,gCAAgC,CAAC,CAAC;QACpE,CAAC;QAED,GAAG,CAAC,SAAS,GAAG,KAAK,CAAC;QACtB,OAAO,IAAI,CAAC;IACd,CAAC;CACF,CAAA;AAxCY,8CAAiB;4BAAjB,iBAAiB;IAD7B,IAAA,mBAAU,GAAE;qCAGkB,2CAAmB;QACjB,qCAAgB;QACpB,wDAAyB;QAC3B,0BAAW;GALzB,iBAAiB,CAwC7B"}
@@ -0,0 +1,6 @@
1
+ import { NestMiddleware } from '@nestjs/common';
2
+ import { NextFunction, Request, Response } from 'express';
3
+ export declare class AdminSecurityHeadersMiddleware implements NestMiddleware {
4
+ use(_req: Request, res: Response, next: NextFunction): void;
5
+ }
6
+ //# sourceMappingURL=admin-security-headers.middleware.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin-security-headers.middleware.d.ts","sourceRoot":"","sources":["../../../../src/lib/admin-console/middleware/admin-security-headers.middleware.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAkB1D,qBACa,8BAA+B,YAAW,cAAc;IACnE,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,GAAG,IAAI;CA0B5D"}
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.AdminSecurityHeadersMiddleware = void 0;
10
+ const common_1 = require("@nestjs/common");
11
+ let AdminSecurityHeadersMiddleware = class AdminSecurityHeadersMiddleware {
12
+ use(_req, res, next) {
13
+ res.setHeader('X-Frame-Options', 'DENY');
14
+ res.setHeader('X-Content-Type-Options', 'nosniff');
15
+ res.setHeader('Referrer-Policy', 'no-referrer');
16
+ res.setHeader('Content-Security-Policy', [
17
+ "default-src 'self'",
18
+ "frame-ancestors 'none'",
19
+ "base-uri 'self'",
20
+ "object-src 'none'",
21
+ "form-action 'self'",
22
+ "script-src 'self' 'unsafe-inline'",
23
+ "style-src 'self' 'unsafe-inline'",
24
+ "img-src 'self' data:",
25
+ "font-src 'self' data:",
26
+ "connect-src 'self'",
27
+ ].join('; '));
28
+ next();
29
+ }
30
+ };
31
+ exports.AdminSecurityHeadersMiddleware = AdminSecurityHeadersMiddleware;
32
+ exports.AdminSecurityHeadersMiddleware = AdminSecurityHeadersMiddleware = __decorate([
33
+ (0, common_1.Injectable)()
34
+ ], AdminSecurityHeadersMiddleware);
35
+ //# sourceMappingURL=admin-security-headers.middleware.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin-security-headers.middleware.js","sourceRoot":"","sources":["../../../../src/lib/admin-console/middleware/admin-security-headers.middleware.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAA4D;AAoBrD,IAAM,8BAA8B,GAApC,MAAM,8BAA8B;IACzC,GAAG,CAAC,IAAa,EAAE,GAAa,EAAE,IAAkB;QAElD,GAAG,CAAC,SAAS,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;QAEzC,GAAG,CAAC,SAAS,CAAC,wBAAwB,EAAE,SAAS,CAAC,CAAC;QAEnD,GAAG,CAAC,SAAS,CAAC,iBAAiB,EAAE,aAAa,CAAC,CAAC;QAChD,GAAG,CAAC,SAAS,CACX,yBAAyB,EACzB;YACE,oBAAoB;YACpB,wBAAwB;YACxB,iBAAiB;YACjB,mBAAmB;YACnB,oBAAoB;YAGpB,mCAAmC;YACnC,kCAAkC;YAClC,sBAAsB;YACtB,uBAAuB;YACvB,oBAAoB;SACrB,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;QACF,IAAI,EAAE,CAAC;IACT,CAAC;CACF,CAAA;AA3BY,wEAA8B;yCAA9B,8BAA8B;IAD1C,IAAA,mBAAU,GAAE;GACA,8BAA8B,CA2B1C"}
@@ -10,6 +10,8 @@ export declare class AdminAuthService {
10
10
  private readonly debugLogger;
11
11
  constructor(adminUsers: AdminUserService, sessions: AdminSessionService, config: AdminConsoleConfigService, debugLogger: DebugLoggerService);
12
12
  validateCredentials(email: string, password: string): Promise<NestAuthAdminUser>;
13
+ private dummyHashPromise?;
14
+ private dummyHash;
13
15
  createInitialAdmin(payload: {
14
16
  setupKey: string;
15
17
  email: string;
@@ -1 +1 @@
1
- {"version":3,"file":"admin-auth.service.d.ts","sourceRoot":"","sources":["../../../../src/lib/admin-console/services/admin-auth.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,0CAA0C,CAAC;AAG9E,qBACa,gBAAgB;IAEzB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,WAAW;gBAHX,UAAU,EAAE,gBAAgB,EAC5B,QAAQ,EAAE,mBAAmB,EAC7B,MAAM,EAAE,yBAAyB,EACjC,WAAW,EAAE,kBAAkB;IAG5C,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAchF,kBAAkB,CAAC,OAAO,EAAE;QAChC,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;KAChC,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAyC9B,aAAa,CAAC,KAAK,EAAE,iBAAiB,GAAG,MAAM;CAGhD"}
1
+ {"version":3,"file":"admin-auth.service.d.ts","sourceRoot":"","sources":["../../../../src/lib/admin-console/services/admin-auth.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,0CAA0C,CAAC;AAG9E,qBACa,gBAAgB;IAEzB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,WAAW;gBAHX,UAAU,EAAE,gBAAgB,EAC5B,QAAQ,EAAE,mBAAmB,EAC7B,MAAM,EAAE,yBAAyB,EACjC,WAAW,EAAE,kBAAkB;IAG5C,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAqBtF,OAAO,CAAC,gBAAgB,CAAC,CAAkB;IAC3C,OAAO,CAAC,SAAS;IAYX,kBAAkB,CAAC,OAAO,EAAE;QAChC,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;KAChC,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAyC9B,aAAa,CAAC,KAAK,EAAE,iBAAiB,GAAG,MAAM;CAGhD"}
@@ -11,6 +11,7 @@ var __metadata = (this && this.__metadata) || function (k, v) {
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.AdminAuthService = void 0;
13
13
  const common_1 = require("@nestjs/common");
14
+ const argon2_1 = require("@node-rs/argon2");
14
15
  const admin_user_service_1 = require("./admin-user.service");
15
16
  const admin_session_service_1 = require("./admin-session.service");
16
17
  const admin_console_config_service_1 = require("./admin-console-config.service");
@@ -30,6 +31,7 @@ let AdminAuthService = class AdminAuthService {
30
31
  async validateCredentials(email, password) {
31
32
  const admin = await this.adminUsers.findByEmail(email);
32
33
  if (!admin) {
34
+ await (0, argon2_1.verify)(await this.dummyHash(), password).catch(() => false);
33
35
  throw new common_1.UnauthorizedException('Invalid credentials');
34
36
  }
35
37
  const valid = await admin.validatePassword(password);
@@ -40,6 +42,18 @@ let AdminAuthService = class AdminAuthService {
40
42
  await admin.save();
41
43
  return admin;
42
44
  }
45
+ dummyHashPromise;
46
+ dummyHash() {
47
+ if (!this.dummyHashPromise) {
48
+ this.dummyHashPromise = (0, argon2_1.hash)('nest-auth-admin-timing-equalizer', {
49
+ algorithm: 2,
50
+ memoryCost: 65536,
51
+ timeCost: 3,
52
+ parallelism: 4,
53
+ });
54
+ }
55
+ return this.dummyHashPromise;
56
+ }
43
57
  async createInitialAdmin(payload) {
44
58
  this.config.ensureEnabled();
45
59
  const configuredKey = this.config.getSecretKey();
@@ -1 +1 @@
1
- {"version":3,"file":"admin-auth.service.js","sourceRoot":"","sources":["../../../../src/lib/admin-console/services/admin-auth.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"admin-auth.service.js","sourceRoot":"","sources":["../../../../src/lib/admin-console/services/admin-auth.service.ts"],"names":[],"mappings":"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"}
@@ -13,6 +13,8 @@ export declare class AdminConsoleConfigService {
13
13
  getSessionDuration(): string | number;
14
14
  getCookieOptions(): CookieOptions;
15
15
  allowAdminManagement(): boolean;
16
+ bruteForceProtectionEnabled(): boolean;
17
+ allowPublicSignupAfterFirstAdmin(): boolean;
16
18
  getSecretKey(): string | undefined;
17
19
  getTenantMode(): TenantModeEnum | null;
18
20
  }
@@ -1 +1 @@
1
- {"version":3,"file":"admin-console-config.service.d.ts","sourceRoot":"","sources":["../../../../src/lib/admin-console/services/admin-console-config.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,yCAAyC,CAAC;AAC5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,qDAAqD,CAAC;AAC3F,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAE9D,qBACa,yBAAyB;IACxB,OAAO,CAAC,QAAQ,CAAC,iBAAiB;gBAAjB,iBAAiB,EAAE,iBAAiB;IAEjE,SAAS,IAAI,oBAAoB;IAmBjC,aAAa,IAAI,IAAI;IAMrB,aAAa,IAAI,MAAM;IAIvB,WAAW,IAAI,MAAM;IAIrB,gBAAgB,IAAI,MAAM;IAK1B,kBAAkB,IAAI,MAAM,GAAG,MAAM;IAIrC,gBAAgB,IAAI,aAAa;IAmBjC,oBAAoB,IAAI,OAAO;IAI/B,YAAY,IAAI,MAAM,GAAG,SAAS;IAKlC,aAAa,IAAI,cAAc,GAAG,IAAI;CAKvC"}
1
+ {"version":3,"file":"admin-console-config.service.d.ts","sourceRoot":"","sources":["../../../../src/lib/admin-console/services/admin-console-config.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,yCAAyC,CAAC;AAC5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,qDAAqD,CAAC;AAC3F,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAE9D,qBACa,yBAAyB;IACxB,OAAO,CAAC,QAAQ,CAAC,iBAAiB;gBAAjB,iBAAiB,EAAE,iBAAiB;IAEjE,SAAS,IAAI,oBAAoB;IAmBjC,aAAa,IAAI,IAAI;IAMrB,aAAa,IAAI,MAAM;IAIvB,WAAW,IAAI,MAAM;IAIrB,gBAAgB,IAAI,MAAM;IAyB1B,kBAAkB,IAAI,MAAM,GAAG,MAAM;IAIrC,gBAAgB,IAAI,aAAa;IAkCjC,oBAAoB,IAAI,OAAO;IAK/B,2BAA2B,IAAI,OAAO;IAQtC,gCAAgC,IAAI,OAAO;IAI3C,YAAY,IAAI,MAAM,GAAG,SAAS;IAKlC,aAAa,IAAI,cAAc,GAAG,IAAI;CAKvC"}
@@ -11,6 +11,7 @@ var __metadata = (this && this.__metadata) || function (k, v) {
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.AdminConsoleConfigService = void 0;
13
13
  const common_1 = require("@nestjs/common");
14
+ const crypto_1 = require("crypto");
14
15
  const auth_config_service_1 = require("../../core/services/auth-config.service");
15
16
  const nest_auth_contracts_1 = require("@ackplus/nest-auth-contracts");
16
17
  let AdminConsoleConfigService = class AdminConsoleConfigService {
@@ -46,13 +47,24 @@ let AdminConsoleConfigService = class AdminConsoleConfigService {
46
47
  return this.getConfig().basePath;
47
48
  }
48
49
  getSessionSecret() {
49
- return this.authConfigService.getConfig().adminConsole?.secretKey ?? 'change-me-admin-secret';
50
+ const admin = this.authConfigService.getConfig().adminConsole;
51
+ if (admin?.sessionSecret) {
52
+ return admin.sessionSecret;
53
+ }
54
+ if (admin?.secretKey) {
55
+ return (0, crypto_1.createHash)('sha256')
56
+ .update(`nest-auth-admin-session:${admin.secretKey}`)
57
+ .digest('hex');
58
+ }
59
+ throw new Error('Admin console session secret is not configured. Set adminConsole.sessionSecret ' +
60
+ '(recommended) or adminConsole.secretKey to a high-entropy 32+ character random value.');
50
61
  }
51
62
  getSessionDuration() {
52
63
  return this.getConfig().sessionDuration ?? '2h';
53
64
  }
54
65
  getCookieOptions() {
55
- const secureDefault = process.env.NODE_ENV === 'production';
66
+ const nodeEnv = process.env.NODE_ENV;
67
+ const secureDefault = nodeEnv !== 'development' && nodeEnv !== 'test';
56
68
  const config = this.getConfig();
57
69
  const base = {
58
70
  httpOnly: true,
@@ -60,15 +72,25 @@ let AdminConsoleConfigService = class AdminConsoleConfigService {
60
72
  secure: secureDefault,
61
73
  path: this.getBasePath(),
62
74
  };
63
- return {
75
+ const merged = {
64
76
  ...base,
65
77
  ...(config.cookie ?? {}),
66
78
  path: config.cookie?.path ?? base.path,
67
79
  };
80
+ if (merged.sameSite === 'none') {
81
+ merged.secure = true;
82
+ }
83
+ return merged;
68
84
  }
69
85
  allowAdminManagement() {
70
86
  return this.getConfig().allowAdminManagement !== false;
71
87
  }
88
+ bruteForceProtectionEnabled() {
89
+ return this.getConfig().bruteForce?.enabled !== false;
90
+ }
91
+ allowPublicSignupAfterFirstAdmin() {
92
+ return this.getConfig().allowPublicSignupAfterFirstAdmin === true;
93
+ }
72
94
  getSecretKey() {
73
95
  return this.authConfigService.getConfig().adminConsole?.secretKey;
74
96
  }
@@ -1 +1 @@
1
- {"version":3,"file":"admin-console-config.service.js","sourceRoot":"","sources":["../../../../src/lib/admin-console/services/admin-console-config.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA+D;AAC/D,iFAA4E;AAG5E,sEAA8D;AAGvD,IAAM,yBAAyB,GAA/B,MAAM,yBAAyB;IACP;IAA7B,YAA6B,iBAAoC;QAApC,sBAAiB,GAAjB,iBAAiB,CAAmB;IAAI,CAAC;IAEtE,SAAS;QACP,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,CAAC;QACtD,MAAM,WAAW,GAAG,UAAU,CAAC,WAAW,IAAI,MAAM,CAAC;QACrD,MAAM,MAAM,GAAyB;YACnC,OAAO,EAAE,IAAI;YACb,iBAAiB,EAAE,iBAAiB;YACpC,eAAe,EAAE,IAAI;YACrB,GAAG,UAAU,CAAC,YAAY;SAC3B,CAAC;QACF,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,IAAI,OAAO,CAAC;QACzC,OAAO;YACL,GAAG,MAAM;YACT,IAAI,EAAE,SAAS;YAGf,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,IAAI,WAAW,IAAI,SAAS,EAAE;SAC5D,CAAC;IACJ,CAAC;IAED,aAAa;QACX,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;YACvC,MAAM,IAAI,0BAAiB,CAAC,2BAA2B,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;IAED,aAAa;QACX,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC,iBAAiB,IAAI,iBAAiB,CAAC;IACjE,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC,QAAS,CAAC;IACpC,CAAC;IAED,gBAAgB;QAEd,OAAO,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,CAAC,YAAY,EAAE,SAAS,IAAI,wBAAwB,CAAC;IAChG,CAAC;IAED,kBAAkB;QAChB,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC,eAAe,IAAI,IAAI,CAAC;IAClD,CAAC;IAED,gBAAgB;QAEd,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,CAAC;QAC5D,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAEhC,MAAM,IAAI,GAAkB;YAC1B,QAAQ,EAAE,IAAI;YACd,QAAQ,EAAE,KAAK;YACf,MAAM,EAAE,aAAa;YACrB,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE;SACzB,CAAC;QAEF,OAAO;YACL,GAAG,IAAI;YACP,GAAG,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC;YACxB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,IAAI,IAAI,CAAC,IAAI;SACvC,CAAC;IACJ,CAAC;IAED,oBAAoB;QAClB,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC,oBAAoB,KAAK,KAAK,CAAC;IACzD,CAAC;IAED,YAAY;QACV,OAAO,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,CAAC,YAAY,EAAE,SAAS,CAAC;IACpE,CAAC;IAGD,aAAa;QACX,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,CAAC;QAClD,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO;YAAE,OAAO,IAAI,CAAC;QACzC,OAAO,MAAM,CAAC,MAAM,EAAE,IAAI,IAAI,oCAAc,CAAC,QAAQ,CAAC;IACxD,CAAC;CACF,CAAA;AA9EY,8DAAyB;oCAAzB,yBAAyB;IADrC,IAAA,mBAAU,GAAE;qCAEqC,uCAAiB;GADtD,yBAAyB,CA8ErC"}
1
+ {"version":3,"file":"admin-console-config.service.js","sourceRoot":"","sources":["../../../../src/lib/admin-console/services/admin-console-config.service.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@ import { NestAuthAdminUser } from '../entities/admin-user.entity';
4
4
  interface AdminSessionPayload {
5
5
  sub: string;
6
6
  email: string;
7
+ tv?: number;
7
8
  iat: number;
8
9
  exp: number;
9
10
  }
@@ -1 +1 @@
1
- {"version":3,"file":"admin-session.service.d.ts","sourceRoot":"","sources":["../../../../src/lib/admin-console/services/admin-session.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAGlC,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAElE,UAAU,mBAAmB;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;CACb;AAED,qBACa,mBAAmB;IAClB,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,yBAAyB;IAE9D,aAAa,CAAC,KAAK,EAAE,iBAAiB,GAAG,MAAM;IAgB/C,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,mBAAmB,GAAG,IAAI;IAaxD,aAAa,IAAI,MAAM;IAIvB,SAAS,IAAI,MAAM,GAAG,SAAS;IAW/B,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS;IAqB5C,yBAAyB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAO/D,OAAO,CAAC,iBAAiB;CAe1B"}
1
+ {"version":3,"file":"admin-session.service.d.ts","sourceRoot":"","sources":["../../../../src/lib/admin-console/services/admin-session.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAGlC,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAElE,UAAU,mBAAmB;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IAEd,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;CACb;AAED,qBACa,mBAAmB;IAClB,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,yBAAyB;IAE9D,aAAa,CAAC,KAAK,EAAE,iBAAiB,GAAG,MAAM;IAkB/C,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,mBAAmB,GAAG,IAAI;IAexD,aAAa,IAAI,MAAM;IAIvB,SAAS,IAAI,MAAM,GAAG,SAAS;IAW/B,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS;IAqB5C,yBAAyB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAO/D,OAAO,CAAC,iBAAiB;CAe1B"}
@@ -62,8 +62,10 @@ let AdminSessionService = class AdminSessionService {
62
62
  return jwt.sign({
63
63
  sub: admin.id,
64
64
  email: admin.email,
65
+ tv: admin.tokenVersion ?? 0,
65
66
  }, secret, {
66
67
  expiresIn,
68
+ algorithm: 'HS256',
67
69
  });
68
70
  }
69
71
  verifySession(token) {
@@ -71,10 +73,9 @@ let AdminSessionService = class AdminSessionService {
71
73
  return null;
72
74
  }
73
75
  try {
74
- return jwt.verify(token, this.config.getSessionSecret());
76
+ return jwt.verify(token, this.config.getSessionSecret(), { algorithms: ['HS256'] });
75
77
  }
76
- catch (error) {
77
- console.warn('JWT verification failed:', error.message);
78
+ catch {
78
79
  return null;
79
80
  }
80
81
  }
@@ -1 +1 @@
1
- {"version":3,"file":"admin-session.service.js","sourceRoot":"","sources":["../../../../src/lib/admin-console/services/admin-session.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"admin-session.service.js","sourceRoot":"","sources":["../../../../src/lib/admin-console/services/admin-session.service.ts"],"names":[],"mappings":"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"}
@@ -19,6 +19,7 @@ export declare class AdminUserService {
19
19
  password?: string;
20
20
  metadata?: Record<string, any>;
21
21
  }): Promise<NestAuthAdminUser>;
22
+ revokeSessions(id: string): Promise<void>;
22
23
  deleteAdmin(id: string): Promise<void>;
23
24
  }
24
25
  //# sourceMappingURL=admin-user.service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"admin-user.service.d.ts","sourceRoot":"","sources":["../../../../src/lib/admin-console/services/admin-user.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,0CAA0C,CAAC;AAE9E,qBACa,gBAAgB;IAGzB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,WAAW;gBADX,SAAS,EAAE,UAAU,CAAC,iBAAiB,CAAC,EACxC,WAAW,EAAE,kBAAkB;IAG5C,WAAW,CAAC,IAAI,EAAE;QACtB,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;KAChC,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAsBxB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAO7D,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAOvD,UAAU,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAI1C,WAAW,CACf,EAAE,EAAE,MAAM,EACV,IAAI,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;KAAE,GACzE,OAAO,CAAC,iBAAiB,CAAC;IAuBvB,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAU7C"}
1
+ {"version":3,"file":"admin-user.service.d.ts","sourceRoot":"","sources":["../../../../src/lib/admin-console/services/admin-user.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,0CAA0C,CAAC;AAE9E,qBACa,gBAAgB;IAGzB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,WAAW;gBADX,SAAS,EAAE,UAAU,CAAC,iBAAiB,CAAC,EACxC,WAAW,EAAE,kBAAkB;IAG5C,WAAW,CAAC,IAAI,EAAE;QACtB,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;KAChC,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAsBxB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAO7D,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAOvD,UAAU,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAI1C,WAAW,CACf,EAAE,EAAE,MAAM,EACV,IAAI,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;KAAE,GACzE,OAAO,CAAC,iBAAiB,CAAC;IA4BvB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIzC,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAoB7C"}
@@ -76,10 +76,14 @@ let AdminUserService = class AdminUserService {
76
76
  }
77
77
  if (data.password) {
78
78
  await admin.setPassword(data.password);
79
+ admin.tokenVersion = (admin.tokenVersion ?? 0) + 1;
79
80
  }
80
81
  await this.adminRepo.save(admin);
81
82
  return admin;
82
83
  }
84
+ async revokeSessions(id) {
85
+ await this.adminRepo.increment({ id }, 'tokenVersion', 1);
86
+ }
83
87
  async deleteAdmin(id) {
84
88
  const admin = await this.findById(id);
85
89
  if (!admin) {
@@ -88,6 +92,13 @@ let AdminUserService = class AdminUserService {
88
92
  code: 'ADMIN_USER_NOT_FOUND',
89
93
  });
90
94
  }
95
+ const total = await this.adminRepo.count();
96
+ if (total <= 1) {
97
+ throw new common_1.ConflictException({
98
+ message: 'Cannot delete the last remaining admin.',
99
+ code: 'ADMIN_LAST_REMAINING',
100
+ });
101
+ }
91
102
  await this.adminRepo.delete(id);
92
103
  }
93
104
  };
@@ -1 +1 @@
1
- {"version":3,"file":"admin-user.service.js","sourceRoot":"","sources":["../../../../src/lib/admin-console/services/admin-user.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAkF;AAClF,6CAAmD;AACnD,qCAAqC;AACrC,qEAAkE;AAClE,mFAA8E;AAGvE,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;IAGR;IACA;IAHnB,YAEmB,SAAwC,EACxC,WAA+B;QAD/B,cAAS,GAAT,SAAS,CAA+B;QACxC,gBAAW,GAAX,WAAW,CAAoB;IAC9C,CAAC;IAEL,KAAK,CAAC,WAAW,CAAC,IAKjB;QACC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;QACvC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QACpE,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,IAAI,0BAAiB,CAAC;gBAC1B,OAAO,EAAE,yBAAyB,KAAK,kBAAkB;gBACzD,IAAI,EAAE,mBAAmB;aAC1B,CAAC,CAAC;QACL,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;YAClC,KAAK;YACL,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,EAAE;SAC9B,CAAC,CAAC;QACH,MAAM,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACvC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,qBAAqB,EAAE,kBAAkB,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QAC7E,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACjC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,oBAAoB,EAAE,kBAAkB,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QACzF,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,KAAa;QAC7B,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC;IAC3E,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,EAAU;QACvB,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IACnD,CAAC;IAED,KAAK,CAAC,UAAU;QACd,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;IAC/D,CAAC;IAED,KAAK,CAAC,WAAW,CACf,EAAU,EACV,IAA0E;QAE1E,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QACtC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,0BAAiB,CAAC;gBAC1B,OAAO,EAAE,sBAAsB,EAAE,YAAY;gBAC7C,IAAI,EAAE,sBAAsB;aAC7B,CAAC,CAAC;QACL,CAAC;QAED,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC5B,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACzB,CAAC;QACD,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YAChC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QACjC,CAAC;QACD,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,MAAM,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzC,CAAC;QAED,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACjC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,EAAU;QAC1B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QACtC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,0BAAiB,CAAC;gBAC1B,OAAO,EAAE,sBAAsB,EAAE,YAAY;gBAC7C,IAAI,EAAE,sBAAsB;aAC7B,CAAC,CAAC;QACL,CAAC;QACD,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAClC,CAAC;CACF,CAAA;AAxFY,4CAAgB;2BAAhB,gBAAgB;IAD5B,IAAA,mBAAU,GAAE;IAGR,WAAA,IAAA,0BAAgB,EAAC,qCAAiB,CAAC,CAAA;qCACR,oBAAU;QACR,yCAAkB;GAJvC,gBAAgB,CAwF5B"}
1
+ {"version":3,"file":"admin-user.service.js","sourceRoot":"","sources":["../../../../src/lib/admin-console/services/admin-user.service.ts"],"names":[],"mappings":"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"}