@ackplus/nest-auth 0.1.51 → 1.1.1

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
package/README.md CHANGED
@@ -1,518 +1,11 @@
1
- # Nest Auth
1
+ # nest-auth
2
2
 
3
- A comprehensive authentication module for NestJS applications.
3
+ This library was generated with [Nx](https://nx.dev).
4
4
 
5
- ## Table of Contents
5
+ ## Building
6
6
 
7
- - [Installation](#installation)
8
- - [Quick Start](#quick-start)
9
- - [Configuration](#configuration)
10
- - [Database Setup](#database-setup)
11
- - [Testing](#testing)
12
- - [Authentication Providers](#authentication-providers)
13
- - [API Documentation](#api-documentation)
14
- - [Contributing](#contributing)
15
- - [License](#license)
7
+ Run `nx build nest-auth` to build the library.
16
8
 
17
- ## Installation
9
+ ## Running unit tests
18
10
 
19
- ```bash
20
- yarn add @ackplus/nest-auth
21
- ```
22
-
23
- ## Quick Start
24
-
25
- ```typescript
26
- import { NestAuthModule } from '@ackplus/nest-auth';
27
-
28
- @Module({
29
- imports: [
30
- NestAuthModule.forRoot({
31
- jwt: {
32
- secret: 'your-secret-key',
33
- },
34
- emailAuth: {
35
- enabled: true,
36
- },
37
- // ... other options
38
- }),
39
- ],
40
- })
41
- export class AppModule {}
42
- ```
43
-
44
- ## Configuration
45
-
46
- ### Basic Configuration
47
-
48
- ```typescript
49
- import { NestAuthModule } from '@ackplus/nest-auth';
50
-
51
- @Module({
52
- imports: [
53
- NestAuthModule.forRoot({
54
- jwt: {
55
- secret: 'your-secret-key',
56
- accessTokenExpiresIn: '15m',
57
- refreshTokenExpiresIn: '7d',
58
- },
59
- emailAuth: {
60
- enabled: true,
61
- },
62
- phoneAuth: {
63
- enabled: false,
64
- },
65
- mfa: {
66
- enabled: true,
67
- allowUserToggle: true,
68
- },
69
- isGlobal: true,
70
- }),
71
- ],
72
- })
73
- export class AppModule {}
74
- ```
75
-
76
- ### Async Configuration
77
-
78
- The module supports async configuration using three different approaches:
79
-
80
- #### Option 1: Using `useFactory`
81
-
82
- ```typescript
83
- import { ConfigModule, ConfigService } from '@nestjs/config';
84
- import { NestAuthModule } from '@ackplus/nest-auth';
85
-
86
- @Module({
87
- imports: [
88
- ConfigModule.forRoot(),
89
- NestAuthModule.forRootAsync({
90
- imports: [ConfigModule],
91
- useFactory: (configService: ConfigService) => ({
92
- jwt: {
93
- secret: configService.get<string>('JWT_SECRET'),
94
- accessTokenExpiresIn: configService.get<string>('JWT_ACCESS_EXPIRES_IN', '15m'),
95
- refreshTokenExpiresIn: configService.get<string>('JWT_REFRESH_EXPIRES_IN', '7d'),
96
- },
97
- emailAuth: {
98
- enabled: configService.get<boolean>('EMAIL_AUTH_ENABLED', true),
99
- },
100
- phoneAuth: {
101
- enabled: configService.get<boolean>('PHONE_AUTH_ENABLED', false),
102
- },
103
- isGlobal: true,
104
- }),
105
- inject: [ConfigService],
106
- }),
107
- ],
108
- })
109
- export class AppModule {}
110
- ```
111
-
112
- #### Option 2: Using `useClass`
113
-
114
- ```typescript
115
- import { Injectable } from '@nestjs/common';
116
- import { ConfigService } from '@nestjs/config';
117
- import { NestAuthModule, AuthModuleOptionsFactory, AuthModuleOptions } from '@ackplus/nest-auth';
118
-
119
- @Injectable()
120
- export class AuthConfigFactory implements AuthModuleOptionsFactory {
121
- constructor(private configService: ConfigService) {}
122
-
123
- createAuthModuleOptions(): AuthModuleOptions {
124
- return {
125
- jwt: {
126
- secret: this.configService.get<string>('JWT_SECRET'),
127
- accessTokenExpiresIn: this.configService.get<string>('JWT_ACCESS_EXPIRES_IN', '15m'),
128
- refreshTokenExpiresIn: this.configService.get<string>('JWT_REFRESH_EXPIRES_IN', '7d'),
129
- },
130
- emailAuth: {
131
- enabled: this.configService.get<boolean>('EMAIL_AUTH_ENABLED', true),
132
- },
133
- phoneAuth: {
134
- enabled: this.configService.get<boolean>('PHONE_AUTH_ENABLED', false),
135
- },
136
- mfa: {
137
- enabled: this.configService.get<boolean>('MFA_ENABLED', false),
138
- },
139
- isGlobal: true,
140
- };
141
- }
142
- }
143
-
144
- @Module({
145
- imports: [
146
- ConfigModule.forRoot(),
147
- NestAuthModule.forRootAsync({
148
- imports: [ConfigModule],
149
- useClass: AuthConfigFactory,
150
- }),
151
- ],
152
- })
153
- export class AppModule {}
154
- ```
155
-
156
- #### Option 3: Using `useExisting`
157
-
158
- ```typescript
159
- // First, provide the factory in another module
160
- @Module({
161
- imports: [ConfigModule],
162
- providers: [AuthConfigFactory],
163
- exports: [AuthConfigFactory],
164
- })
165
- export class AuthConfigModule {}
166
-
167
- // Then, use it in your app module
168
- @Module({
169
- imports: [
170
- AuthConfigModule,
171
- NestAuthModule.forRootAsync({
172
- imports: [AuthConfigModule],
173
- useExisting: AuthConfigFactory,
174
- }),
175
- ],
176
- })
177
- export class AppModule {}
178
- ```
179
-
180
- ### Database Configuration
181
-
182
- The module supports both PostgreSQL and SQLite databases. Configure your database connection using the `DATABASE_URL` environment variable:
183
-
184
- ```bash
185
- # For PostgreSQL
186
- DATABASE_URL=postgresql://user:password@localhost:5432/dbname
187
-
188
- # For SQLite
189
- DATABASE_URL=:memory: # For in-memory database
190
- DATABASE_URL=./database.sqlite # For file-based database
191
- ```
192
-
193
- ### Environment Variables
194
-
195
- | Variable | Description | Default |
196
- |----------|-------------|---------|
197
- | `DATABASE_URL` | Database connection URL | `:memory:` |
198
- | `NODE_ENV` | Application environment | `development` |
199
- | `JWT_SECRET` | JWT signing secret | `secret` |
200
- | `JWT_ACCESS_EXPIRES_IN` | Access token expiration | `15m` |
201
- | `JWT_REFRESH_EXPIRES_IN` | Refresh token expiration | `7d` |
202
- | `EMAIL_AUTH_ENABLED` | Enable email authentication | `true` |
203
- | `PHONE_AUTH_ENABLED` | Enable phone authentication | `false` |
204
- | `MFA_ENABLED` | Enable multi-factor authentication | `false` |
205
-
206
- ### Module Options
207
-
208
- ```typescript
209
- interface AuthModuleOptions {
210
- isGlobal?: boolean;
211
- jwt: {
212
- secret: string;
213
- accessTokenExpiresIn?: string | number;
214
- refreshTokenExpiresIn?: string | number;
215
- };
216
- emailAuth?: {
217
- enabled: boolean;
218
- };
219
- phoneAuth?: {
220
- enabled: boolean;
221
- };
222
- mfa?: {
223
- enabled: boolean;
224
- allowUserToggle?: boolean;
225
- allowMethodSelection?: boolean;
226
- otpLength?: number;
227
- otpExpiresIn?: string | number;
228
- };
229
- google?: {
230
- clientId: string;
231
- clientSecret: string;
232
- redirectUri: string;
233
- };
234
- facebook?: {
235
- appId: string;
236
- appSecret: string;
237
- redirectUri: string;
238
- };
239
- apple?: {
240
- clientId: string;
241
- teamId: string;
242
- keyId: string;
243
- privateKey: string;
244
- redirectUri: string;
245
- };
246
- // ... other options
247
- }
248
- ```
249
-
250
- ## Database Setup
251
-
252
- ### PostgreSQL
253
-
254
- 1. Create a new database:
255
- ```sql
256
- CREATE DATABASE your_database;
257
- ```
258
-
259
- 2. Run migrations:
260
- ```bash
261
- yarn typeorm migration:run -d src/typeorm.config.ts
262
- ```
263
-
264
- ### SQLite
265
-
266
- No setup required. The database will be created automatically.
267
-
268
- ## Testing
269
-
270
- ### Local Development
271
-
272
- 1. For PostgreSQL:
273
- ```bash
274
- DATABASE_URL=postgresql://user:password@localhost:5432/testdb yarn test
275
- ```
276
-
277
- 2. For SQLite:
278
- ```bash
279
- DATABASE_URL=:memory: yarn test
280
- ```
281
-
282
- ### CI/CD (GitHub Actions)
283
-
284
- The tests run automatically in GitHub Actions using SQLite for faster execution. No additional setup required.
285
-
286
- ## Authentication Providers
287
-
288
- ### Email Authentication
289
-
290
- ```typescript
291
- @Post('login')
292
- async login(@Body() loginDto: LoginRequestDto) {
293
- return this.authService.login({
294
- providerId: 'email',
295
- credentials: {
296
- email: loginDto.email,
297
- password: loginDto.password,
298
- },
299
- });
300
- }
301
- ```
302
-
303
- ### Phone Authentication
304
-
305
- ```typescript
306
- @Post('login')
307
- async login(@Body() loginDto: LoginRequestDto) {
308
- return this.authService.login({
309
- providerId: 'phone',
310
- credentials: {
311
- phone: loginDto.phone,
312
- password: loginDto.password,
313
- },
314
- });
315
- }
316
- ```
317
-
318
- ## API Documentation
319
-
320
- ### Authentication Endpoints
321
-
322
- | Endpoint | Method | Description |
323
- |----------|--------|-------------|
324
- | `/auth/login` | POST | Login with credentials |
325
- | `/auth/register` | POST | Register new user |
326
- | `/auth/refresh` | POST | Refresh access token |
327
- | `/auth/logout` | POST | Logout user |
328
-
329
- ### Request/Response Examples
330
-
331
- #### Login Request
332
- ```json
333
- {
334
- "providerId": "email",
335
- "credentials": {
336
- "email": "user@example.com",
337
- "password": "password123"
338
- }
339
- }
340
- ```
341
-
342
- #### Login Response
343
- ```json
344
- {
345
- "accessToken": "eyJhbGciOiJIUzI1NiIs...",
346
- "refreshToken": "eyJhbGciOiJIUzI1NiIs...",
347
- "isRequiresMfa": false
348
- }
349
- ```
350
-
351
- ## Contributing
352
-
353
- 1. Fork the repository
354
- 2. Create your feature branch (`git checkout -b feature/amazing-feature`)
355
- 3. Commit your changes (`git commit -m 'Add some amazing feature'`)
356
- 4. Push to the branch (`git push origin feature/amazing-feature`)
357
- 5. Open a Pull Request
358
-
359
- ### Development Setup
360
-
361
- 1. Clone the repository
362
- 2. Install dependencies:
363
- ```bash
364
- yarn install
365
- ```
366
-
367
- 3. Set up the database:
368
- ```bash
369
- # For PostgreSQL
370
- DATABASE_URL=postgresql://user:password@localhost:5432/testdb
371
-
372
- # For SQLite
373
- DATABASE_URL=:memory:
374
- ```
375
-
376
- 4. Run tests:
377
- ```bash
378
- yarn test
379
- ```
380
-
381
- ### Testing Guidelines
382
-
383
- - Write tests for all new features
384
- - Ensure tests pass in both PostgreSQL and SQLite
385
- - Follow the existing test patterns
386
- - Use appropriate test fixtures
387
-
388
- ## Default Tenant Configuration
389
-
390
- The nest-auth package supports automatic default tenant creation and usage. When configured, a default tenant will be created during module initialization and used when no explicit tenant ID is provided.
391
-
392
- ### Basic Configuration
393
-
394
- ```typescript
395
- NestAuthModule.forRoot({
396
- jwt: { secret: 'your-secret' },
397
- defaultTenant: {
398
- name: 'My Default Organization',
399
- domain: 'default_example', // Required
400
- description: 'Default tenant', // Optional
401
- metadata: { plan: 'basic' } // Optional
402
- },
403
- // ... other options
404
- })
405
- ```
406
-
407
- ### Benefits
408
-
409
- - **Simplified single-tenant apps**: Start with one tenant, expand to multi-tenant later
410
- - **Automatic tenant resolution**: No need to specify tenant ID in auth operations
411
- - **Backward compatibility**: Existing apps can add this without breaking changes
412
-
413
- For detailed examples and configuration options, see the Default Tenant Configuration section above.
414
-
415
- ## Debug Logging
416
-
417
- The nest-auth package includes comprehensive debug logging to help you troubleshoot issues during development. Debug logging is configurable and can provide detailed insights into authentication flows, user operations, and more.
418
-
419
- ### Enable Debug Logging
420
-
421
- ```typescript
422
- NestAuthModule.forRoot({
423
- jwt: { secret: 'your-secret' },
424
- debug: {
425
- enabled: true,
426
- level: 'debug', // 'error' | 'warn' | 'info' | 'debug' | 'verbose'
427
- prefix: '[NestAuth]',
428
- includeTimestamp: true,
429
- includeContext: true
430
- },
431
- // ... other options
432
- })
433
- ```
434
-
435
- ### Debug Configuration Options
436
-
437
- - **`enabled`** (default: `false`): Enable/disable debug logging
438
- - **`level`** (default: `'info'`): Log level - controls which messages are shown
439
- - **`prefix`** (default: `'[NestAuth]'`): Prefix for all log messages
440
- - **`includeTimestamp`** (default: `true`): Include timestamp in log messages
441
- - **`includeContext`** (default: `true`): Include context (service name) in log messages
442
-
443
- ### Log Levels
444
-
445
- - **`error`**: Only error messages
446
- - **`warn`**: Errors and warnings
447
- - **`info`**: Errors, warnings, and info messages
448
- - **`debug`**: All above plus debug messages
449
- - **`verbose`**: All messages including verbose debugging
450
-
451
- ### What Gets Logged
452
-
453
- With debug logging enabled, you'll see detailed information about:
454
-
455
- #### User Operations
456
- - User creation attempts and results
457
- - User lookup operations
458
- - Identity creation and linking
459
- - User validation steps
460
-
461
- #### Authentication Operations
462
- - Login attempts with provider information
463
- - Signup processes step-by-step
464
- - Token generation and validation
465
- - Session creation and management
466
- - MFA verification processes
467
-
468
- #### Tenant Operations
469
- - Default tenant resolution
470
- - Tenant creation and lookup
471
- - Multi-tenant routing decisions
472
-
473
- #### Error Handling
474
- - Detailed error contexts with stack traces
475
- - Input data that caused errors (sensitive data masked)
476
- - Operation states when errors occurred
477
-
478
- ### Example Debug Output
479
-
480
- ```
481
- [NestAuth] [2024-01-15T10:30:45.123Z] [AuthService] Entering function: signup | Data: {
482
- "params": {
483
- "email": "user@example.com",
484
- "hasPassword": true
485
- }
486
- }
487
-
488
- [NestAuth] [2024-01-15T10:30:45.125Z] [AuthService] Auth Operation: signup | Data: {
489
- "operation": "signup",
490
- "providerId": "email|phone",
491
- "email": "user@example.com",
492
- "resolvedTenantId": "tenant-123"
493
- }
494
-
495
- [NestAuth] [2024-01-15T10:30:45.127Z] [UserService] User Operation: createUser | Data: {
496
- "operation": "createUser",
497
- "email": true,
498
- "resolvedTenantId": "tenant-123"
499
- }
500
- ```
501
-
502
- ### Development vs Production
503
-
504
- - **Development**: Use `debug` or `verbose` level for detailed troubleshooting
505
- - **Production**: Use `error` or `warn` level, or disable entirely for performance
506
-
507
- ### Performance Considerations
508
-
509
- Debug logging adds minimal overhead when disabled. When enabled at `debug` or `verbose` levels, there is some performance impact due to:
510
- - JSON serialization of data objects
511
- - Additional function calls
512
- - Console I/O operations
513
-
514
- For production use, consider using `info` level or lower.
515
-
516
- ## License
517
-
518
- This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
11
+ Run `nx test nest-auth` to execute the unit tests via [Jest](https://jestjs.io).
@@ -0,0 +1,59 @@
1
+ import { FlatCompat } from '@eslint/eslintrc';
2
+ import js from '@eslint/js';
3
+ import nxPlugin from '@nx/eslint-plugin';
4
+
5
+ const compat = new FlatCompat({
6
+ baseDirectory: import.meta.dirname,
7
+ recommendedConfig: js.configs.recommended,
8
+ });
9
+
10
+ export default [
11
+ {
12
+ plugins: {
13
+ '@nx': nxPlugin,
14
+ },
15
+ },
16
+ {
17
+ files: ['**/*.ts', '**/*.tsx', '**/*.js', '**/*.jsx'],
18
+ rules: {
19
+ '@nx/enforce-module-boundaries': [
20
+ 'error',
21
+ {
22
+ enforceBuildableLibDependency: true,
23
+ allow: ['^.*/eslint(\\.base)?\\.config\\.[cm]?js$'],
24
+ depConstraints: [
25
+ {
26
+ sourceTag: '*',
27
+ onlyDependOnLibsWithTags: ['*'],
28
+ },
29
+ ],
30
+ },
31
+ ],
32
+ },
33
+ },
34
+ {
35
+ files: ['**/*.ts', '**/*.tsx'],
36
+ rules: {},
37
+ },
38
+ {
39
+ files: ['**/*.js', '**/*.jsx'],
40
+ rules: {},
41
+ },
42
+ {
43
+ files: ['**/*.json'],
44
+ rules: {
45
+ '@nx/dependency-checks': [
46
+ 'error',
47
+ {
48
+ ignoredFiles: ['{projectRoot}/eslint.config.{js,cjs,mjs,ts,cts,mts}'],
49
+ },
50
+ ],
51
+ },
52
+ languageOptions: {
53
+ parser: await import('jsonc-eslint-parser'),
54
+ },
55
+ },
56
+ {
57
+ ignores: ['**/out-tsc', '**/dist', '**/build', '**/.nx', '**/node_modules', '**/static'],
58
+ },
59
+ ];
package/jest.config.ts ADDED
@@ -0,0 +1,10 @@
1
+ export default {
2
+ displayName: 'nest-auth',
3
+ preset: '../../jest.preset.js',
4
+ testEnvironment: 'node',
5
+ transform: {
6
+ '^.+\\.[tj]s$': ['ts-jest', { tsconfig: '<rootDir>/tsconfig.spec.json' }],
7
+ },
8
+ moduleFileExtensions: ['ts', 'js', 'html'],
9
+ coverageDirectory: '../../coverage/packages/nest-auth',
10
+ };
package/package.json CHANGED
@@ -1,56 +1,26 @@
1
1
  {
2
2
  "name": "@ackplus/nest-auth",
3
- "version": "0.1.51",
3
+ "version": "1.1.1",
4
4
  "type": "commonjs",
5
5
  "main": "./src/index.js",
6
6
  "types": "./src/index.d.ts",
7
- "license": "MIT",
8
- "repository": {
9
- "type": "git",
10
- "url": "https://github.com/ack-solutions/packages.git"
11
- },
12
- "publishConfig": {
13
- "access": "public"
14
- },
15
- "homepage": "https://github.com/ack-solutions/packages.git#readme",
16
- "peerDependencies": {
17
- "typeorm": "^0.3.23",
18
- "@nestjs/typeorm": "^11.0.0",
19
- "@nestjs/common": "^10.4.5"
20
- },
21
7
  "dependencies": {
22
- "deepmerge": "4.3.1",
8
+ "@nestjs/common": "^11.0.0",
9
+ "@nestjs/core": "^11.0.0",
10
+ "@nestjs/platform-express": "^11.0.0",
11
+ "@nestjs/swagger": "^11.0.0",
12
+ "@nestjs/typeorm": "^11.0.0",
13
+ "argon2": "^0.44.0",
23
14
  "class-transformer": "^0.5.1",
24
15
  "class-validator": "^0.14.1",
25
- "pluralize": "8.0.0",
26
- "lodash": "^4.17.21",
16
+ "express": "^4.18.2",
17
+ "jsonwebtoken": "^9.0.2",
18
+ "ms": "^2.1.3",
19
+ "reflect-metadata": "^0.1.13",
27
20
  "rxjs": "^7.8.0",
28
- "bcrypt": "^5.1.0",
29
- "passport": "^0.6.0",
30
- "passport-jwt": "^4.0.1",
31
- "uuid": "^9.0.0",
32
- "google-auth-library": "^9.0.0",
33
- "fb": "^2.0.0",
34
- "apple-auth": "^1.0.0",
35
21
  "speakeasy": "^2.0.0",
36
- "qrcode": "^1.5.3"
37
- },
38
- "devDependencies": {
39
- "@nestjs/common": "^10.4.5",
40
- "@nestjs/swagger": "^7.4.2",
41
22
  "tslib": "^2.3.0",
42
- "typeorm": "^0.3.23",
43
- "@nestjs/typeorm": "^11.0.0",
44
- "@nestjs/testing": "^10.0.0",
45
- "@types/bcrypt": "^5.0.0",
46
- "@types/jest": "^29.0.0",
47
- "@types/node": "^20.0.0",
48
- "@types/passport-jwt": "^3.0.8",
49
- "@types/uuid": "^9.0.0",
50
- "@types/speakeasy": "^2.0.0",
51
- "@types/qrcode": "^1.5.5",
52
- "jest": "^29.0.0",
53
- "ts-jest": "^29.0.0",
54
- "typescript": "^5.0.0"
23
+ "typeorm": "^0.3.21",
24
+ "uuid": "^11.0.5"
55
25
  }
56
- }
26
+ }