@ackplus/nest-auth 0.1.50 → 1.1.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 (505) hide show
  1. package/README.md +6 -513
  2. package/eslint.config.mjs +59 -0
  3. package/jest.config.ts +10 -0
  4. package/package.json +14 -44
  5. package/project.json +86 -0
  6. package/src/index.ts +30 -0
  7. package/src/lib/admin-console/admin-console.module.ts +62 -0
  8. package/src/lib/admin-console/controllers/admin-auth.controller.ts +339 -0
  9. package/src/lib/admin-console/controllers/admin-console.controller.ts +82 -0
  10. package/src/lib/admin-console/controllers/admin-permissions.controller.ts +180 -0
  11. package/src/lib/admin-console/controllers/admin-roles.controller.ts +89 -0
  12. package/src/lib/admin-console/controllers/admin-tenants.controller.ts +68 -0
  13. package/src/lib/admin-console/controllers/admin-users.controller.ts +379 -0
  14. package/src/lib/admin-console/decorators/current-admin.decorator.ts +9 -0
  15. package/src/lib/admin-console/dto/admin-permission.dto.ts +106 -0
  16. package/src/lib/admin-console/dto/admin-role.dto.ts +45 -0
  17. package/src/lib/admin-console/dto/admin-tenant.dto.ts +43 -0
  18. package/src/lib/admin-console/dto/admin-user.dto.ts +87 -0
  19. package/src/lib/admin-console/dto/create-dashboard-admin.dto.ts +34 -0
  20. package/src/lib/admin-console/dto/login.dto.ts +10 -0
  21. package/src/lib/admin-console/dto/reset-password.dto.ts +21 -0
  22. package/src/lib/admin-console/dto/setup-admin.dto.ts +23 -0
  23. package/src/lib/admin-console/dto/signup.dto.ts +51 -0
  24. package/src/lib/admin-console/entities/admin-user.entity.ts +74 -0
  25. package/src/lib/admin-console/guards/admin-session.guard.ts +47 -0
  26. package/src/lib/admin-console/services/admin-auth.service.ts +82 -0
  27. package/src/lib/admin-console/services/admin-console-config.service.ts +62 -0
  28. package/src/lib/admin-console/services/admin-session.service.ts +106 -0
  29. package/src/lib/admin-console/services/admin-user.service.ts +96 -0
  30. package/src/lib/admin-console/static/index.html +771 -0
  31. package/src/lib/auth/auth.module.ts +58 -0
  32. package/src/lib/auth/controllers/auth.controller.ts +393 -0
  33. package/src/lib/auth/controllers/mfa.controller.ts +200 -0
  34. package/src/lib/auth/dto/credentials/email-credentials.dto.ts +24 -0
  35. package/src/lib/auth/dto/credentials/phone-credentials.dto.ts +24 -0
  36. package/src/lib/auth/dto/credentials/social-credentials.dto.ts +15 -0
  37. package/src/lib/auth/dto/index.ts +1 -0
  38. package/src/lib/auth/dto/requests/change-password.request.dto.ts +34 -0
  39. package/src/lib/auth/dto/requests/forgot-password.request.dto.ts +30 -0
  40. package/src/lib/auth/dto/requests/initialize-admin.request.dto.ts +51 -0
  41. package/src/lib/auth/dto/requests/login.request.dto.ts +65 -0
  42. package/src/lib/auth/dto/requests/refresh-token.request.dto.ts +12 -0
  43. package/src/lib/auth/dto/requests/reset-password-with-token.request.dto.ts +22 -0
  44. package/src/lib/auth/dto/requests/reset-password.request.dto.ts +50 -0
  45. package/src/lib/auth/dto/requests/send-email-verification.request.dto.ts +12 -0
  46. package/src/lib/auth/dto/requests/send-mfa-code.request.dto.ts +19 -0
  47. package/src/lib/auth/dto/requests/signup.request.dto.ts +42 -0
  48. package/src/lib/auth/dto/requests/toggle-mfa.request.dto.ts +12 -0
  49. package/src/lib/auth/dto/requests/verify-2fa.request.dto.ts +24 -0
  50. package/src/lib/auth/dto/requests/verify-email.request.dto.ts +22 -0
  51. package/src/lib/auth/dto/requests/verify-forgot-password-otp-request-dto.ts +41 -0
  52. package/src/lib/auth/dto/requests/verify-totp-setup.request.dto.ts +22 -0
  53. package/src/lib/auth/dto/responses/auth-cookie.response.dto.ts +58 -0
  54. package/src/lib/auth/dto/responses/auth-success.response.dto.ts +58 -0
  55. package/src/lib/auth/dto/responses/auth.response.dto.ts +99 -0
  56. package/src/lib/auth/dto/responses/client-config.response.dto.ts +153 -0
  57. package/src/lib/auth/dto/responses/initialize-admin.response.dto.ts +22 -0
  58. package/src/lib/auth/dto/responses/mfa-code-response.dto.ts +27 -0
  59. package/src/lib/auth/dto/responses/mfa-status.response.dto.ts +89 -0
  60. package/src/lib/auth/dto/responses/verify-otp.response.dto.ts +9 -0
  61. package/src/lib/auth/entities/mfa-secret.entity.ts +33 -0
  62. package/src/lib/auth/entities/otp.entity.ts +33 -0
  63. package/src/lib/auth/events/{logged-out-all.event.d.ts → logged-out-all.event.ts} +6 -3
  64. package/src/lib/auth/events/{logged-out.event.d.ts → logged-out.event.ts} +5 -3
  65. package/src/lib/auth/events/{password-reset-requested.event.d.ts → password-reset-requested.event.ts} +6 -3
  66. package/src/lib/auth/events/{password-reset.event.d.ts → password-reset.event.ts} +6 -3
  67. package/src/lib/auth/events/{user-2fa-verified.event.d.ts → user-2fa-verified.event.ts} +6 -3
  68. package/src/lib/auth/events/{user-logged-in.event.d.ts → user-logged-in.event.ts} +7 -3
  69. package/src/lib/auth/events/{user-refresh-token.event.d.ts → user-refresh-token.event.ts} +6 -3
  70. package/src/lib/auth/events/{user-registered.event.d.ts → user-registered.event.ts} +7 -3
  71. package/src/lib/auth/guards/auth.guard.ts +386 -0
  72. package/src/lib/auth/{index.d.ts → index.ts} +28 -1
  73. package/src/lib/auth/interceptors/refresh-token.interceptor.ts +117 -0
  74. package/src/lib/auth/services/auth.service.ts +947 -0
  75. package/src/lib/auth/services/client-config.service.ts +157 -0
  76. package/src/lib/auth/services/cookie.service.ts +43 -0
  77. package/src/lib/auth/services/mfa.service.ts +391 -0
  78. package/src/lib/auth.constants.ts +63 -0
  79. package/src/lib/core/core.module.ts +50 -0
  80. package/src/lib/core/decorators/auth.decorator.ts +38 -0
  81. package/src/lib/core/decorators/permissions.decorator.ts +17 -0
  82. package/src/lib/core/decorators/public.decorator.ts +33 -0
  83. package/src/lib/core/decorators/role.decorator.ts +12 -0
  84. package/src/lib/core/decorators/skip-mfa.decorator.ts +4 -0
  85. package/src/lib/core/dto/message.response.dto.ts +6 -0
  86. package/src/lib/core/{entities.d.ts → entities.ts} +18 -1
  87. package/src/lib/core/{index.d.ts → index.ts} +17 -0
  88. package/src/lib/core/interfaces/auth-module-options.interface.ts +211 -0
  89. package/src/lib/core/interfaces/mfa-options.interface.ts +46 -0
  90. package/src/lib/core/interfaces/otp.interface.ts +6 -0
  91. package/src/lib/core/interfaces/session-options.interface.ts +19 -0
  92. package/src/lib/core/interfaces/{token-payload.interface.d.ts → token-payload.interface.ts} +4 -1
  93. package/src/lib/core/providers/apple-auth.provider.ts +61 -0
  94. package/src/lib/core/providers/base-auth.provider.ts +74 -0
  95. package/src/lib/core/providers/email-auth.provider.ts +71 -0
  96. package/src/lib/core/providers/facebook-auth.provider.ts +55 -0
  97. package/src/lib/core/providers/github-auth.provider.ts +79 -0
  98. package/src/lib/core/providers/google-auth.provider.ts +61 -0
  99. package/src/lib/core/providers/jwt-auth.provider.ts +50 -0
  100. package/src/lib/core/providers/phone-auth.provider.ts +45 -0
  101. package/src/lib/core/services/auth-config.service.ts +184 -0
  102. package/src/lib/core/services/auth-provider-registry.service.ts +93 -0
  103. package/src/lib/core/services/{debug-logger.service.js → debug-logger.service.ts} +92 -59
  104. package/src/lib/core/services/initialization.service.ts +29 -0
  105. package/src/lib/core/services/jwt.service.ts +137 -0
  106. package/src/lib/nest-auth.module.ts +152 -0
  107. package/src/lib/permission/entities/permission.entity.ts +56 -0
  108. package/src/lib/permission/index.ts +4 -0
  109. package/src/lib/permission/permission.module.ts +14 -0
  110. package/src/lib/permission/services/permission.service.ts +233 -0
  111. package/src/lib/request-context/index.ts +2 -0
  112. package/src/lib/request-context/request-context.middleware.ts +13 -0
  113. package/src/lib/request-context/{request-context.js → request-context.ts} +51 -27
  114. package/src/lib/role/entities/role.entity.ts +103 -0
  115. package/src/lib/role/{index.d.ts → index.ts} +2 -0
  116. package/src/lib/role/role.module.ts +15 -0
  117. package/src/lib/role/services/{role.service.js → role.service.ts} +117 -52
  118. package/src/lib/session/entities/session.entity.ts +54 -0
  119. package/src/lib/session/index.ts +20 -0
  120. package/src/lib/session/interfaces/session-repository.interface.ts +58 -0
  121. package/src/lib/session/repositories/base-session.repository.ts +74 -0
  122. package/src/lib/session/repositories/memory-session.repository.ts +153 -0
  123. package/src/lib/session/repositories/redis-session.repository.ts +171 -0
  124. package/src/lib/session/repositories/typeorm-session.repository.ts +86 -0
  125. package/src/lib/session/services/session-manager.service.ts +261 -0
  126. package/src/lib/session/session.module.ts +102 -0
  127. package/src/lib/session/utils/session.util.ts +166 -0
  128. package/src/lib/tenant/entities/tenant.entity.ts +40 -0
  129. package/src/lib/tenant/events/tenant-created.event.ts +9 -0
  130. package/src/lib/tenant/events/tenant-deleted.event.ts +11 -0
  131. package/src/lib/tenant/events/{tenant-updated.event.d.ts → tenant-updated.event.ts} +6 -3
  132. package/src/lib/tenant/index.ts +9 -0
  133. package/src/lib/tenant/services/tenant.service.ts +336 -0
  134. package/src/lib/tenant/tenant.module.ts +19 -0
  135. package/src/lib/types/express.d.ts +14 -0
  136. package/src/lib/user/dto/requests/update-user.dto.ts +15 -0
  137. package/src/lib/user/entities/access-key.entity.ts +53 -0
  138. package/src/lib/user/entities/identity.entity.ts +31 -0
  139. package/src/lib/user/entities/user.entity.ts +212 -0
  140. package/src/lib/user/events/{user-created.event.d.ts → user-created.event.ts} +4 -3
  141. package/src/lib/user/events/{user-deleted.event.d.ts → user-deleted.event.ts} +6 -3
  142. package/src/lib/user/events/{user-updated.event.d.ts → user-updated.event.ts} +6 -3
  143. package/src/lib/user/index.ts +11 -0
  144. package/src/lib/user/services/access-key.service.ts +145 -0
  145. package/src/lib/user/services/{user.service.js → user.service.ts} +199 -95
  146. package/src/lib/user/user.module.ts +26 -0
  147. package/src/lib/utils/database.utils.ts +6 -0
  148. package/src/lib/utils/date.util.ts +106 -0
  149. package/src/lib/utils/device.util.ts +111 -0
  150. package/src/lib/utils/index.ts +6 -0
  151. package/src/lib/utils/otp.ts +3 -0
  152. package/src/lib/utils/security.util.ts +27 -0
  153. package/src/lib/utils/slug.util.ts +58 -0
  154. package/src/types/ms.d.ts +1 -0
  155. package/test/access-key.service.spec.ts +204 -0
  156. package/test/auth.service.spec.ts +541 -0
  157. package/test/mfa.service.spec.ts +359 -0
  158. package/test/role.service.spec.ts +418 -0
  159. package/test/tenant.service.spec.ts +218 -0
  160. package/test/test.setup.ts +66 -0
  161. package/test/user.service.spec.ts +374 -0
  162. package/tsconfig.json +17 -0
  163. package/tsconfig.lib.json +15 -0
  164. package/tsconfig.spec.json +15 -0
  165. package/tsconfig.tsbuildinfo +1 -1
  166. package/ui/.env +1 -0
  167. package/ui/.env.example +1 -0
  168. package/ui/.eslintignore +7 -0
  169. package/ui/README.md +288 -0
  170. package/ui/index.html +17 -0
  171. package/ui/package.json +34 -0
  172. package/ui/postcss.config.js +6 -0
  173. package/ui/src/App.tsx +245 -0
  174. package/ui/src/components/AuthGuard.tsx +59 -0
  175. package/ui/src/components/AuthProvider.tsx +76 -0
  176. package/ui/src/components/Button.tsx +37 -0
  177. package/ui/src/components/Card.tsx +37 -0
  178. package/ui/src/components/ErrorMessage.tsx +15 -0
  179. package/ui/src/components/FormDialog.tsx +61 -0
  180. package/ui/src/components/FormFooter.tsx +37 -0
  181. package/ui/src/components/Layout.tsx +112 -0
  182. package/ui/src/components/LoadingMessage.tsx +11 -0
  183. package/ui/src/components/Modal.tsx +97 -0
  184. package/ui/src/components/MultiSelect.tsx +145 -0
  185. package/ui/src/components/PageHeader.tsx +42 -0
  186. package/ui/src/components/PanelHeader.tsx +28 -0
  187. package/ui/src/components/PermissionInput.tsx +473 -0
  188. package/ui/src/components/SearchInput.tsx +69 -0
  189. package/ui/src/components/Select.tsx +51 -0
  190. package/ui/src/components/SwaggerUIWrapper.tsx +316 -0
  191. package/ui/src/components/Table.tsx +207 -0
  192. package/ui/src/components/Tag.tsx +9 -0
  193. package/ui/src/components/TagsInput.tsx +96 -0
  194. package/ui/src/components/admin/AdminForm.tsx +170 -0
  195. package/ui/src/components/admin/CreateAdminDialog.tsx +38 -0
  196. package/ui/src/components/auth/LoginFooter.tsx +17 -0
  197. package/ui/src/components/auth/LoginHeader.tsx +14 -0
  198. package/ui/src/components/auth/components/CodeBlock.tsx +43 -0
  199. package/ui/src/components/auth/components/CreateAccountCodeExamples.tsx +60 -0
  200. package/ui/src/components/auth/components/PasswordRequirements.tsx +16 -0
  201. package/ui/src/components/auth/components/PasswordStrengthIndicator.tsx +48 -0
  202. package/ui/src/components/auth/components/ResetPasswordCodeExamples.tsx +76 -0
  203. package/ui/src/components/auth/components/Tabs.tsx +32 -0
  204. package/ui/src/components/auth/dialogs/CreateAccountDialog.tsx +79 -0
  205. package/ui/src/components/auth/dialogs/ForgotPasswordDialog.tsx +79 -0
  206. package/ui/src/components/auth/forms/CreateAccountForm.tsx +226 -0
  207. package/ui/src/components/auth/forms/LoginForm.tsx +149 -0
  208. package/ui/src/components/auth/forms/ResetPasswordForm.tsx +202 -0
  209. package/ui/src/components/auth/types.ts +17 -0
  210. package/ui/src/components/auth/utils/security.ts +82 -0
  211. package/ui/src/components/auth/utils/utils.ts +25 -0
  212. package/ui/src/components/form/EmailField.tsx +25 -0
  213. package/ui/src/components/form/FormField.tsx +102 -0
  214. package/ui/src/components/form/FormMultiSelect.tsx +46 -0
  215. package/ui/src/components/form/FormSelect.tsx +60 -0
  216. package/ui/src/components/form/FormTagsInput.tsx +42 -0
  217. package/ui/src/components/form/FormTextarea.tsx +42 -0
  218. package/ui/src/components/form/PasswordField.tsx +93 -0
  219. package/ui/src/components/form/SecretKeyField.tsx +49 -0
  220. package/ui/src/components/permission/CreatePermissionDialog.tsx +44 -0
  221. package/ui/src/components/permission/EditPermissionDialog.tsx +55 -0
  222. package/ui/src/components/permission/PermissionForm.tsx +251 -0
  223. package/ui/src/components/role/CreateRoleDialog.tsx +45 -0
  224. package/ui/src/components/role/EditRoleDialog.tsx +55 -0
  225. package/ui/src/components/role/RoleDialog.tsx +252 -0
  226. package/ui/src/components/role/RoleForm.tsx +246 -0
  227. package/ui/src/components/tenant/CreateTenantDialog.tsx +41 -0
  228. package/ui/src/components/tenant/EditTenantDialog.tsx +52 -0
  229. package/ui/src/components/tenant/TenantForm.tsx +160 -0
  230. package/ui/src/components/user/CreateUserDialog.tsx +45 -0
  231. package/ui/src/components/user/UserDetailModal.tsx +815 -0
  232. package/ui/src/components/user/UserForm.tsx +191 -0
  233. package/ui/src/data/nest-auth.json +1687 -0
  234. package/ui/src/hooks/useApi.ts +69 -0
  235. package/ui/src/hooks/useAuth.ts +100 -0
  236. package/ui/src/hooks/useConfirm.tsx +105 -0
  237. package/ui/src/hooks/useFormFooter.tsx +42 -0
  238. package/ui/src/hooks/usePagination.ts +69 -0
  239. package/ui/src/index.css +59 -0
  240. package/ui/src/main.tsx +13 -0
  241. package/ui/src/pages/AdminsPage.tsx +178 -0
  242. package/ui/src/pages/ApiPage.tsx +89 -0
  243. package/ui/src/pages/DashboardPage.tsx +281 -0
  244. package/ui/src/pages/LoginPage.tsx +39 -0
  245. package/ui/src/pages/PermissionsPage.tsx +376 -0
  246. package/ui/src/pages/RolesPage.tsx +274 -0
  247. package/ui/src/pages/TenantsPage.tsx +221 -0
  248. package/ui/src/pages/UsersPage.tsx +387 -0
  249. package/ui/src/services/api.ts +115 -0
  250. package/ui/src/types/index.ts +136 -0
  251. package/ui/src/vite-env.d.ts +9 -0
  252. package/ui/tailwind.config.js +45 -0
  253. package/ui/tsconfig.json +24 -0
  254. package/ui/tsconfig.node.json +10 -0
  255. package/ui/vite.config.ts +37 -0
  256. package/ui/yarn.lock +3137 -0
  257. package/src/index.d.ts +0 -11
  258. package/src/index.js +0 -18
  259. package/src/index.js.map +0 -1
  260. package/src/lib/auth/auth.module.d.ts +0 -2
  261. package/src/lib/auth/auth.module.js +0 -54
  262. package/src/lib/auth/auth.module.js.map +0 -1
  263. package/src/lib/auth/controllers/auth.controller.d.ts +0 -29
  264. package/src/lib/auth/controllers/auth.controller.js +0 -206
  265. package/src/lib/auth/controllers/auth.controller.js.map +0 -1
  266. package/src/lib/auth/controllers/mfa.controller.d.ts +0 -23
  267. package/src/lib/auth/controllers/mfa.controller.js +0 -131
  268. package/src/lib/auth/controllers/mfa.controller.js.map +0 -1
  269. package/src/lib/auth/dto/index.d.ts +0 -0
  270. package/src/lib/auth/dto/index.js +0 -1
  271. package/src/lib/auth/dto/index.js.map +0 -1
  272. package/src/lib/auth/dto/requests/forgot-password.request.dto.d.ts +0 -5
  273. package/src/lib/auth/dto/requests/forgot-password.request.dto.js +0 -30
  274. package/src/lib/auth/dto/requests/forgot-password.request.dto.js.map +0 -1
  275. package/src/lib/auth/dto/requests/login.request.dto.d.ts +0 -6
  276. package/src/lib/auth/dto/requests/login.request.dto.js +0 -38
  277. package/src/lib/auth/dto/requests/login.request.dto.js.map +0 -1
  278. package/src/lib/auth/dto/requests/refresh-token.request.dto.d.ts +0 -3
  279. package/src/lib/auth/dto/requests/refresh-token.request.dto.js +0 -15
  280. package/src/lib/auth/dto/requests/refresh-token.request.dto.js.map +0 -1
  281. package/src/lib/auth/dto/requests/reset-password.request.dto.d.ts +0 -7
  282. package/src/lib/auth/dto/requests/reset-password.request.dto.js +0 -42
  283. package/src/lib/auth/dto/requests/reset-password.request.dto.js.map +0 -1
  284. package/src/lib/auth/dto/requests/send-mfa-code.request.dto.d.ts +0 -4
  285. package/src/lib/auth/dto/requests/send-mfa-code.request.dto.js +0 -16
  286. package/src/lib/auth/dto/requests/send-mfa-code.request.dto.js.map +0 -1
  287. package/src/lib/auth/dto/requests/signup.request.dto.d.ts +0 -7
  288. package/src/lib/auth/dto/requests/signup.request.dto.js +0 -37
  289. package/src/lib/auth/dto/requests/signup.request.dto.js.map +0 -1
  290. package/src/lib/auth/dto/requests/social-login.request.dto.d.ts +0 -3
  291. package/src/lib/auth/dto/requests/social-login.request.dto.js +0 -16
  292. package/src/lib/auth/dto/requests/social-login.request.dto.js.map +0 -1
  293. package/src/lib/auth/dto/requests/verify-2fa.request.dto.d.ts +0 -5
  294. package/src/lib/auth/dto/requests/verify-2fa.request.dto.js +0 -21
  295. package/src/lib/auth/dto/requests/verify-2fa.request.dto.js.map +0 -1
  296. package/src/lib/auth/dto/requests/verify-forgot-password-otp-request-dto.d.ts +0 -6
  297. package/src/lib/auth/dto/requests/verify-forgot-password-otp-request-dto.js +0 -35
  298. package/src/lib/auth/dto/requests/verify-forgot-password-otp-request-dto.js.map +0 -1
  299. package/src/lib/auth/dto/requests/verify-totp-setup.request.dto.d.ts +0 -4
  300. package/src/lib/auth/dto/requests/verify-totp-setup.request.dto.js +0 -20
  301. package/src/lib/auth/dto/requests/verify-totp-setup.request.dto.js.map +0 -1
  302. package/src/lib/auth/dto/responses/auth.response.dto.d.ts +0 -16
  303. package/src/lib/auth/dto/responses/auth.response.dto.js +0 -50
  304. package/src/lib/auth/dto/responses/auth.response.dto.js.map +0 -1
  305. package/src/lib/auth/entities/mfa-secret.entity.d.ts +0 -12
  306. package/src/lib/auth/entities/mfa-secret.entity.js +0 -50
  307. package/src/lib/auth/entities/mfa-secret.entity.js.map +0 -1
  308. package/src/lib/auth/entities/otp.entity.d.ts +0 -13
  309. package/src/lib/auth/entities/otp.entity.js +0 -50
  310. package/src/lib/auth/entities/otp.entity.js.map +0 -1
  311. package/src/lib/auth/events/logged-out-all.event.js +0 -10
  312. package/src/lib/auth/events/logged-out-all.event.js.map +0 -1
  313. package/src/lib/auth/events/logged-out.event.js +0 -10
  314. package/src/lib/auth/events/logged-out.event.js.map +0 -1
  315. package/src/lib/auth/events/password-reset-requested.event.js +0 -10
  316. package/src/lib/auth/events/password-reset-requested.event.js.map +0 -1
  317. package/src/lib/auth/events/password-reset.event.js +0 -10
  318. package/src/lib/auth/events/password-reset.event.js.map +0 -1
  319. package/src/lib/auth/events/user-2fa-verified.event.js +0 -10
  320. package/src/lib/auth/events/user-2fa-verified.event.js.map +0 -1
  321. package/src/lib/auth/events/user-logged-in.event.js +0 -10
  322. package/src/lib/auth/events/user-logged-in.event.js.map +0 -1
  323. package/src/lib/auth/events/user-refresh-token.event.js +0 -10
  324. package/src/lib/auth/events/user-refresh-token.event.js.map +0 -1
  325. package/src/lib/auth/events/user-registered.event.js +0 -10
  326. package/src/lib/auth/events/user-registered.event.js.map +0 -1
  327. package/src/lib/auth/guards/auth.guard.d.ts +0 -28
  328. package/src/lib/auth/guards/auth.guard.js +0 -304
  329. package/src/lib/auth/guards/auth.guard.js.map +0 -1
  330. package/src/lib/auth/index.js +0 -31
  331. package/src/lib/auth/index.js.map +0 -1
  332. package/src/lib/auth/services/auth.service.d.ts +0 -53
  333. package/src/lib/auth/services/auth.service.js +0 -522
  334. package/src/lib/auth/services/auth.service.js.map +0 -1
  335. package/src/lib/auth/services/cookie.service.d.ts +0 -9
  336. package/src/lib/auth/services/cookie.service.js +0 -43
  337. package/src/lib/auth/services/cookie.service.js.map +0 -1
  338. package/src/lib/auth/services/mfa.service.d.ts +0 -38
  339. package/src/lib/auth/services/mfa.service.js +0 -254
  340. package/src/lib/auth/services/mfa.service.js.map +0 -1
  341. package/src/lib/auth.constants.d.ts +0 -39
  342. package/src/lib/auth.constants.js +0 -43
  343. package/src/lib/auth.constants.js.map +0 -1
  344. package/src/lib/core/core.module.d.ts +0 -2
  345. package/src/lib/core/core.module.js +0 -53
  346. package/src/lib/core/core.module.js.map +0 -1
  347. package/src/lib/core/decorators/auth.decorator.d.ts +0 -1
  348. package/src/lib/core/decorators/auth.decorator.js +0 -8
  349. package/src/lib/core/decorators/auth.decorator.js.map +0 -1
  350. package/src/lib/core/decorators/permissions.decorator.d.ts +0 -2
  351. package/src/lib/core/decorators/permissions.decorator.js +0 -14
  352. package/src/lib/core/decorators/permissions.decorator.js.map +0 -1
  353. package/src/lib/core/decorators/role.decorator.d.ts +0 -3
  354. package/src/lib/core/decorators/role.decorator.js +0 -14
  355. package/src/lib/core/decorators/role.decorator.js.map +0 -1
  356. package/src/lib/core/decorators/skip-mfa.decorator.d.ts +0 -2
  357. package/src/lib/core/decorators/skip-mfa.decorator.js +0 -8
  358. package/src/lib/core/decorators/skip-mfa.decorator.js.map +0 -1
  359. package/src/lib/core/dto/message.response.dto.d.ts +0 -3
  360. package/src/lib/core/dto/message.response.dto.js +0 -13
  361. package/src/lib/core/dto/message.response.dto.js.map +0 -1
  362. package/src/lib/core/entities.js +0 -31
  363. package/src/lib/core/entities.js.map +0 -1
  364. package/src/lib/core/index.js +0 -27
  365. package/src/lib/core/index.js.map +0 -1
  366. package/src/lib/core/interfaces/auth-module-options.interface.d.ts +0 -62
  367. package/src/lib/core/interfaces/auth-module-options.interface.js +0 -3
  368. package/src/lib/core/interfaces/auth-module-options.interface.js.map +0 -1
  369. package/src/lib/core/interfaces/mfa-options.interface.d.ts +0 -25
  370. package/src/lib/core/interfaces/mfa-options.interface.js +0 -10
  371. package/src/lib/core/interfaces/mfa-options.interface.js.map +0 -1
  372. package/src/lib/core/interfaces/otp.interface.d.ts +0 -5
  373. package/src/lib/core/interfaces/otp.interface.js +0 -10
  374. package/src/lib/core/interfaces/otp.interface.js.map +0 -1
  375. package/src/lib/core/interfaces/session-options.interface.d.ts +0 -12
  376. package/src/lib/core/interfaces/session-options.interface.js +0 -9
  377. package/src/lib/core/interfaces/session-options.interface.js.map +0 -1
  378. package/src/lib/core/interfaces/token-payload.interface.js +0 -3
  379. package/src/lib/core/interfaces/token-payload.interface.js.map +0 -1
  380. package/src/lib/core/providers/apple-auth.provider.d.ts +0 -18
  381. package/src/lib/core/providers/apple-auth.provider.js +0 -57
  382. package/src/lib/core/providers/apple-auth.provider.js.map +0 -1
  383. package/src/lib/core/providers/base-auth.provider.d.ts +0 -26
  384. package/src/lib/core/providers/base-auth.provider.js +0 -43
  385. package/src/lib/core/providers/base-auth.provider.js.map +0 -1
  386. package/src/lib/core/providers/email-auth.provider.d.ts +0 -17
  387. package/src/lib/core/providers/email-auth.provider.js +0 -40
  388. package/src/lib/core/providers/email-auth.provider.js.map +0 -1
  389. package/src/lib/core/providers/facebook-auth.provider.d.ts +0 -18
  390. package/src/lib/core/providers/facebook-auth.provider.js +0 -56
  391. package/src/lib/core/providers/facebook-auth.provider.js.map +0 -1
  392. package/src/lib/core/providers/google-auth.provider.d.ts +0 -21
  393. package/src/lib/core/providers/google-auth.provider.js +0 -58
  394. package/src/lib/core/providers/google-auth.provider.js.map +0 -1
  395. package/src/lib/core/providers/jwt-auth.provider.d.ts +0 -33
  396. package/src/lib/core/providers/jwt-auth.provider.js +0 -50
  397. package/src/lib/core/providers/jwt-auth.provider.js.map +0 -1
  398. package/src/lib/core/providers/phone-auth.provider.d.ts +0 -18
  399. package/src/lib/core/providers/phone-auth.provider.js +0 -43
  400. package/src/lib/core/providers/phone-auth.provider.js.map +0 -1
  401. package/src/lib/core/services/auth-config.service.d.ts +0 -12
  402. package/src/lib/core/services/auth-config.service.js +0 -79
  403. package/src/lib/core/services/auth-config.service.js.map +0 -1
  404. package/src/lib/core/services/auth-provider-registry.service.d.ts +0 -24
  405. package/src/lib/core/services/auth-provider-registry.service.js +0 -71
  406. package/src/lib/core/services/auth-provider-registry.service.js.map +0 -1
  407. package/src/lib/core/services/debug-logger.service.d.ts +0 -38
  408. package/src/lib/core/services/debug-logger.service.js.map +0 -1
  409. package/src/lib/core/services/initialization.service.d.ts +0 -10
  410. package/src/lib/core/services/initialization.service.js +0 -34
  411. package/src/lib/core/services/initialization.service.js.map +0 -1
  412. package/src/lib/core/services/jwt.service.d.ts +0 -14
  413. package/src/lib/core/services/jwt.service.js +0 -92
  414. package/src/lib/core/services/jwt.service.js.map +0 -1
  415. package/src/lib/nest-auth.module.d.ts +0 -11
  416. package/src/lib/nest-auth.module.js +0 -177
  417. package/src/lib/nest-auth.module.js.map +0 -1
  418. package/src/lib/request-context/request-context.d.ts +0 -22
  419. package/src/lib/request-context/request-context.js.map +0 -1
  420. package/src/lib/request-context/request-context.middleware.d.ts +0 -4
  421. package/src/lib/request-context/request-context.middleware.js +0 -16
  422. package/src/lib/request-context/request-context.middleware.js.map +0 -1
  423. package/src/lib/role/entities/role.entity.d.ts +0 -20
  424. package/src/lib/role/entities/role.entity.js +0 -110
  425. package/src/lib/role/entities/role.entity.js.map +0 -1
  426. package/src/lib/role/index.js +0 -5
  427. package/src/lib/role/index.js.map +0 -1
  428. package/src/lib/role/role.module.d.ts +0 -2
  429. package/src/lib/role/role.module.js +0 -23
  430. package/src/lib/role/role.module.js.map +0 -1
  431. package/src/lib/role/services/role.service.d.ts +0 -20
  432. package/src/lib/role/services/role.service.js.map +0 -1
  433. package/src/lib/session/entities/session.entity.d.ts +0 -16
  434. package/src/lib/session/entities/session.entity.js +0 -63
  435. package/src/lib/session/entities/session.entity.js.map +0 -1
  436. package/src/lib/session/index.d.ts +0 -3
  437. package/src/lib/session/index.js +0 -7
  438. package/src/lib/session/index.js.map +0 -1
  439. package/src/lib/session/services/base-session.service.d.ts +0 -23
  440. package/src/lib/session/services/base-session.service.js +0 -64
  441. package/src/lib/session/services/base-session.service.js.map +0 -1
  442. package/src/lib/session/services/database-session.service.d.ts +0 -17
  443. package/src/lib/session/services/database-session.service.js +0 -51
  444. package/src/lib/session/services/database-session.service.js.map +0 -1
  445. package/src/lib/session/services/redis-session.service.d.ts +0 -20
  446. package/src/lib/session/services/redis-session.service.js +0 -117
  447. package/src/lib/session/services/redis-session.service.js.map +0 -1
  448. package/src/lib/session/session.module.d.ts +0 -2
  449. package/src/lib/session/session.module.js +0 -33
  450. package/src/lib/session/session.module.js.map +0 -1
  451. package/src/lib/tenant/entities/tenant.entity.d.ts +0 -10
  452. package/src/lib/tenant/entities/tenant.entity.js +0 -44
  453. package/src/lib/tenant/entities/tenant.entity.js.map +0 -1
  454. package/src/lib/tenant/events/tenant-created.event.d.ts +0 -8
  455. package/src/lib/tenant/events/tenant-created.event.js +0 -10
  456. package/src/lib/tenant/events/tenant-created.event.js.map +0 -1
  457. package/src/lib/tenant/events/tenant-deleted.event.d.ts +0 -8
  458. package/src/lib/tenant/events/tenant-deleted.event.js +0 -10
  459. package/src/lib/tenant/events/tenant-deleted.event.js.map +0 -1
  460. package/src/lib/tenant/events/tenant-updated.event.js +0 -10
  461. package/src/lib/tenant/events/tenant-updated.event.js.map +0 -1
  462. package/src/lib/tenant/index.d.ts +0 -1
  463. package/src/lib/tenant/index.js +0 -5
  464. package/src/lib/tenant/index.js.map +0 -1
  465. package/src/lib/tenant/services/tenant.service.d.ts +0 -26
  466. package/src/lib/tenant/services/tenant.service.js +0 -200
  467. package/src/lib/tenant/services/tenant.service.js.map +0 -1
  468. package/src/lib/tenant/tenant.module.d.ts +0 -2
  469. package/src/lib/tenant/tenant.module.js +0 -27
  470. package/src/lib/tenant/tenant.module.js.map +0 -1
  471. package/src/lib/user/dto/requests/update-user.dto.d.ts +0 -5
  472. package/src/lib/user/dto/requests/update-user.dto.js +0 -24
  473. package/src/lib/user/dto/requests/update-user.dto.js.map +0 -1
  474. package/src/lib/user/entities/access-key.entity.d.ts +0 -16
  475. package/src/lib/user/entities/access-key.entity.js +0 -63
  476. package/src/lib/user/entities/access-key.entity.js.map +0 -1
  477. package/src/lib/user/entities/identity.entity.d.ts +0 -12
  478. package/src/lib/user/entities/identity.entity.js +0 -47
  479. package/src/lib/user/entities/identity.entity.js.map +0 -1
  480. package/src/lib/user/entities/user.entity.d.ts +0 -39
  481. package/src/lib/user/entities/user.entity.js +0 -201
  482. package/src/lib/user/entities/user.entity.js.map +0 -1
  483. package/src/lib/user/events/user-created.event.js +0 -10
  484. package/src/lib/user/events/user-created.event.js.map +0 -1
  485. package/src/lib/user/events/user-deleted.event.js +0 -10
  486. package/src/lib/user/events/user-deleted.event.js.map +0 -1
  487. package/src/lib/user/events/user-updated.event.js +0 -10
  488. package/src/lib/user/events/user-updated.event.js.map +0 -1
  489. package/src/lib/user/index.d.ts +0 -3
  490. package/src/lib/user/index.js +0 -7
  491. package/src/lib/user/index.js.map +0 -1
  492. package/src/lib/user/services/access-key.service.d.ts +0 -19
  493. package/src/lib/user/services/access-key.service.js +0 -119
  494. package/src/lib/user/services/access-key.service.js.map +0 -1
  495. package/src/lib/user/services/user.service.d.ts +0 -24
  496. package/src/lib/user/services/user.service.js.map +0 -1
  497. package/src/lib/user/user.module.d.ts +0 -2
  498. package/src/lib/user/user.module.js +0 -34
  499. package/src/lib/user/user.module.js.map +0 -1
  500. package/src/lib/utils/database.utils.d.ts +0 -2
  501. package/src/lib/utils/database.utils.js +0 -8
  502. package/src/lib/utils/database.utils.js.map +0 -1
  503. package/src/lib/utils/otp.d.ts +0 -1
  504. package/src/lib/utils/otp.js +0 -7
  505. package/src/lib/utils/otp.js.map +0 -1
@@ -1,522 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.AuthService = void 0;
4
- const tslib_1 = require("tslib");
5
- const common_1 = require("@nestjs/common");
6
- const typeorm_1 = require("@nestjs/typeorm");
7
- const typeorm_2 = require("typeorm");
8
- const user_entity_1 = require("../../user/entities/user.entity");
9
- const otp_entity_1 = require("../../auth/entities/otp.entity");
10
- const otp_interface_1 = require("../../core/interfaces/otp.interface");
11
- const auth_constants_1 = require("../../auth.constants");
12
- const typeorm_3 = require("typeorm");
13
- const mfa_service_1 = require("./mfa.service");
14
- const jwt_service_1 = require("../../core/services/jwt.service");
15
- const event_emitter_1 = require("@nestjs/event-emitter");
16
- const base_session_service_1 = require("../../session/services/base-session.service");
17
- const request_context_1 = require("../../request-context/request-context");
18
- const otp_1 = require("../../utils/otp");
19
- const user_registered_event_1 = require("../events/user-registered.event");
20
- const user_logged_in_event_1 = require("../events/user-logged-in.event");
21
- const user_2fa_verified_event_1 = require("../events/user-2fa-verified.event");
22
- const user_refresh_token_event_1 = require("../events/user-refresh-token.event");
23
- const logged_out_event_1 = require("../events/logged-out.event");
24
- const logged_out_all_event_1 = require("../events/logged-out-all.event");
25
- const password_reset_requested_event_1 = require("../events/password-reset-requested.event");
26
- const password_reset_event_1 = require("../events/password-reset.event");
27
- const auth_provider_registry_service_1 = require("../../core/services/auth-provider-registry.service");
28
- const tenant_service_1 = require("../../tenant/services/tenant.service");
29
- const debug_logger_service_1 = require("../../core/services/debug-logger.service");
30
- const moment_1 = tslib_1.__importDefault(require("moment"));
31
- let AuthService = class AuthService {
32
- constructor(userRepository, otpRepository, authProviderRegistry, mfaService, sessionService, jwtService, eventEmitter, tenantService, debugLogger) {
33
- this.userRepository = userRepository;
34
- this.otpRepository = otpRepository;
35
- this.authProviderRegistry = authProviderRegistry;
36
- this.mfaService = mfaService;
37
- this.sessionService = sessionService;
38
- this.jwtService = jwtService;
39
- this.eventEmitter = eventEmitter;
40
- this.tenantService = tenantService;
41
- this.debugLogger = debugLogger;
42
- }
43
- getUserWithRolesAndPermissions(userId, relations = []) {
44
- return this.userRepository.findOne({
45
- where: { id: userId },
46
- relations: [
47
- 'roles',
48
- ...relations
49
- ],
50
- });
51
- }
52
- async getUser() {
53
- const user = request_context_1.RequestContext.currentUser();
54
- if (!user) {
55
- return null;
56
- }
57
- return this.getUserWithRolesAndPermissions(user.id);
58
- }
59
- async signup(input) {
60
- this.debugLogger.logFunctionEntry('signup', 'AuthService', { email: input.email, phone: input.phone, hasPassword: !!input.password });
61
- try {
62
- const { email, phone, password } = input;
63
- let { tenantId = null } = input;
64
- tenantId = await this.tenantService.resolveTenantId(tenantId);
65
- this.debugLogger.logAuthOperation('signup', 'email|phone', undefined, { email, phone, resolvedTenantId: tenantId });
66
- if (!email && !phone) {
67
- this.debugLogger.error('Signup failed: Neither email nor phone provided', 'AuthService');
68
- throw new common_1.BadRequestException('Either email or phone must be provided');
69
- }
70
- let provider = null;
71
- let providerUserId = null;
72
- if (email) {
73
- provider = this.authProviderRegistry.getProvider(auth_constants_1.EMAIL_AUTH_PROVIDER);
74
- providerUserId = email;
75
- }
76
- else if (phone) {
77
- provider = this.authProviderRegistry.getProvider(auth_constants_1.PHONE_AUTH_PROVIDER);
78
- providerUserId = phone;
79
- }
80
- if (!provider) {
81
- this.debugLogger.error('Provider not found for signup', 'AuthService', { email: !!email, phone: !!phone });
82
- throw new common_1.InternalServerErrorException('Phone or email authentication is not enabled');
83
- }
84
- this.debugLogger.debug('Checking for existing identity', 'AuthService', { providerUserId });
85
- const identity = await provider.findIdentity(providerUserId);
86
- if (identity) {
87
- this.debugLogger.warn('Identity already exists', 'AuthService', { email: !!email, phone: !!phone, tenantId });
88
- if (email) {
89
- throw new common_1.BadRequestException('Email already exists in this tenant');
90
- }
91
- if (phone) {
92
- throw new common_1.BadRequestException('Phone number already exists in this tenant');
93
- }
94
- }
95
- this.debugLogger.debug('Creating new user', 'AuthService', { email: !!email, phone: !!phone, tenantId });
96
- let user = this.userRepository.create({
97
- email,
98
- phone,
99
- tenantId,
100
- isVerified: false,
101
- });
102
- await user.setPassword(password);
103
- await this.userRepository.save(user);
104
- this.debugLogger.info('User created successfully', 'AuthService', { userId: user.id, tenantId });
105
- user = await this.getUserWithRolesAndPermissions(user.id);
106
- this.debugLogger.debug('Linking user to provider', 'AuthService', { userId: user.id, providerId: provider.providerId });
107
- await provider.linkToUser(user.id, providerUserId);
108
- this.debugLogger.debug('Creating session for new user', 'AuthService', { userId: user.id });
109
- const session = await this.sessionService.createSessionFromUser(user);
110
- const tokens = await this.generateTokensFromSession(session);
111
- const isRequiresMfa = await this.mfaService.isRequiresMfa(user.id);
112
- this.debugLogger.debug('Signup tokens generated', 'AuthService', { userId: user.id, isRequiresMfa });
113
- this.debugLogger.debug('Emitting user registration event', 'AuthService', { userId: user.id });
114
- await this.eventEmitter.emitAsync(auth_constants_1.NestAuthEvents.REGISTERED, new user_registered_event_1.UserRegisteredEvent({
115
- user,
116
- tenantId: user.tenantId,
117
- input,
118
- provider,
119
- session,
120
- tokens,
121
- isRequiresMfa
122
- }));
123
- this.debugLogger.logFunctionExit('signup', 'AuthService', { userId: user.id, isRequiresMfa });
124
- return {
125
- accessToken: tokens.accessToken,
126
- refreshToken: tokens.refreshToken,
127
- isRequiresMfa: isRequiresMfa,
128
- };
129
- }
130
- catch (error) {
131
- this.debugLogger.logError(error, 'signup', { email: input.email, phone: input.phone });
132
- throw error;
133
- }
134
- }
135
- async login(input) {
136
- const { credentials, providerId, createUserIfNotExists = false } = input;
137
- this.debugLogger.logFunctionEntry('login', 'AuthService', { providerId, createUserIfNotExists });
138
- let { tenantId = null } = input;
139
- tenantId = await this.tenantService.resolveTenantId(tenantId);
140
- this.debugLogger.logAuthOperation('login', providerId, undefined, { resolvedTenantId: tenantId, createUserIfNotExists });
141
- const provider = this.authProviderRegistry.getProvider(providerId);
142
- if (!provider) {
143
- throw new common_1.UnauthorizedException('Invalid authentication providerId or provider is not enabled');
144
- }
145
- const requiredFields = provider.getRequiredFields();
146
- if (!requiredFields.every(field => credentials[field])) {
147
- throw new common_1.BadRequestException(`Missing ${requiredFields.join(', ')} required fields`);
148
- }
149
- const authProviderUser = await provider.validate(credentials);
150
- const identity = await provider.findIdentity(authProviderUser.userId);
151
- let user = identity?.user || null;
152
- if (!user) {
153
- if (!createUserIfNotExists) {
154
- throw new common_1.UnauthorizedException('Invalid credentials');
155
- }
156
- user = await this.handleSocialLogin(provider, authProviderUser, tenantId);
157
- }
158
- if (user.isActive === false) {
159
- throw new common_1.UnauthorizedException({
160
- message: 'Your account is suspended, please contact support',
161
- code: auth_constants_1.USER_NOT_ACTIVE_ERROR,
162
- });
163
- }
164
- user = await this.getUserWithRolesAndPermissions(user.id);
165
- const session = await this.sessionService.createSessionFromUser(user);
166
- const tokens = await this.generateTokensFromSession(session);
167
- const isRequiresMfa = await this.mfaService.isRequiresMfa(user.id);
168
- await this.eventEmitter.emitAsync(auth_constants_1.NestAuthEvents.LOGGED_IN, new user_logged_in_event_1.UserLoggedInEvent({
169
- user,
170
- tenantId: user.tenantId,
171
- input,
172
- provider,
173
- session,
174
- tokens,
175
- isRequiresMfa
176
- }));
177
- return {
178
- accessToken: tokens.accessToken,
179
- refreshToken: tokens.refreshToken,
180
- isRequiresMfa: isRequiresMfa,
181
- };
182
- }
183
- async verify2fa(input) {
184
- this.debugLogger.logFunctionEntry('verify2fa', 'AuthService', { method: input.method });
185
- try {
186
- const session = request_context_1.RequestContext.currentSession();
187
- if (!session) {
188
- this.debugLogger.error('Session not found for 2FA verification', 'AuthService');
189
- throw new common_1.UnauthorizedException({
190
- message: 'Session not found',
191
- code: auth_constants_1.SESSION_NOT_FOUND_ERROR,
192
- });
193
- }
194
- this.debugLogger.debug('Verifying MFA code', 'AuthService', { userId: session.userId, method: input.method });
195
- const isValid = await this.mfaService.verifyMfa(session.userId, input.otp, input.method);
196
- if (!isValid) {
197
- this.debugLogger.warn('Invalid MFA code provided', 'AuthService', { userId: session.userId, method: input.method });
198
- throw new common_1.UnauthorizedException({
199
- message: 'Invalid MFA code',
200
- code: auth_constants_1.INVALID_MFA_EXCEPTION_CODE,
201
- });
202
- }
203
- this.debugLogger.debug('Updating session with MFA verification', 'AuthService', { sessionId: session.id });
204
- const payload = await this.sessionService.updateSession(session.id, {
205
- data: {
206
- ...session.data,
207
- isMfaVerified: true,
208
- }
209
- });
210
- const tokens = await this.generateTokensFromSession(payload);
211
- const user = await this.getUser();
212
- this.debugLogger.debug('Emitting 2FA verified event', 'AuthService', { userId: user.id });
213
- await this.eventEmitter.emitAsync(auth_constants_1.NestAuthEvents.TWO_FACTOR_VERIFIED, new user_2fa_verified_event_1.User2faVerifiedEvent({
214
- user,
215
- tenantId: user.tenantId,
216
- input,
217
- session,
218
- tokens
219
- }));
220
- this.debugLogger.logFunctionExit('verify2fa', 'AuthService', { userId: user.id });
221
- return {
222
- accessToken: tokens.accessToken,
223
- refreshToken: tokens.refreshToken,
224
- };
225
- }
226
- catch (error) {
227
- this.debugLogger.logError(error, 'verify2fa', { method: input.method });
228
- throw error;
229
- }
230
- }
231
- async send2faCode(userId, method) {
232
- const user = await this.userRepository.findOne({ where: { id: userId } });
233
- if (!user) {
234
- throw new common_1.UnauthorizedException('User not found');
235
- }
236
- await this.mfaService.sendMfaCode(user.id, method);
237
- return true;
238
- }
239
- async handleSocialLogin(provider, providerUser, tenantId) {
240
- let identity = await provider.findIdentity(providerUser.userId);
241
- if (identity) {
242
- return identity.user;
243
- }
244
- const linkUserWith = provider.linkUserWith();
245
- let user = await this.userRepository.findOne({ where: { [linkUserWith]: providerUser.userId } });
246
- if (!user) {
247
- user = this.userRepository.create({
248
- [linkUserWith]: providerUser.userId,
249
- isVerified: true,
250
- metadata: providerUser.metadata || {},
251
- tenantId: tenantId,
252
- });
253
- await this.userRepository.save(user);
254
- }
255
- await provider.linkToUser(user.id, providerUser.userId, providerUser.metadata || {});
256
- return user;
257
- }
258
- async refreshToken(refreshToken) {
259
- this.debugLogger.logFunctionEntry('refreshToken', 'AuthService', { hasRefreshToken: !!refreshToken });
260
- try {
261
- if (!refreshToken) {
262
- this.debugLogger.error('No refresh token provided', 'AuthService');
263
- throw new common_1.UnauthorizedException({
264
- message: 'No refresh token provided',
265
- code: auth_constants_1.REFRESH_TOKEN_INVALID,
266
- });
267
- }
268
- this.debugLogger.debug('Verifying refresh token', 'AuthService');
269
- let payload;
270
- try {
271
- payload = await this.jwtService.verifyToken(refreshToken);
272
- }
273
- catch (error) {
274
- this.debugLogger.warn('Invalid or expired refresh token', 'AuthService');
275
- throw new common_1.UnauthorizedException({
276
- message: 'Invalid or expired refresh token',
277
- code: auth_constants_1.REFRESH_TOKEN_EXPIRED,
278
- });
279
- }
280
- const session = await this.sessionService.getSession(payload.sessionId);
281
- if (!session) {
282
- throw new common_1.UnauthorizedException({
283
- message: 'Invalid refresh token',
284
- code: auth_constants_1.REFRESH_TOKEN_INVALID,
285
- });
286
- }
287
- const newSession = await this.sessionService.createSessionFromSession(session);
288
- await this.sessionService.revokeSession(session.id);
289
- this.debugLogger.debug('Generating new tokens from refreshed session', 'AuthService', { sessionId: newSession.id });
290
- const tokens = await this.generateTokensFromSession(newSession);
291
- this.debugLogger.debug('Emitting refresh token event', 'AuthService', { sessionId: newSession.id });
292
- await this.eventEmitter.emitAsync(auth_constants_1.NestAuthEvents.REFRESH_TOKEN, new user_refresh_token_event_1.UserRefreshTokenEvent({
293
- oldRefreshToken: refreshToken,
294
- session: newSession,
295
- tokens,
296
- }));
297
- this.debugLogger.logFunctionExit('refreshToken', 'AuthService', { sessionId: newSession.id });
298
- return tokens;
299
- }
300
- catch (error) {
301
- this.debugLogger.logError(error, 'refreshToken', { hasRefreshToken: !!refreshToken });
302
- throw error;
303
- }
304
- }
305
- async forgotPassword(input) {
306
- this.debugLogger.logFunctionEntry('forgotPassword', 'AuthService', { email: input.email, phone: input.phone });
307
- try {
308
- const { email, phone } = input;
309
- let { tenantId = null } = input;
310
- tenantId = await this.tenantService.resolveTenantId(tenantId);
311
- let provider = null;
312
- if (phone) {
313
- provider = this.authProviderRegistry.getProvider(auth_constants_1.PHONE_AUTH_PROVIDER);
314
- }
315
- else if (email) {
316
- provider = this.authProviderRegistry.getProvider(auth_constants_1.EMAIL_AUTH_PROVIDER);
317
- }
318
- else {
319
- throw new common_1.BadRequestException('Either email or phone must be provided');
320
- }
321
- if (!provider) {
322
- throw new common_1.BadRequestException('Phone or email authentication is not enabled');
323
- }
324
- if (!provider.enabled) {
325
- if (email) {
326
- throw new common_1.BadRequestException('Email authentication is not enabled');
327
- }
328
- else if (phone) {
329
- throw new common_1.BadRequestException('Phone authentication is not enabled');
330
- }
331
- }
332
- const identity = await provider.findIdentity(email || phone);
333
- if (!identity) {
334
- return { message: 'If the account exists, a password reset code has been sent' };
335
- }
336
- const otp = (0, otp_1.generateOtp)();
337
- const expiresAt = new Date();
338
- expiresAt.setMinutes(expiresAt.getMinutes() + 15);
339
- const otpEntity = await this.otpRepository.save({
340
- userId: identity.user?.id,
341
- code: otp,
342
- expiresAt,
343
- type: otp_interface_1.OTPTypeEnum.PASSWORD_RESET
344
- });
345
- await this.eventEmitter.emitAsync(auth_constants_1.NestAuthEvents.PASSWORD_RESET_REQUESTED, new password_reset_requested_event_1.PasswordResetRequestedEvent({
346
- user: identity.user,
347
- tenantId: identity.user?.tenantId,
348
- input,
349
- otp: otpEntity,
350
- provider,
351
- }));
352
- this.debugLogger.logFunctionExit('forgotPassword', 'AuthService', { email: !!email, phone: !!phone });
353
- return true;
354
- }
355
- catch (error) {
356
- this.debugLogger.logError(error, 'forgotPassword', { email: input.email, phone: input.phone });
357
- throw error;
358
- }
359
- }
360
- async verifyForgotPasswordOtp(input) {
361
- this.debugLogger.logFunctionEntry('verifyForgotPasswordOtp', 'AuthService', { email: input.email, phone: input.phone });
362
- try {
363
- const { email, phone, otp } = input;
364
- let { tenantId = null } = input;
365
- tenantId = await this.tenantService.resolveTenantId(tenantId);
366
- if (!email && !phone) {
367
- throw new common_1.BadRequestException('Either email or phone must be provided');
368
- }
369
- let provider = null;
370
- if (phone) {
371
- provider = this.authProviderRegistry.getProvider(auth_constants_1.PHONE_AUTH_PROVIDER);
372
- }
373
- else if (email) {
374
- provider = this.authProviderRegistry.getProvider(auth_constants_1.EMAIL_AUTH_PROVIDER);
375
- }
376
- if (!provider) {
377
- throw new common_1.BadRequestException('Phone or email authentication is not enabled');
378
- }
379
- const identity = await provider.findIdentity(email || phone);
380
- if (!identity) {
381
- throw new common_1.BadRequestException('Invalid reset request');
382
- }
383
- const validOtp = await this.otpRepository.findOne({
384
- where: {
385
- userId: identity.user?.id,
386
- code: otp,
387
- type: otp_interface_1.OTPTypeEnum.PASSWORD_RESET,
388
- used: false
389
- }
390
- });
391
- if (!validOtp) {
392
- throw new common_1.BadRequestException('Invalid OTP code');
393
- }
394
- if ((0, moment_1.default)(validOtp.expiresAt).isBefore(new Date())) {
395
- throw new common_1.BadRequestException('OTP code expired');
396
- }
397
- this.debugLogger.logFunctionExit('verifyForgotPasswordOtp', 'AuthService', { email: input.email, phone: input.phone });
398
- return true;
399
- }
400
- catch (error) {
401
- this.debugLogger.logError(error, 'verifyForgotPasswordOtp', { email: input.email, phone: input.phone });
402
- throw error;
403
- }
404
- }
405
- async resetPassword(input) {
406
- this.debugLogger.logFunctionEntry('resetPassword', 'AuthService', { email: input.email, phone: input.phone });
407
- try {
408
- const { email, phone, otp, newPassword } = input;
409
- let { tenantId = null } = input;
410
- tenantId = await this.tenantService.resolveTenantId(tenantId);
411
- if (!email && !phone) {
412
- throw new common_1.BadRequestException('Either email or phone must be provided');
413
- }
414
- const user = await this.userRepository.findOne({
415
- where: [
416
- ...(email ? [{ email, tenantId }] : []),
417
- ...(phone ? [{ phone, tenantId }] : [])
418
- ]
419
- });
420
- if (!user) {
421
- throw new common_1.BadRequestException('Invalid reset request');
422
- }
423
- const validOtp = await this.otpRepository.findOne({
424
- where: {
425
- userId: user.id,
426
- code: otp,
427
- type: otp_interface_1.OTPTypeEnum.PASSWORD_RESET,
428
- expiresAt: (0, typeorm_3.MoreThan)(new Date()),
429
- used: false
430
- }
431
- });
432
- if (!validOtp) {
433
- throw new common_1.BadRequestException('Invalid or expired OTP');
434
- }
435
- await user.setPassword(newPassword);
436
- await this.userRepository.save(user);
437
- validOtp.used = true;
438
- await this.otpRepository.save(validOtp);
439
- await this.eventEmitter.emitAsync(auth_constants_1.NestAuthEvents.PASSWORD_RESET, new password_reset_event_1.PasswordResetEvent({
440
- user,
441
- tenantId: user.tenantId,
442
- input,
443
- }));
444
- this.debugLogger.logFunctionExit('resetPassword', 'AuthService', { email: !!email, phone: !!phone });
445
- return true;
446
- }
447
- catch (error) {
448
- this.debugLogger.logError(error, 'resetPassword', { email: input.email, phone: input.phone });
449
- throw error;
450
- }
451
- }
452
- async logout(logoutType = 'user', reason) {
453
- const session = request_context_1.RequestContext.currentSession();
454
- const user = await this.getUser();
455
- await this.eventEmitter.emitAsync(auth_constants_1.NestAuthEvents.LOGGED_OUT, new logged_out_event_1.LoggedOutEvent({
456
- user,
457
- tenantId: user?.tenantId,
458
- session,
459
- logoutType,
460
- reason,
461
- }));
462
- if (session) {
463
- await this.sessionService.revokeSession(session.id);
464
- }
465
- return true;
466
- }
467
- async logoutAll(userId, logoutType = 'user', reason) {
468
- const session = request_context_1.RequestContext.currentSession();
469
- if (!session) {
470
- throw new common_1.UnauthorizedException('Session not found');
471
- }
472
- const sessions = await this.sessionService.getUserSessions(userId);
473
- await this.sessionService.revokeUserSessions(userId);
474
- const user = await this.getUser();
475
- await this.eventEmitter.emitAsync(auth_constants_1.NestAuthEvents.LOGGED_OUT_ALL, new logged_out_all_event_1.LoggedOutAllEvent({
476
- user,
477
- tenantId: user?.tenantId,
478
- logoutType,
479
- reason,
480
- currentSessionId: session.id,
481
- sessions,
482
- }));
483
- return true;
484
- }
485
- generateTokensPayload(session, otherPayload = {}) {
486
- const payload = {
487
- id: session.userId,
488
- sub: session.userId,
489
- sessionId: session.id,
490
- email: session.data?.user?.email,
491
- phone: session.data?.user?.phone,
492
- isVerified: session.data?.user?.isVerified,
493
- roles: session.data?.roles,
494
- tenantId: session.data?.user?.tenantId,
495
- isMfaEnabled: session.data?.user?.isMfaEnabled,
496
- isMfaVerified: session.data?.isMfaVerified,
497
- ...otherPayload,
498
- };
499
- return payload;
500
- }
501
- async generateTokensFromSession(session) {
502
- const payload = this.generateTokensPayload(session);
503
- const tokens = await this.jwtService.generateTokens(payload);
504
- return tokens;
505
- }
506
- };
507
- exports.AuthService = AuthService;
508
- exports.AuthService = AuthService = tslib_1.__decorate([
509
- (0, common_1.Injectable)(),
510
- tslib_1.__param(0, (0, typeorm_1.InjectRepository)(user_entity_1.NestAuthUser)),
511
- tslib_1.__param(1, (0, typeorm_1.InjectRepository)(otp_entity_1.NestAuthOTP)),
512
- tslib_1.__metadata("design:paramtypes", [typeorm_2.Repository,
513
- typeorm_2.Repository,
514
- auth_provider_registry_service_1.AuthProviderRegistryService,
515
- mfa_service_1.MfaService,
516
- base_session_service_1.BaseSessionService,
517
- jwt_service_1.JwtService,
518
- event_emitter_1.EventEmitter2,
519
- tenant_service_1.TenantService,
520
- debug_logger_service_1.DebugLoggerService])
521
- ], AuthService);
522
- //# sourceMappingURL=auth.service.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"auth.service.js","sourceRoot":"","sources":["../../../../../../../packages/nest-auth/src/lib/auth/services/auth.service.ts"],"names":[],"mappings":";;;;AAAA,2CAAkJ;AAClJ,6CAAmD;AACnD,qCAAqC;AACrC,iEAA+D;AAC/D,+DAA6D;AAC7D,uEAAkE;AAClE,yDAS8B;AAC9B,qCAAmC;AACnC,+CAA2C;AAC3C,iEAA6D;AAC7D,yDAAsD;AACtD,sFAAiF;AACjF,2EAAuE;AAQvE,yCAA8C;AAE9C,2EAAsE;AACtE,yEAAmE;AACnE,+EAAyE;AACzE,iFAA2E;AAC3E,iEAA4D;AAC5D,yEAAmE;AACnE,6FAAuF;AACvF,yEAAoE;AAEpE,uGAAiG;AACjG,yEAAqE;AACrE,mFAA8E;AAC9E,4DAA4B;AAIrB,IAAM,WAAW,GAAjB,MAAM,WAAW;IAEpB,YAEqB,cAAwC,EAGjD,aAAsC,EAE7B,oBAAiD,EAEjD,UAAsB,EAEtB,cAAkC,EAElC,UAAsB,EAEtB,YAA2B,EAE3B,aAA4B,EAE5B,WAA+B;QAjB/B,mBAAc,GAAd,cAAc,CAA0B;QAGjD,kBAAa,GAAb,aAAa,CAAyB;QAE7B,yBAAoB,GAApB,oBAAoB,CAA6B;QAEjD,eAAU,GAAV,UAAU,CAAY;QAEtB,mBAAc,GAAd,cAAc,CAAoB;QAElC,eAAU,GAAV,UAAU,CAAY;QAEtB,iBAAY,GAAZ,YAAY,CAAe;QAE3B,kBAAa,GAAb,aAAa,CAAe;QAE5B,gBAAW,GAAX,WAAW,CAAoB;IAGpD,CAAC;IAED,8BAA8B,CAAC,MAAc,EAAE,YAAsB,EAAE;QACnE,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;YAC/B,KAAK,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE;YACrB,SAAS,EAAE;gBACP,OAAO;gBACP,GAAG,SAAS;aACf;SACJ,CAAC,CAAC;IACP,CAAC;IAED,KAAK,CAAC,OAAO;QACT,MAAM,IAAI,GAAG,gCAAc,CAAC,WAAW,EAAE,CAAC;QAC1C,IAAI,CAAC,IAAI,EAAE,CAAC;YACR,OAAO,IAAI,CAAA;QACf,CAAC;QACD,OAAO,IAAI,CAAC,8BAA8B,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACxD,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAAuB;QAChC,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,QAAQ,EAAE,aAAa,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;QAEtI,IAAI,CAAC;YAED,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;YAEzC,IAAI,EAAE,QAAQ,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC;YAGhC,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;YAC9D,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,QAAQ,EAAE,aAAa,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,gBAAgB,EAAE,QAAQ,EAAE,CAAC,CAAC;YAEpH,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC;gBACnB,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,iDAAiD,EAAE,aAAa,CAAC,CAAC;gBACzF,MAAM,IAAI,4BAAmB,CAAC,wCAAwC,CAAC,CAAC;YAC5E,CAAC;YAED,IAAI,QAAQ,GAA4B,IAAI,CAAC;YAC7C,IAAI,cAAc,GAAkB,IAAI,CAAC;YAEzC,IAAI,KAAK,EAAE,CAAC;gBACR,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,oCAAmB,CAAC,CAAC;gBACtE,cAAc,GAAG,KAAK,CAAC;YAC3B,CAAC;iBAAM,IAAI,KAAK,EAAE,CAAC;gBACf,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,oCAAmB,CAAC,CAAC;gBACtE,cAAc,GAAG,KAAK,CAAC;YAC3B,CAAC;YAED,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACZ,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,+BAA+B,EAAE,aAAa,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;gBAC3G,MAAM,IAAI,qCAA4B,CAAC,8CAA8C,CAAC,CAAC;YAC3F,CAAC;YAED,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,gCAAgC,EAAE,aAAa,EAAE,EAAE,cAAc,EAAE,CAAC,CAAC;YAC5F,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;YAE7D,IAAI,QAAQ,EAAE,CAAC;gBACX,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,yBAAyB,EAAE,aAAa,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;gBAC9G,IAAI,KAAK,EAAE,CAAC;oBACR,MAAM,IAAI,4BAAmB,CAAC,qCAAqC,CAAC,CAAC;gBACzE,CAAC;gBACD,IAAI,KAAK,EAAE,CAAC;oBACR,MAAM,IAAI,4BAAmB,CAAC,4CAA4C,CAAC,CAAC;gBAChF,CAAC;YACL,CAAC;YAED,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,mBAAmB,EAAE,aAAa,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;YACzG,IAAI,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;gBAClC,KAAK;gBACL,KAAK;gBACL,QAAQ;gBACR,UAAU,EAAE,KAAK;aACpB,CAAC,CAAC;YACH,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;YACjC,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,2BAA2B,EAAE,aAAa,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;YAEjG,IAAI,GAAG,MAAM,IAAI,CAAC,8BAA8B,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAE1D,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,0BAA0B,EAAE,aAAa,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,UAAU,EAAE,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;YACxH,MAAM,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,cAAc,CAAC,CAAC;YAEnD,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,+BAA+B,EAAE,aAAa,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;YAC5F,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;YACtE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,yBAAyB,CAAC,OAAO,CAAC,CAAC;YAC7D,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACnE,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,yBAAyB,EAAE,aAAa,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,aAAa,EAAE,CAAC,CAAC;YAGrG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,kCAAkC,EAAE,aAAa,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;YAC/F,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAC7B,+BAAc,CAAC,UAAU,EACzB,IAAI,2CAAmB,CAAC;gBACpB,IAAI;gBACJ,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,KAAK;gBACL,QAAQ;gBACR,OAAO;gBACP,MAAM;gBACN,aAAa;aAChB,CAAC,CACL,CAAC;YAEF,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,QAAQ,EAAE,aAAa,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,aAAa,EAAE,CAAC,CAAC;YAC9F,OAAO;gBACH,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,YAAY,EAAE,MAAM,CAAC,YAAY;gBACjC,aAAa,EAAE,aAAa;aAC/B,CAAC;QAEN,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;YACvF,MAAM,KAAK,CAAC;QAChB,CAAC;IACL,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,KAAsB;QAC9B,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,qBAAqB,GAAG,KAAK,EAAE,GAAG,KAAK,CAAC;QACzE,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,OAAO,EAAE,aAAa,EAAE,EAAE,UAAU,EAAE,qBAAqB,EAAE,CAAC,CAAC;QACjG,IAAI,EAAE,QAAQ,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC;QAGhC,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QAC9D,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE,gBAAgB,EAAE,QAAQ,EAAE,qBAAqB,EAAE,CAAC,CAAC;QAEzH,MAAM,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QAEnE,IAAI,CAAC,QAAQ,EAAE,CAAC;YACZ,MAAM,IAAI,8BAAqB,CAAC,8DAA8D,CAAC,CAAC;QACpG,CAAC;QAED,MAAM,cAAc,GAAG,QAAQ,CAAC,iBAAiB,EAAE,CAAC;QAEpD,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;YACrD,MAAM,IAAI,4BAAmB,CAAC,WAAW,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAC1F,CAAC;QAED,MAAM,gBAAgB,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QAE9D,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,YAAY,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAEtE,IAAI,IAAI,GAAwB,QAAQ,EAAE,IAAI,IAAI,IAAI,CAAC;QAEvD,IAAI,CAAC,IAAI,EAAE,CAAC;YACR,IAAI,CAAC,qBAAqB,EAAE,CAAC;gBACzB,MAAM,IAAI,8BAAqB,CAAC,qBAAqB,CAAC,CAAC;YAC3D,CAAC;YAED,IAAI,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,gBAAgB,EAAE,QAAQ,CAAC,CAAC;QAC9E,CAAC;QAED,IAAI,IAAI,CAAC,QAAQ,KAAK,KAAK,EAAE,CAAC;YAC1B,MAAM,IAAI,8BAAqB,CAAC;gBAC5B,OAAO,EAAE,mDAAmD;gBAC5D,IAAI,EAAE,sCAAqB;aAC9B,CAAC,CAAC;QACP,CAAC;QAED,IAAI,GAAG,MAAM,IAAI,CAAC,8BAA8B,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAE1D,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;QACtE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,yBAAyB,CAAC,OAAO,CAAC,CAAC;QAE7D,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAGnE,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAC7B,+BAAc,CAAC,SAAS,EACxB,IAAI,wCAAiB,CAAC;YAClB,IAAI;YACJ,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,KAAK;YACL,QAAQ;YACR,OAAO;YACP,MAAM;YACN,aAAa;SAChB,CAAC,CACL,CAAC;QAEF,OAAO;YACH,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,aAAa,EAAE,aAAa;SAC/B,CAAC;IACN,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,KAA0B;QACtC,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,WAAW,EAAE,aAAa,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;QAExF,IAAI,CAAC;YACD,MAAM,OAAO,GAAG,gCAAc,CAAC,cAAc,EAAE,CAAC;YAEhD,IAAI,CAAC,OAAO,EAAE,CAAC;gBACX,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,wCAAwC,EAAE,aAAa,CAAC,CAAC;gBAChF,MAAM,IAAI,8BAAqB,CAAC;oBAC5B,OAAO,EAAE,mBAAmB;oBAC5B,IAAI,EAAE,wCAAuB;iBAChC,CAAC,CAAC;YACP,CAAC;YAED,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,oBAAoB,EAAE,aAAa,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;YAC9G,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;YACzF,IAAI,CAAC,OAAO,EAAE,CAAC;gBACX,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,2BAA2B,EAAE,aAAa,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;gBACpH,MAAM,IAAI,8BAAqB,CAAC;oBAC5B,OAAO,EAAE,kBAAkB;oBAC3B,IAAI,EAAE,2CAA0B;iBACnC,CAAC,CAAC;YACP,CAAC;YAED,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,wCAAwC,EAAE,aAAa,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;YAC3G,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,EAAE;gBAChE,IAAI,EAAE;oBACF,GAAG,OAAO,CAAC,IAAI;oBACf,aAAa,EAAE,IAAI;iBACtB;aACJ,CAAC,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,yBAAyB,CAAC,OAAO,CAAC,CAAC;YAE7D,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;YAGlC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,6BAA6B,EAAE,aAAa,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;YAC1F,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAC7B,+BAAc,CAAC,mBAAmB,EAClC,IAAI,8CAAoB,CAAC;gBACrB,IAAI;gBACJ,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,KAAK;gBACL,OAAO;gBACP,MAAM;aACT,CAAC,CACL,CAAC;YAEF,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,WAAW,EAAE,aAAa,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;YAClF,OAAO;gBACH,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,YAAY,EAAE,MAAM,CAAC,YAAY;aACpC,CAAC;QAEN,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,EAAE,WAAW,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;YACxE,MAAM,KAAK,CAAC;QAChB,CAAC;IACL,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,MAAc,EAAE,MAAqB;QACnD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;QAE1E,IAAI,CAAC,IAAI,EAAE,CAAC;YACR,MAAM,IAAI,8BAAqB,CAAC,gBAAgB,CAAC,CAAC;QACtD,CAAC;QAED,MAAM,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QAEnD,OAAO,IAAI,CAAC;IAChB,CAAC;IAEO,KAAK,CAAC,iBAAiB,CAC3B,QAA0B,EAC1B,YAA8B,EAC9B,QAAwB;QAIxB,IAAI,QAAQ,GAAG,MAAM,QAAQ,CAAC,YAAY,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QAEhE,IAAI,QAAQ,EAAE,CAAC;YACX,OAAO,QAAQ,CAAC,IAAI,CAAC;QACzB,CAAC;QAED,MAAM,YAAY,GAAG,QAAQ,CAAC,YAAY,EAAE,CAAC;QAE7C,IAAI,IAAI,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,YAAY,CAAC,EAAE,YAAY,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAEjG,IAAI,CAAC,IAAI,EAAE,CAAC;YAER,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;gBAC9B,CAAC,YAAY,CAAC,EAAE,YAAY,CAAC,MAAM;gBACnC,UAAU,EAAE,IAAI;gBAChB,QAAQ,EAAE,YAAY,CAAC,QAAQ,IAAI,EAAE;gBACrC,QAAQ,EAAE,QAAQ;aACrB,CAAC,CAAC;YACH,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzC,CAAC;QAED,MAAM,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,YAAY,CAAC,MAAM,EAAE,YAAY,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;QAErF,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,YAAoB;QACnC,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,cAAc,EAAE,aAAa,EAAE,EAAE,eAAe,EAAE,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC;QAEtG,IAAI,CAAC;YACD,IAAI,CAAC,YAAY,EAAE,CAAC;gBAChB,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,2BAA2B,EAAE,aAAa,CAAC,CAAC;gBACnE,MAAM,IAAI,8BAAqB,CAAC;oBAC5B,OAAO,EAAE,2BAA2B;oBACpC,IAAI,EAAE,sCAAqB;iBAC9B,CAAC,CAAC;YACP,CAAC;YAED,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,yBAAyB,EAAE,aAAa,CAAC,CAAC;YACjE,IAAI,OAAwB,CAAC;YAC7B,IAAI,CAAC;gBACD,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;YAC9D,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,kCAAkC,EAAE,aAAa,CAAC,CAAC;gBACzE,MAAM,IAAI,8BAAqB,CAAC;oBAC5B,OAAO,EAAE,kCAAkC;oBAC3C,IAAI,EAAE,sCAAqB;iBAC9B,CAAC,CAAC;YACP,CAAC;YAED,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAExE,IAAI,CAAC,OAAO,EAAE,CAAC;gBACX,MAAM,IAAI,8BAAqB,CAAC;oBAC5B,OAAO,EAAE,uBAAuB;oBAChC,IAAI,EAAE,sCAAqB;iBAC9B,CAAC,CAAC;YACP,CAAC;YAGD,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC;YAG/E,MAAM,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAGpD,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,8CAA8C,EAAE,aAAa,EAAE,EAAE,SAAS,EAAE,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC;YACpH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,yBAAyB,CAAC,UAAU,CAAC,CAAC;YAGhE,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,8BAA8B,EAAE,aAAa,EAAE,EAAE,SAAS,EAAE,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC;YACpG,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAC7B,+BAAc,CAAC,aAAa,EAC5B,IAAI,gDAAqB,CAAC;gBACtB,eAAe,EAAE,YAAY;gBAC7B,OAAO,EAAE,UAAU;gBACnB,MAAM;aACT,CAAC,CACL,CAAC;YAEF,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,cAAc,EAAE,aAAa,EAAE,EAAE,SAAS,EAAE,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC;YAC9F,OAAO,MAAM,CAAC;QAElB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,EAAE,cAAc,EAAE,EAAE,eAAe,EAAE,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC;YACtF,MAAM,KAAK,CAAC;QAChB,CAAC;IACL,CAAC;IAGD,KAAK,CAAC,cAAc,CAAC,KAA+B;QAChD,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,aAAa,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;QAE/G,IAAI,CAAC;YACD,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC;YAC/B,IAAI,EAAE,QAAQ,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC;YAGhC,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;YAC9D,IAAI,QAAQ,GAA4B,IAAI,CAAC;YAE7C,IAAI,KAAK,EAAE,CAAC;gBACR,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,oCAAmB,CAAC,CAAC;YAC1E,CAAC;iBAAM,IAAI,KAAK,EAAE,CAAC;gBACf,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,oCAAmB,CAAC,CAAC;YAC1E,CAAC;iBAAM,CAAC;gBACJ,MAAM,IAAI,4BAAmB,CAAC,wCAAwC,CAAC,CAAC;YAC5E,CAAC;YAED,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACZ,MAAM,IAAI,4BAAmB,CAAC,8CAA8C,CAAC,CAAC;YAClF,CAAC;YAED,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;gBACpB,IAAI,KAAK,EAAE,CAAC;oBACR,MAAM,IAAI,4BAAmB,CAAC,qCAAqC,CAAC,CAAC;gBACzE,CAAC;qBAAM,IAAI,KAAK,EAAE,CAAC;oBACf,MAAM,IAAI,4BAAmB,CAAC,qCAAqC,CAAC,CAAC;gBACzE,CAAC;YACL,CAAC;YAED,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,YAAY,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC;YAE7D,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAEZ,OAAO,EAAE,OAAO,EAAE,4DAA4D,EAAE,CAAC;YACrF,CAAC;YAGD,MAAM,GAAG,GAAG,IAAA,iBAAW,GAAE,CAAC;YAC1B,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;YAC7B,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC;YAGlD,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;gBAC5C,MAAM,EAAE,QAAQ,CAAC,IAAI,EAAE,EAAE;gBACzB,IAAI,EAAE,GAAG;gBACT,SAAS;gBACT,IAAI,EAAE,2BAAW,CAAC,cAAc;aACnC,CAAC,CAAC;YAIH,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAC7B,+BAAc,CAAC,wBAAwB,EACvC,IAAI,4DAA2B,CAAC;gBAC5B,IAAI,EAAE,QAAQ,CAAC,IAAI;gBACnB,QAAQ,EAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ;gBACjC,KAAK;gBACL,GAAG,EAAE,SAAS;gBACd,QAAQ;aACX,CAAC,CACL,CAAC;YAEF,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,gBAAgB,EAAE,aAAa,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;YACtG,OAAO,IAAI,CAAC;QAEhB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,EAAE,gBAAgB,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;YAC/F,MAAM,KAAK,CAAC;QAChB,CAAC;IACL,CAAC;IAED,KAAK,CAAC,uBAAuB,CAAC,KAAwC;QAClE,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,yBAAyB,EAAE,aAAa,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;QACxH,IAAI,CAAC;YACD,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC;YACpC,IAAI,EAAE,QAAQ,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC;YAGhC,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;YAE9D,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC;gBACnB,MAAM,IAAI,4BAAmB,CAAC,wCAAwC,CAAC,CAAC;YAC5E,CAAC;YAED,IAAI,QAAQ,GAA4B,IAAI,CAAC;YAE7C,IAAI,KAAK,EAAE,CAAC;gBACR,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,oCAAmB,CAAC,CAAC;YAC1E,CAAC;iBAAM,IAAI,KAAK,EAAE,CAAC;gBACf,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,oCAAmB,CAAC,CAAC;YAC1E,CAAC;YAED,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACZ,MAAM,IAAI,4BAAmB,CAAC,8CAA8C,CAAC,CAAC;YAClF,CAAC;YAED,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,YAAY,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC;YAE7D,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACZ,MAAM,IAAI,4BAAmB,CAAC,uBAAuB,CAAC,CAAC;YAC3D,CAAC;YAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;gBAC9C,KAAK,EAAE;oBACH,MAAM,EAAE,QAAQ,CAAC,IAAI,EAAE,EAAE;oBACzB,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,2BAAW,CAAC,cAAc;oBAChC,IAAI,EAAE,KAAK;iBACd;aACJ,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACZ,MAAM,IAAI,4BAAmB,CAAC,kBAAkB,CAAC,CAAC;YACtD,CAAC;YACD,IAAI,IAAA,gBAAM,EAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,CAAC;gBAClD,MAAM,IAAI,4BAAmB,CAAC,kBAAkB,CAAC,CAAC;YACtD,CAAC;YAED,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,yBAAyB,EAAE,aAAa,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;YACvH,OAAO,IAAI,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,EAAE,yBAAyB,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;YACxG,MAAM,KAAK,CAAC;QAChB,CAAC;IACL,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,KAA8B;QAC9C,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,eAAe,EAAE,aAAa,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;QAE9G,IAAI,CAAC;YACD,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC;YACjD,IAAI,EAAE,QAAQ,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC;YAGhC,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;YAE9D,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC;gBACnB,MAAM,IAAI,4BAAmB,CAAC,wCAAwC,CAAC,CAAC;YAC5E,CAAC;YAGD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;gBAC3C,KAAK,EAAE;oBACH,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;oBACvC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;iBAC1C;aACJ,CAAC,CAAC;YAEH,IAAI,CAAC,IAAI,EAAE,CAAC;gBACR,MAAM,IAAI,4BAAmB,CAAC,uBAAuB,CAAC,CAAC;YAC3D,CAAC;YAGD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;gBAC9C,KAAK,EAAE;oBACH,MAAM,EAAE,IAAI,CAAC,EAAE;oBACf,IAAI,EAAE,GAAG;oBACT,IAAI,EAAE,2BAAW,CAAC,cAAc;oBAChC,SAAS,EAAE,IAAA,kBAAQ,EAAC,IAAI,IAAI,EAAE,CAAC;oBAC/B,IAAI,EAAE,KAAK;iBACd;aACJ,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACZ,MAAM,IAAI,4BAAmB,CAAC,wBAAwB,CAAC,CAAC;YAC5D,CAAC;YAGD,MAAM,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;YACpC,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAGrC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC;YACrB,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAGxC,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAC7B,+BAAc,CAAC,cAAc,EAC7B,IAAI,yCAAkB,CAAC;gBACnB,IAAI;gBACJ,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,KAAK;aACR,CAAC,CACL,CAAC;YAEF,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,eAAe,EAAE,aAAa,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;YACrG,OAAO,IAAI,CAAC;QAEhB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,EAAE,eAAe,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;YAC9F,MAAM,KAAK,CAAC;QAChB,CAAC;IACL,CAAC;IAGD,KAAK,CAAC,MAAM,CAAC,aAA0C,MAAM,EAAE,MAAe;QAC1E,MAAM,OAAO,GAAG,gCAAc,CAAC,cAAc,EAAE,CAAC;QAEhD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QAGlC,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAC7B,+BAAc,CAAC,UAAU,EACzB,IAAI,iCAAc,CAAC;YACf,IAAI;YACJ,QAAQ,EAAE,IAAI,EAAE,QAAQ;YACxB,OAAO;YACP,UAAU;YACV,MAAM;SACT,CAAC,CACL,CAAC;QAEF,IAAI,OAAO,EAAE,CAAC;YACV,MAAM,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACxD,CAAC;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,MAAc,EAAE,aAA0C,MAAM,EAAE,MAAe;QAC7F,MAAM,OAAO,GAAG,gCAAc,CAAC,cAAc,EAAE,CAAC;QAChD,IAAI,CAAC,OAAO,EAAE,CAAC;YACX,MAAM,IAAI,8BAAqB,CAAC,mBAAmB,CAAC,CAAC;QACzD,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QAEnE,MAAM,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAErD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QAGlC,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAC7B,+BAAc,CAAC,cAAc,EAC7B,IAAI,wCAAiB,CAAC;YAClB,IAAI;YACJ,QAAQ,EAAE,IAAI,EAAE,QAAQ;YACxB,UAAU;YACV,MAAM;YACN,gBAAgB,EAAE,OAAO,CAAC,EAAE;YAC5B,QAAQ;SACX,CAAC,CACL,CAAC;QAEF,OAAO,IAAI,CAAC;IAChB,CAAC;IAIO,qBAAqB,CAAC,OAAuB,EAAE,eAAyC,EAAE;QAE9F,MAAM,OAAO,GAAoB;YAC7B,EAAE,EAAE,OAAO,CAAC,MAAM;YAClB,GAAG,EAAE,OAAO,CAAC,MAAM;YACnB,SAAS,EAAE,OAAO,CAAC,EAAE;YACrB,KAAK,EAAE,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK;YAChC,KAAK,EAAE,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK;YAChC,UAAU,EAAE,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU;YAC1C,KAAK,EAAE,OAAO,CAAC,IAAI,EAAE,KAAK;YAC1B,QAAQ,EAAE,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ;YACtC,YAAY,EAAE,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,YAAY;YAC9C,aAAa,EAAE,OAAO,CAAC,IAAI,EAAE,aAAa;YAC1C,GAAG,YAAY;SAClB,CAAC;QAEF,OAAO,OAAO,CAAC;IACnB,CAAC;IAEO,KAAK,CAAC,yBAAyB,CAAC,OAAuB;QAC3D,MAAM,OAAO,GAAG,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;QACpD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QAC7D,OAAO,MAAM,CAAA;IACjB,CAAC;CACJ,CAAA;AA/oBY,kCAAW;sBAAX,WAAW;IADvB,IAAA,mBAAU,GAAE;IAIJ,mBAAA,IAAA,0BAAgB,EAAC,0BAAY,CAAC,CAAA;IAG9B,mBAAA,IAAA,0BAAgB,EAAC,wBAAW,CAAC,CAAA;6CAFG,oBAAU;QAGpB,oBAAU;QAEM,4DAA2B;QAErC,wBAAU;QAEN,yCAAkB;QAEtB,wBAAU;QAER,6BAAa;QAEZ,8BAAa;QAEf,yCAAkB;GArB3C,WAAW,CA+oBvB"}
@@ -1,9 +0,0 @@
1
- import { Response } from 'express';
2
- export declare class CookieService {
3
- private options;
4
- constructor();
5
- setAccessTokenCookie(response: Response, token: string): void;
6
- setRefreshTokenCookie(response: Response, token: string): void;
7
- clearCookies(response: Response): void;
8
- setTokens(response: Response, accessToken: string, refreshToken: string): void;
9
- }
@@ -1,43 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CookieService = void 0;
4
- const tslib_1 = require("tslib");
5
- const common_1 = require("@nestjs/common");
6
- const auth_constants_1 = require("../../auth.constants");
7
- const ms_1 = tslib_1.__importDefault(require("ms"));
8
- const auth_config_service_1 = require("../../core/services/auth-config.service");
9
- let CookieService = class CookieService {
10
- constructor() {
11
- this.options = auth_config_service_1.AuthConfigService.getOptions();
12
- }
13
- setAccessTokenCookie(response, token) {
14
- response.cookie(auth_constants_1.ACCESS_TOKEN_COOKIE_NAME, token, {
15
- httpOnly: true,
16
- secure: this.options.cookieOptions.secure,
17
- sameSite: this.options.cookieOptions.sameSite,
18
- maxAge: (0, ms_1.default)(this.options.session.sessionExpiry),
19
- });
20
- }
21
- setRefreshTokenCookie(response, token) {
22
- response.cookie(auth_constants_1.REFRESH_TOKEN_COOKIE_NAME, token, {
23
- httpOnly: true,
24
- secure: this.options.cookieOptions.secure,
25
- sameSite: this.options.cookieOptions.sameSite,
26
- maxAge: (0, ms_1.default)(this.options.session.refreshTokenExpiry),
27
- });
28
- }
29
- clearCookies(response) {
30
- response.clearCookie(auth_constants_1.ACCESS_TOKEN_COOKIE_NAME);
31
- response.clearCookie(auth_constants_1.REFRESH_TOKEN_COOKIE_NAME);
32
- }
33
- setTokens(response, accessToken, refreshToken) {
34
- this.setAccessTokenCookie(response, accessToken);
35
- this.setRefreshTokenCookie(response, refreshToken);
36
- }
37
- };
38
- exports.CookieService = CookieService;
39
- exports.CookieService = CookieService = tslib_1.__decorate([
40
- (0, common_1.Injectable)(),
41
- tslib_1.__metadata("design:paramtypes", [])
42
- ], CookieService);
43
- //# sourceMappingURL=cookie.service.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cookie.service.js","sourceRoot":"","sources":["../../../../../../../packages/nest-auth/src/lib/auth/services/cookie.service.ts"],"names":[],"mappings":";;;;AAAA,2CAA4C;AAE5C,yDAA2F;AAE3F,oDAAoB;AACpB,iFAA4E;AAGrE,IAAM,aAAa,GAAnB,MAAM,aAAa;IAGtB;QACI,IAAI,CAAC,OAAO,GAAG,uCAAiB,CAAC,UAAU,EAAE,CAAC;IAClD,CAAC;IAED,oBAAoB,CAAC,QAAkB,EAAE,KAAa;QAClD,QAAQ,CAAC,MAAM,CAAC,yCAAwB,EAAE,KAAK,EAAE;YAC7C,QAAQ,EAAE,IAAI;YACd,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM;YACzC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,QAAQ;YAC7C,MAAM,EAAE,IAAA,YAAE,EAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC;SACjD,CAAC,CAAC;IACP,CAAC;IAED,qBAAqB,CAAC,QAAkB,EAAE,KAAa;QACnD,QAAQ,CAAC,MAAM,CAAC,0CAAyB,EAAE,KAAK,EAAE;YAC9C,QAAQ,EAAE,IAAI;YACd,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM;YACzC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,QAAQ;YAC7C,MAAM,EAAE,IAAA,YAAE,EAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC;SACtD,CAAC,CAAC;IACP,CAAC;IAED,YAAY,CAAC,QAAkB;QAC3B,QAAQ,CAAC,WAAW,CAAC,yCAAwB,CAAC,CAAC;QAC/C,QAAQ,CAAC,WAAW,CAAC,0CAAyB,CAAC,CAAC;IACpD,CAAC;IAED,SAAS,CAAC,QAAkB,EAAE,WAAmB,EAAE,YAAoB;QACnE,IAAI,CAAC,oBAAoB,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;QACjD,IAAI,CAAC,qBAAqB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IACvD,CAAC;CACJ,CAAA;AAlCY,sCAAa;wBAAb,aAAa;IADzB,IAAA,mBAAU,GAAE;;GACA,aAAa,CAkCzB"}
@@ -1,38 +0,0 @@
1
- import { Repository } from 'typeorm';
2
- import { NestAuthMFASecret } from '../../auth/entities/mfa-secret.entity';
3
- import { MFAMethodEnum, MFAOptions } from '../../core/interfaces/mfa-options.interface';
4
- import { NestAuthUser } from '../../user/entities/user.entity';
5
- import { NestAuthOTP } from '../../auth/entities/otp.entity';
6
- export declare class MfaService {
7
- private mfaSecretRepository;
8
- private userRepository;
9
- private otpRepository;
10
- mfaConfig: MFAOptions;
11
- constructor(mfaSecretRepository: Repository<NestAuthMFASecret>, userRepository: Repository<NestAuthUser>, otpRepository: Repository<NestAuthOTP>);
12
- checkIsMfaEnabledForApp(throwError?: boolean): boolean;
13
- getEnabledMethods(userId: string): Promise<MFAMethodEnum[]>;
14
- sendMfaCode(userId: string, method: MFAMethodEnum): Promise<boolean>;
15
- verifyMfa(userId: string, inputOtp: string, method: MFAMethodEnum): Promise<boolean>;
16
- setupTotpDevice(userId: string, deviceName?: string): Promise<{
17
- secret: string;
18
- qrCode: string;
19
- }>;
20
- verifyTotpSetup(userId: string, secret: string, inputOtp: string): Promise<boolean>;
21
- getTotpDevices(userId: string): Promise<{
22
- id: string;
23
- deviceName: string;
24
- lastUsedAt: Date;
25
- verified: boolean;
26
- }[]>;
27
- removeDevice(deviceId: string): Promise<void>;
28
- isRequiresMfa(userId: string): Promise<boolean>;
29
- isMfaEnabled(userId: string): Promise<boolean>;
30
- markAsVerified(userId: string, deviceId: string): Promise<void>;
31
- enableMFA(userId: string): Promise<void>;
32
- disableMFA(userId: string): Promise<void>;
33
- removeTotpDevice(deviceId: string): Promise<void>;
34
- generateRecoveryCode(userId: string): Promise<string>;
35
- resetMfa(userId: string, code: string): Promise<{
36
- message: string;
37
- }>;
38
- }