@ackplus/nest-auth 1.1.0 → 1.1.2

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 (645) hide show
  1. package/package.json +2 -2
  2. package/src/{index.ts → index.d.ts} +2 -18
  3. package/src/index.d.ts.map +1 -0
  4. package/src/index.js +24 -0
  5. package/src/lib/admin-console/admin-console.module.d.ts +3 -0
  6. package/src/lib/admin-console/admin-console.module.d.ts.map +1 -0
  7. package/src/lib/admin-console/admin-console.module.js +69 -0
  8. package/src/lib/admin-console/controllers/admin-auth.controller.d.ts +134 -0
  9. package/src/lib/admin-console/controllers/admin-auth.controller.d.ts.map +1 -0
  10. package/src/lib/admin-console/controllers/admin-auth.controller.js +374 -0
  11. package/src/lib/admin-console/controllers/admin-console.controller.d.ts +14 -0
  12. package/src/lib/admin-console/controllers/admin-console.controller.d.ts.map +1 -0
  13. package/src/lib/admin-console/controllers/admin-console.controller.js +87 -0
  14. package/src/lib/admin-console/controllers/admin-permissions.controller.d.ts +86 -0
  15. package/src/lib/admin-console/controllers/admin-permissions.controller.d.ts.map +1 -0
  16. package/src/lib/admin-console/controllers/admin-permissions.controller.js +195 -0
  17. package/src/lib/admin-console/controllers/admin-roles.controller.d.ts +47 -0
  18. package/src/lib/admin-console/controllers/admin-roles.controller.d.ts.map +1 -0
  19. package/src/lib/admin-console/controllers/admin-roles.controller.js +95 -0
  20. package/src/lib/admin-console/controllers/admin-tenants.controller.d.ts +44 -0
  21. package/src/lib/admin-console/controllers/admin-tenants.controller.d.ts.map +1 -0
  22. package/src/lib/admin-console/controllers/admin-tenants.controller.js +86 -0
  23. package/src/lib/admin-console/controllers/admin-users.controller.d.ts +146 -0
  24. package/src/lib/admin-console/controllers/admin-users.controller.d.ts.map +1 -0
  25. package/src/lib/admin-console/controllers/admin-users.controller.js +400 -0
  26. package/src/lib/admin-console/decorators/current-admin.decorator.d.ts +2 -0
  27. package/src/lib/admin-console/decorators/current-admin.decorator.d.ts.map +1 -0
  28. package/src/lib/admin-console/decorators/current-admin.decorator.js +8 -0
  29. package/src/lib/admin-console/dto/admin-permission.dto.d.ts +16 -0
  30. package/src/lib/admin-console/dto/admin-permission.dto.d.ts.map +1 -0
  31. package/src/lib/admin-console/dto/admin-permission.dto.js +123 -0
  32. package/src/lib/admin-console/dto/admin-role.dto.d.ts +13 -0
  33. package/src/lib/admin-console/dto/admin-role.dto.d.ts.map +1 -0
  34. package/src/lib/admin-console/dto/admin-role.dto.js +53 -0
  35. package/src/lib/admin-console/dto/admin-tenant.dto.d.ts +13 -0
  36. package/src/lib/admin-console/dto/admin-tenant.dto.d.ts.map +1 -0
  37. package/src/lib/admin-console/dto/admin-tenant.dto.js +57 -0
  38. package/src/lib/admin-console/dto/admin-user.dto.d.ts +21 -0
  39. package/src/lib/admin-console/dto/admin-user.dto.d.ts.map +1 -0
  40. package/src/lib/admin-console/dto/admin-user.dto.js +94 -0
  41. package/src/lib/admin-console/dto/create-dashboard-admin.dto.d.ts +10 -0
  42. package/src/lib/admin-console/dto/create-dashboard-admin.dto.d.ts.map +1 -0
  43. package/src/lib/admin-console/dto/create-dashboard-admin.dto.js +39 -0
  44. package/src/lib/admin-console/dto/login.dto.d.ts +5 -0
  45. package/src/lib/admin-console/dto/login.dto.d.ts.map +1 -0
  46. package/src/lib/admin-console/dto/login.dto.js +17 -0
  47. package/src/lib/admin-console/dto/reset-password.dto.d.ts +6 -0
  48. package/src/lib/admin-console/dto/reset-password.dto.d.ts.map +1 -0
  49. package/src/lib/admin-console/dto/reset-password.dto.js +26 -0
  50. package/src/lib/admin-console/dto/setup-admin.dto.d.ts +7 -0
  51. package/src/lib/admin-console/dto/setup-admin.dto.d.ts.map +1 -0
  52. package/src/lib/admin-console/dto/setup-admin.dto.js +29 -0
  53. package/src/lib/admin-console/dto/signup.dto.d.ts +8 -0
  54. package/src/lib/admin-console/dto/signup.dto.d.ts.map +1 -0
  55. package/src/lib/admin-console/dto/signup.dto.js +58 -0
  56. package/src/lib/admin-console/entities/admin-user.entity.d.ts +16 -0
  57. package/src/lib/admin-console/entities/admin-user.entity.d.ts.map +1 -0
  58. package/src/lib/admin-console/entities/admin-user.entity.js +86 -0
  59. package/src/lib/admin-console/guards/admin-session.guard.d.ts +17 -0
  60. package/src/lib/admin-console/guards/admin-session.guard.d.ts.map +1 -0
  61. package/src/lib/admin-console/guards/admin-session.guard.js +40 -0
  62. package/src/lib/admin-console/services/admin-auth.service.d.ts +22 -0
  63. package/src/lib/admin-console/services/admin-auth.service.d.ts.map +1 -0
  64. package/src/lib/admin-console/services/admin-auth.service.js +77 -0
  65. package/src/lib/admin-console/services/admin-console-config.service.d.ts +17 -0
  66. package/src/lib/admin-console/services/admin-console-config.service.d.ts.map +1 -0
  67. package/src/lib/admin-console/services/admin-console-config.service.js +58 -0
  68. package/src/lib/admin-console/services/admin-session.service.d.ts +27 -0
  69. package/src/lib/admin-console/services/admin-session.service.d.ts.map +1 -0
  70. package/src/lib/admin-console/services/admin-session.service.js +94 -0
  71. package/src/lib/admin-console/services/admin-user.service.d.ts +24 -0
  72. package/src/lib/admin-console/services/admin-user.service.d.ts.map +1 -0
  73. package/src/lib/admin-console/services/admin-user.service.js +87 -0
  74. package/src/lib/auth/auth.module.d.ts +3 -0
  75. package/src/lib/auth/auth.module.d.ts.map +1 -0
  76. package/src/lib/auth/auth.module.js +64 -0
  77. package/src/lib/auth/controllers/auth.controller.d.ts +67 -0
  78. package/src/lib/auth/controllers/auth.controller.d.ts.map +1 -0
  79. package/src/lib/auth/controllers/auth.controller.js +471 -0
  80. package/src/lib/auth/controllers/mfa.controller.d.ts +34 -0
  81. package/src/lib/auth/controllers/mfa.controller.d.ts.map +1 -0
  82. package/src/lib/auth/controllers/mfa.controller.js +230 -0
  83. package/src/lib/auth/dto/credentials/email-credentials.dto.d.ts +8 -0
  84. package/src/lib/auth/dto/credentials/email-credentials.dto.d.ts.map +1 -0
  85. package/src/lib/auth/dto/credentials/email-credentials.dto.js +31 -0
  86. package/src/lib/auth/dto/credentials/phone-credentials.dto.d.ts +8 -0
  87. package/src/lib/auth/dto/credentials/phone-credentials.dto.d.ts.map +1 -0
  88. package/src/lib/auth/dto/credentials/phone-credentials.dto.js +31 -0
  89. package/src/lib/auth/dto/credentials/social-credentials.dto.d.ts +7 -0
  90. package/src/lib/auth/dto/credentials/social-credentials.dto.d.ts.map +1 -0
  91. package/src/lib/auth/dto/credentials/social-credentials.dto.js +21 -0
  92. package/src/lib/auth/dto/index.d.ts +1 -0
  93. package/src/lib/auth/dto/index.d.ts.map +1 -0
  94. package/src/lib/auth/dto/index.js +0 -0
  95. package/src/lib/auth/dto/requests/change-password.request.dto.d.ts +5 -0
  96. package/src/lib/auth/dto/requests/change-password.request.dto.d.ts.map +1 -0
  97. package/src/lib/auth/dto/requests/change-password.request.dto.js +42 -0
  98. package/src/lib/auth/dto/requests/forgot-password.request.dto.d.ts +6 -0
  99. package/src/lib/auth/dto/requests/forgot-password.request.dto.d.ts.map +1 -0
  100. package/src/lib/auth/dto/requests/forgot-password.request.dto.js +38 -0
  101. package/src/lib/auth/dto/requests/initialize-admin.request.dto.d.ts +8 -0
  102. package/src/lib/auth/dto/requests/initialize-admin.request.dto.d.ts.map +1 -0
  103. package/src/lib/auth/dto/requests/initialize-admin.request.dto.js +58 -0
  104. package/src/lib/auth/dto/requests/login.request.dto.d.ts +13 -0
  105. package/src/lib/auth/dto/requests/login.request.dto.d.ts.map +1 -0
  106. package/src/lib/auth/dto/requests/login.request.dto.js +75 -0
  107. package/src/lib/auth/dto/requests/refresh-token.request.dto.d.ts +4 -0
  108. package/src/lib/auth/dto/requests/refresh-token.request.dto.d.ts.map +1 -0
  109. package/src/lib/auth/dto/requests/refresh-token.request.dto.js +18 -0
  110. package/src/lib/auth/dto/requests/reset-password-with-token.request.dto.d.ts +5 -0
  111. package/src/lib/auth/dto/requests/reset-password-with-token.request.dto.d.ts.map +1 -0
  112. package/src/lib/auth/dto/requests/reset-password-with-token.request.dto.js +29 -0
  113. package/src/lib/auth/dto/requests/reset-password.request.dto.d.ts +8 -0
  114. package/src/lib/auth/dto/requests/reset-password.request.dto.d.ts.map +1 -0
  115. package/src/lib/auth/dto/requests/reset-password.request.dto.js +60 -0
  116. package/src/lib/auth/dto/requests/send-email-verification.request.dto.d.ts +4 -0
  117. package/src/lib/auth/dto/requests/send-email-verification.request.dto.d.ts.map +1 -0
  118. package/src/lib/auth/dto/requests/send-email-verification.request.dto.js +18 -0
  119. package/src/lib/auth/dto/requests/send-mfa-code.request.dto.d.ts +5 -0
  120. package/src/lib/auth/dto/requests/send-mfa-code.request.dto.d.ts.map +1 -0
  121. package/src/lib/auth/dto/requests/send-mfa-code.request.dto.js +25 -0
  122. package/src/lib/auth/dto/requests/signup.request.dto.d.ts +8 -0
  123. package/src/lib/auth/dto/requests/signup.request.dto.d.ts.map +1 -0
  124. package/src/lib/auth/dto/requests/signup.request.dto.js +49 -0
  125. package/src/lib/auth/dto/requests/toggle-mfa.request.dto.d.ts +4 -0
  126. package/src/lib/auth/dto/requests/toggle-mfa.request.dto.d.ts.map +1 -0
  127. package/src/lib/auth/dto/requests/toggle-mfa.request.dto.js +18 -0
  128. package/src/lib/auth/dto/requests/verify-2fa.request.dto.d.ts +6 -0
  129. package/src/lib/auth/dto/requests/verify-2fa.request.dto.d.ts.map +1 -0
  130. package/src/lib/auth/dto/requests/verify-2fa.request.dto.js +31 -0
  131. package/src/lib/auth/dto/requests/verify-email.request.dto.d.ts +5 -0
  132. package/src/lib/auth/dto/requests/verify-email.request.dto.d.ts.map +1 -0
  133. package/src/lib/auth/dto/requests/verify-email.request.dto.js +29 -0
  134. package/src/lib/auth/dto/requests/verify-forgot-password-otp-request-dto.d.ts +7 -0
  135. package/src/lib/auth/dto/requests/verify-forgot-password-otp-request-dto.d.ts.map +1 -0
  136. package/src/lib/auth/dto/requests/verify-forgot-password-otp-request-dto.js +49 -0
  137. package/src/lib/auth/dto/requests/verify-totp-setup.request.dto.d.ts +5 -0
  138. package/src/lib/auth/dto/requests/verify-totp-setup.request.dto.d.ts.map +1 -0
  139. package/src/lib/auth/dto/requests/verify-totp-setup.request.dto.js +29 -0
  140. package/src/lib/auth/dto/responses/auth-cookie.response.dto.d.ts +41 -0
  141. package/src/lib/auth/dto/responses/auth-cookie.response.dto.d.ts.map +1 -0
  142. package/src/lib/auth/dto/responses/{auth-cookie.response.dto.ts → auth-cookie.response.dto.js} +18 -11
  143. package/src/lib/auth/dto/responses/auth-success.response.dto.d.ts +41 -0
  144. package/src/lib/auth/dto/responses/auth-success.response.dto.d.ts.map +1 -0
  145. package/src/lib/auth/dto/responses/{auth-success.response.dto.ts → auth-success.response.dto.js} +18 -11
  146. package/src/lib/auth/dto/responses/auth.response.dto.d.ts +40 -0
  147. package/src/lib/auth/dto/responses/auth.response.dto.d.ts.map +1 -0
  148. package/src/lib/auth/dto/responses/auth.response.dto.js +112 -0
  149. package/src/lib/auth/dto/responses/client-config.response.dto.d.ts +58 -0
  150. package/src/lib/auth/dto/responses/client-config.response.dto.d.ts.map +1 -0
  151. package/src/lib/auth/dto/responses/client-config.response.dto.js +202 -0
  152. package/src/lib/auth/dto/responses/initialize-admin.response.dto.d.ts +7 -0
  153. package/src/lib/auth/dto/responses/initialize-admin.response.dto.d.ts.map +1 -0
  154. package/src/lib/auth/dto/responses/initialize-admin.response.dto.js +30 -0
  155. package/src/lib/auth/dto/responses/mfa-code-response.dto.d.ts +7 -0
  156. package/src/lib/auth/dto/responses/mfa-code-response.dto.d.ts.map +1 -0
  157. package/src/lib/auth/dto/responses/mfa-code-response.dto.js +36 -0
  158. package/src/lib/auth/dto/responses/mfa-status.response.dto.d.ts +19 -0
  159. package/src/lib/auth/dto/responses/mfa-status.response.dto.d.ts.map +1 -0
  160. package/src/lib/auth/dto/responses/mfa-status.response.dto.js +108 -0
  161. package/src/lib/auth/dto/responses/verify-otp.response.dto.d.ts +5 -0
  162. package/src/lib/auth/dto/responses/verify-otp.response.dto.d.ts.map +1 -0
  163. package/src/lib/auth/dto/responses/verify-otp.response.dto.js +16 -0
  164. package/src/lib/auth/entities/mfa-secret.entity.d.ts +13 -0
  165. package/src/lib/auth/entities/mfa-secret.entity.d.ts.map +1 -0
  166. package/src/lib/auth/entities/mfa-secret.entity.js +49 -0
  167. package/src/lib/auth/entities/otp.entity.d.ts +14 -0
  168. package/src/lib/auth/entities/otp.entity.d.ts.map +1 -0
  169. package/src/lib/auth/entities/otp.entity.js +49 -0
  170. package/src/lib/auth/events/{logged-out-all.event.ts → logged-out-all.event.d.ts} +4 -6
  171. package/src/lib/auth/events/logged-out-all.event.d.ts.map +1 -0
  172. package/src/lib/auth/events/logged-out-all.event.js +9 -0
  173. package/src/lib/auth/events/{logged-out.event.ts → logged-out.event.d.ts} +4 -5
  174. package/src/lib/auth/events/logged-out.event.d.ts.map +1 -0
  175. package/src/lib/auth/events/logged-out.event.js +9 -0
  176. package/src/lib/auth/events/{password-reset-requested.event.ts → password-reset-requested.event.d.ts} +4 -6
  177. package/src/lib/auth/events/password-reset-requested.event.d.ts.map +1 -0
  178. package/src/lib/auth/events/password-reset-requested.event.js +9 -0
  179. package/src/lib/auth/events/{password-reset.event.ts → password-reset.event.d.ts} +4 -6
  180. package/src/lib/auth/events/password-reset.event.d.ts.map +1 -0
  181. package/src/lib/auth/events/password-reset.event.js +9 -0
  182. package/src/lib/auth/events/{user-2fa-verified.event.ts → user-2fa-verified.event.d.ts} +4 -6
  183. package/src/lib/auth/events/user-2fa-verified.event.d.ts.map +1 -0
  184. package/src/lib/auth/events/user-2fa-verified.event.js +9 -0
  185. package/src/lib/auth/events/{user-logged-in.event.ts → user-logged-in.event.d.ts} +4 -7
  186. package/src/lib/auth/events/user-logged-in.event.d.ts.map +1 -0
  187. package/src/lib/auth/events/user-logged-in.event.js +10 -0
  188. package/src/lib/auth/events/{user-refresh-token.event.ts → user-refresh-token.event.d.ts} +4 -6
  189. package/src/lib/auth/events/user-refresh-token.event.d.ts.map +1 -0
  190. package/src/lib/auth/events/user-refresh-token.event.js +9 -0
  191. package/src/lib/auth/events/{user-registered.event.ts → user-registered.event.d.ts} +4 -7
  192. package/src/lib/auth/events/user-registered.event.d.ts.map +1 -0
  193. package/src/lib/auth/events/user-registered.event.js +10 -0
  194. package/src/lib/auth/guards/auth.guard.d.ts +56 -0
  195. package/src/lib/auth/guards/auth.guard.d.ts.map +1 -0
  196. package/src/lib/auth/guards/{auth.guard.ts → auth.guard.js} +92 -135
  197. package/src/lib/auth/{index.ts → index.d.ts} +1 -13
  198. package/src/lib/auth/index.d.ts.map +1 -0
  199. package/src/lib/auth/index.js +51 -0
  200. package/src/lib/auth/interceptors/refresh-token.interceptor.d.ts +43 -0
  201. package/src/lib/auth/interceptors/refresh-token.interceptor.d.ts.map +1 -0
  202. package/src/lib/auth/interceptors/{refresh-token.interceptor.ts → refresh-token.interceptor.js} +38 -40
  203. package/src/lib/auth/services/auth.service.d.ts +67 -0
  204. package/src/lib/auth/services/auth.service.d.ts.map +1 -0
  205. package/src/lib/auth/services/{auth.service.ts → auth.service.js} +262 -475
  206. package/src/lib/auth/services/client-config.service.d.ts +12 -0
  207. package/src/lib/auth/services/client-config.service.d.ts.map +1 -0
  208. package/src/lib/auth/services/{client-config.service.ts → client-config.service.js} +28 -33
  209. package/src/lib/auth/services/cookie.service.d.ts +10 -0
  210. package/src/lib/auth/services/cookie.service.d.ts.map +1 -0
  211. package/src/lib/auth/services/cookie.service.js +42 -0
  212. package/src/lib/auth/services/mfa.service.d.ts +45 -0
  213. package/src/lib/auth/services/mfa.service.d.ts.map +1 -0
  214. package/src/lib/auth/services/{mfa.service.ts → mfa.service.js} +105 -184
  215. package/src/lib/auth.constants.d.ts +43 -0
  216. package/src/lib/auth.constants.d.ts.map +1 -0
  217. package/src/lib/auth.constants.js +54 -0
  218. package/src/lib/core/core.module.d.ts +7 -0
  219. package/src/lib/core/core.module.d.ts.map +1 -0
  220. package/src/lib/core/core.module.js +57 -0
  221. package/src/lib/core/decorators/{auth.decorator.ts → auth.decorator.d.ts} +2 -7
  222. package/src/lib/core/decorators/auth.decorator.d.ts.map +1 -0
  223. package/src/lib/core/decorators/auth.decorator.js +38 -0
  224. package/src/lib/core/decorators/permissions.decorator.d.ts +8 -0
  225. package/src/lib/core/decorators/permissions.decorator.d.ts.map +1 -0
  226. package/src/lib/core/decorators/permissions.decorator.js +18 -0
  227. package/src/lib/core/decorators/{public.decorator.ts → public.decorator.d.ts} +3 -5
  228. package/src/lib/core/decorators/public.decorator.d.ts.map +1 -0
  229. package/src/lib/core/decorators/public.decorator.js +35 -0
  230. package/src/lib/core/decorators/role.decorator.d.ts +4 -0
  231. package/src/lib/core/decorators/role.decorator.d.ts.map +1 -0
  232. package/src/lib/core/decorators/role.decorator.js +13 -0
  233. package/src/lib/core/decorators/skip-mfa.decorator.d.ts +3 -0
  234. package/src/lib/core/decorators/skip-mfa.decorator.d.ts.map +1 -0
  235. package/src/lib/core/decorators/skip-mfa.decorator.js +7 -0
  236. package/src/lib/core/dto/message.response.dto.d.ts +4 -0
  237. package/src/lib/core/dto/message.response.dto.d.ts.map +1 -0
  238. package/src/lib/core/dto/message.response.dto.js +12 -0
  239. package/src/lib/core/{entities.ts → entities.d.ts} +2 -14
  240. package/src/lib/core/entities.d.ts.map +1 -0
  241. package/src/lib/core/entities.js +37 -0
  242. package/src/lib/core/{index.ts → index.d.ts} +1 -15
  243. package/src/lib/core/index.d.ts.map +1 -0
  244. package/src/lib/core/index.js +35 -0
  245. package/src/lib/core/interfaces/{auth-module-options.interface.ts → auth-module-options.interface.d.ts} +13 -16
  246. package/src/lib/core/interfaces/auth-module-options.interface.d.ts.map +1 -0
  247. package/src/lib/core/interfaces/auth-module-options.interface.js +2 -0
  248. package/src/lib/core/interfaces/mfa-options.interface.d.ts +26 -0
  249. package/src/lib/core/interfaces/mfa-options.interface.d.ts.map +1 -0
  250. package/src/lib/core/interfaces/mfa-options.interface.js +9 -0
  251. package/src/lib/core/interfaces/otp.interface.d.ts +6 -0
  252. package/src/lib/core/interfaces/otp.interface.d.ts.map +1 -0
  253. package/src/lib/core/interfaces/otp.interface.js +9 -0
  254. package/src/lib/core/interfaces/session-options.interface.d.ts +16 -0
  255. package/src/lib/core/interfaces/session-options.interface.d.ts.map +1 -0
  256. package/src/lib/core/interfaces/session-options.interface.js +9 -0
  257. package/src/lib/core/interfaces/{token-payload.interface.ts → token-payload.interface.d.ts} +2 -4
  258. package/src/lib/core/interfaces/token-payload.interface.d.ts.map +1 -0
  259. package/src/lib/core/interfaces/token-payload.interface.js +2 -0
  260. package/src/lib/core/providers/apple-auth.provider.d.ts +19 -0
  261. package/src/lib/core/providers/apple-auth.provider.d.ts.map +1 -0
  262. package/src/lib/core/providers/apple-auth.provider.js +56 -0
  263. package/src/lib/core/providers/base-auth.provider.d.ts +33 -0
  264. package/src/lib/core/providers/base-auth.provider.d.ts.map +1 -0
  265. package/src/lib/core/providers/base-auth.provider.js +48 -0
  266. package/src/lib/core/providers/email-auth.provider.d.ts +31 -0
  267. package/src/lib/core/providers/email-auth.provider.d.ts.map +1 -0
  268. package/src/lib/core/providers/email-auth.provider.js +66 -0
  269. package/src/lib/core/providers/facebook-auth.provider.d.ts +19 -0
  270. package/src/lib/core/providers/facebook-auth.provider.d.ts.map +1 -0
  271. package/src/lib/core/providers/facebook-auth.provider.js +55 -0
  272. package/src/lib/core/providers/github-auth.provider.d.ts +24 -0
  273. package/src/lib/core/providers/github-auth.provider.d.ts.map +1 -0
  274. package/src/lib/core/providers/{github-auth.provider.ts → github-auth.provider.js} +31 -36
  275. package/src/lib/core/providers/google-auth.provider.d.ts +22 -0
  276. package/src/lib/core/providers/google-auth.provider.d.ts.map +1 -0
  277. package/src/lib/core/providers/google-auth.provider.js +57 -0
  278. package/src/lib/core/providers/jwt-auth.provider.d.ts +34 -0
  279. package/src/lib/core/providers/jwt-auth.provider.d.ts.map +1 -0
  280. package/src/lib/core/providers/jwt-auth.provider.js +49 -0
  281. package/src/lib/core/providers/phone-auth.provider.d.ts +19 -0
  282. package/src/lib/core/providers/phone-auth.provider.d.ts.map +1 -0
  283. package/src/lib/core/providers/phone-auth.provider.js +42 -0
  284. package/src/lib/core/services/auth-config.service.d.ts +39 -0
  285. package/src/lib/core/services/auth-config.service.d.ts.map +1 -0
  286. package/src/lib/core/services/auth-config.service.js +167 -0
  287. package/src/lib/core/services/auth-provider-registry.service.d.ts +42 -0
  288. package/src/lib/core/services/auth-provider-registry.service.d.ts.map +1 -0
  289. package/src/lib/core/services/auth-provider-registry.service.js +91 -0
  290. package/src/lib/core/services/debug-logger.service.d.ts +39 -0
  291. package/src/lib/core/services/debug-logger.service.d.ts.map +1 -0
  292. package/src/lib/core/services/{debug-logger.service.ts → debug-logger.service.js} +57 -88
  293. package/src/lib/core/services/initialization.service.d.ts +11 -0
  294. package/src/lib/core/services/initialization.service.d.ts.map +1 -0
  295. package/src/lib/core/services/initialization.service.js +35 -0
  296. package/src/lib/core/services/jwt.service.d.ts +23 -0
  297. package/src/lib/core/services/jwt.service.d.ts.map +1 -0
  298. package/src/lib/core/services/jwt.service.js +119 -0
  299. package/src/lib/nest-auth.module.d.ts +11 -0
  300. package/src/lib/nest-auth.module.d.ts.map +1 -0
  301. package/src/lib/nest-auth.module.js +144 -0
  302. package/src/lib/permission/entities/permission.entity.d.ts +27 -0
  303. package/src/lib/permission/entities/permission.entity.d.ts.map +1 -0
  304. package/src/lib/permission/entities/permission.entity.js +62 -0
  305. package/src/lib/permission/{index.ts → index.d.ts} +1 -1
  306. package/src/lib/permission/index.d.ts.map +1 -0
  307. package/src/lib/permission/index.js +6 -0
  308. package/src/lib/permission/permission.module.d.ts +3 -0
  309. package/src/lib/permission/permission.module.d.ts.map +1 -0
  310. package/src/lib/permission/permission.module.js +20 -0
  311. package/src/lib/permission/services/permission.service.d.ts +44 -0
  312. package/src/lib/permission/services/permission.service.d.ts.map +1 -0
  313. package/src/lib/permission/services/{permission.service.ts → permission.service.js} +48 -108
  314. package/src/lib/request-context/{index.ts → index.d.ts} +1 -0
  315. package/src/lib/request-context/index.d.ts.map +1 -0
  316. package/src/lib/request-context/index.js +5 -0
  317. package/src/lib/request-context/request-context.d.ts +23 -0
  318. package/src/lib/request-context/request-context.d.ts.map +1 -0
  319. package/src/lib/request-context/{request-context.ts → request-context.js} +26 -44
  320. package/src/lib/request-context/request-context.middleware.d.ts +5 -0
  321. package/src/lib/request-context/request-context.middleware.d.ts.map +1 -0
  322. package/src/lib/request-context/request-context.middleware.js +15 -0
  323. package/src/lib/role/entities/role.entity.d.ts +21 -0
  324. package/src/lib/role/entities/role.entity.d.ts.map +1 -0
  325. package/src/lib/role/entities/role.entity.js +110 -0
  326. package/src/lib/role/{index.ts → index.d.ts} +1 -2
  327. package/src/lib/role/index.d.ts.map +1 -0
  328. package/src/lib/role/index.js +5 -0
  329. package/src/lib/role/role.module.d.ts +3 -0
  330. package/src/lib/role/role.module.d.ts.map +1 -0
  331. package/src/lib/role/role.module.js +22 -0
  332. package/src/lib/role/services/role.service.d.ts +21 -0
  333. package/src/lib/role/services/role.service.d.ts.map +1 -0
  334. package/src/lib/role/services/{role.service.ts → role.service.js} +51 -107
  335. package/src/lib/session/entities/session.entity.d.ts +17 -0
  336. package/src/lib/session/entities/session.entity.d.ts.map +1 -0
  337. package/src/lib/session/entities/session.entity.js +62 -0
  338. package/src/lib/session/{index.ts → index.d.ts} +1 -11
  339. package/src/lib/session/index.d.ts.map +1 -0
  340. package/src/lib/session/index.js +18 -0
  341. package/src/lib/session/interfaces/{session-repository.interface.ts → session-repository.interface.d.ts} +1 -10
  342. package/src/lib/session/interfaces/session-repository.interface.d.ts.map +1 -0
  343. package/src/lib/session/interfaces/session-repository.interface.js +2 -0
  344. package/src/lib/session/repositories/{base-session.repository.ts → base-session.repository.d.ts} +7 -41
  345. package/src/lib/session/repositories/base-session.repository.d.ts.map +1 -0
  346. package/src/lib/session/repositories/base-session.repository.js +59 -0
  347. package/src/lib/session/repositories/memory-session.repository.d.ts +27 -0
  348. package/src/lib/session/repositories/memory-session.repository.d.ts.map +1 -0
  349. package/src/lib/session/repositories/{memory-session.repository.ts → memory-session.repository.js} +41 -61
  350. package/src/lib/session/repositories/redis-session.repository.d.ts +30 -0
  351. package/src/lib/session/repositories/redis-session.repository.d.ts.map +1 -0
  352. package/src/lib/session/repositories/{redis-session.repository.ts → redis-session.repository.js} +45 -75
  353. package/src/lib/session/repositories/typeorm-session.repository.d.ts +23 -0
  354. package/src/lib/session/repositories/typeorm-session.repository.d.ts.map +1 -0
  355. package/src/lib/session/repositories/typeorm-session.repository.js +79 -0
  356. package/src/lib/session/services/session-manager.service.d.ts +100 -0
  357. package/src/lib/session/services/session-manager.service.d.ts.map +1 -0
  358. package/src/lib/session/services/{session-manager.service.ts → session-manager.service.js} +54 -94
  359. package/src/lib/session/session.module.d.ts +14 -0
  360. package/src/lib/session/session.module.d.ts.map +1 -0
  361. package/src/lib/session/session.module.js +96 -0
  362. package/src/lib/session/utils/session.util.d.ts +73 -0
  363. package/src/lib/session/utils/session.util.d.ts.map +1 -0
  364. package/src/lib/session/utils/{session.util.ts → session.util.js} +24 -63
  365. package/src/lib/tenant/entities/{tenant.entity.ts → tenant.entity.d.ts} +2 -21
  366. package/src/lib/tenant/entities/tenant.entity.d.ts.map +1 -0
  367. package/src/lib/tenant/entities/tenant.entity.js +47 -0
  368. package/src/lib/tenant/events/tenant-created.event.d.ts +9 -0
  369. package/src/lib/tenant/events/tenant-created.event.d.ts.map +1 -0
  370. package/src/lib/tenant/events/tenant-created.event.js +9 -0
  371. package/src/lib/tenant/events/tenant-deleted.event.d.ts +9 -0
  372. package/src/lib/tenant/events/tenant-deleted.event.d.ts.map +1 -0
  373. package/src/lib/tenant/events/tenant-deleted.event.js +9 -0
  374. package/src/lib/tenant/events/tenant-updated.event.d.ts +10 -0
  375. package/src/lib/tenant/events/tenant-updated.event.d.ts.map +1 -0
  376. package/src/lib/tenant/events/tenant-updated.event.js +9 -0
  377. package/src/lib/tenant/{index.ts → index.d.ts} +1 -2
  378. package/src/lib/tenant/index.d.ts.map +1 -0
  379. package/src/lib/tenant/index.js +14 -0
  380. package/src/lib/tenant/services/tenant.service.d.ts +35 -0
  381. package/src/lib/tenant/services/tenant.service.d.ts.map +1 -0
  382. package/src/lib/tenant/services/{tenant.service.ts → tenant.service.js} +83 -137
  383. package/src/lib/tenant/tenant.module.d.ts +3 -0
  384. package/src/lib/tenant/tenant.module.d.ts.map +1 -0
  385. package/src/lib/tenant/tenant.module.js +26 -0
  386. package/src/lib/user/dto/requests/update-user.dto.d.ts +6 -0
  387. package/src/lib/user/dto/requests/update-user.dto.d.ts.map +1 -0
  388. package/src/lib/user/dto/requests/update-user.dto.js +23 -0
  389. package/src/lib/user/entities/access-key.entity.d.ts +17 -0
  390. package/src/lib/user/entities/access-key.entity.d.ts.map +1 -0
  391. package/src/lib/user/entities/access-key.entity.js +62 -0
  392. package/src/lib/user/entities/identity.entity.d.ts +13 -0
  393. package/src/lib/user/entities/identity.entity.d.ts.map +1 -0
  394. package/src/lib/user/entities/identity.entity.js +46 -0
  395. package/src/lib/user/entities/user.entity.d.ts +40 -0
  396. package/src/lib/user/entities/user.entity.d.ts.map +1 -0
  397. package/src/lib/user/entities/user.entity.js +218 -0
  398. package/src/lib/user/events/user-created.event.d.ts +10 -0
  399. package/src/lib/user/events/user-created.event.d.ts.map +1 -0
  400. package/src/lib/user/events/user-created.event.js +9 -0
  401. package/src/lib/user/events/user-deleted.event.d.ts +10 -0
  402. package/src/lib/user/events/user-deleted.event.d.ts.map +1 -0
  403. package/src/lib/user/events/user-deleted.event.js +9 -0
  404. package/src/lib/user/events/user-updated.event.d.ts +11 -0
  405. package/src/lib/user/events/user-updated.event.d.ts.map +1 -0
  406. package/src/lib/user/events/user-updated.event.js +9 -0
  407. package/src/lib/user/{index.ts → index.d.ts} +1 -5
  408. package/src/lib/user/index.d.ts.map +1 -0
  409. package/src/lib/user/index.js +12 -0
  410. package/src/lib/user/services/access-key.service.d.ts +20 -0
  411. package/src/lib/user/services/access-key.service.d.ts.map +1 -0
  412. package/src/lib/user/services/access-key.service.js +121 -0
  413. package/src/lib/user/services/user.service.d.ts +28 -0
  414. package/src/lib/user/services/user.service.d.ts.map +1 -0
  415. package/src/lib/user/services/{user.service.ts → user.service.js} +92 -164
  416. package/src/lib/user/user.module.d.ts +3 -0
  417. package/src/lib/user/user.module.d.ts.map +1 -0
  418. package/src/lib/user/user.module.js +33 -0
  419. package/src/lib/utils/database.utils.d.ts +3 -0
  420. package/src/lib/utils/database.utils.d.ts.map +1 -0
  421. package/src/lib/utils/database.utils.js +7 -0
  422. package/src/lib/utils/date.util.d.ts +41 -0
  423. package/src/lib/utils/date.util.d.ts.map +1 -0
  424. package/src/lib/utils/{date.util.ts → date.util.js} +28 -35
  425. package/src/lib/utils/device.util.d.ts +50 -0
  426. package/src/lib/utils/device.util.d.ts.map +1 -0
  427. package/src/lib/utils/device.util.js +114 -0
  428. package/src/lib/utils/{index.ts → index.d.ts} +1 -0
  429. package/src/lib/utils/index.d.ts.map +1 -0
  430. package/src/lib/utils/index.js +9 -0
  431. package/src/lib/utils/otp.d.ts +2 -0
  432. package/src/lib/utils/otp.d.ts.map +1 -0
  433. package/src/lib/utils/otp.js +6 -0
  434. package/src/lib/utils/security.util.d.ts +11 -0
  435. package/src/lib/utils/security.util.d.ts.map +1 -0
  436. package/src/lib/utils/{security.util.ts → security.util.js} +10 -9
  437. package/src/lib/utils/slug.util.d.ts +38 -0
  438. package/src/lib/utils/slug.util.d.ts.map +1 -0
  439. package/src/lib/utils/{slug.util.ts → slug.util.js} +10 -9
  440. package/eslint.config.mjs +0 -59
  441. package/jest.config.ts +0 -10
  442. package/project.json +0 -86
  443. package/src/lib/admin-console/admin-console.module.ts +0 -62
  444. package/src/lib/admin-console/controllers/admin-auth.controller.ts +0 -339
  445. package/src/lib/admin-console/controllers/admin-console.controller.ts +0 -82
  446. package/src/lib/admin-console/controllers/admin-permissions.controller.ts +0 -180
  447. package/src/lib/admin-console/controllers/admin-roles.controller.ts +0 -89
  448. package/src/lib/admin-console/controllers/admin-tenants.controller.ts +0 -68
  449. package/src/lib/admin-console/controllers/admin-users.controller.ts +0 -379
  450. package/src/lib/admin-console/decorators/current-admin.decorator.ts +0 -9
  451. package/src/lib/admin-console/dto/admin-permission.dto.ts +0 -106
  452. package/src/lib/admin-console/dto/admin-role.dto.ts +0 -45
  453. package/src/lib/admin-console/dto/admin-tenant.dto.ts +0 -43
  454. package/src/lib/admin-console/dto/admin-user.dto.ts +0 -87
  455. package/src/lib/admin-console/dto/create-dashboard-admin.dto.ts +0 -34
  456. package/src/lib/admin-console/dto/login.dto.ts +0 -10
  457. package/src/lib/admin-console/dto/reset-password.dto.ts +0 -21
  458. package/src/lib/admin-console/dto/setup-admin.dto.ts +0 -23
  459. package/src/lib/admin-console/dto/signup.dto.ts +0 -51
  460. package/src/lib/admin-console/entities/admin-user.entity.ts +0 -74
  461. package/src/lib/admin-console/guards/admin-session.guard.ts +0 -47
  462. package/src/lib/admin-console/services/admin-auth.service.ts +0 -82
  463. package/src/lib/admin-console/services/admin-console-config.service.ts +0 -62
  464. package/src/lib/admin-console/services/admin-session.service.ts +0 -106
  465. package/src/lib/admin-console/services/admin-user.service.ts +0 -96
  466. package/src/lib/auth/auth.module.ts +0 -58
  467. package/src/lib/auth/controllers/auth.controller.ts +0 -393
  468. package/src/lib/auth/controllers/mfa.controller.ts +0 -200
  469. package/src/lib/auth/dto/credentials/email-credentials.dto.ts +0 -24
  470. package/src/lib/auth/dto/credentials/phone-credentials.dto.ts +0 -24
  471. package/src/lib/auth/dto/credentials/social-credentials.dto.ts +0 -15
  472. package/src/lib/auth/dto/index.ts +0 -1
  473. package/src/lib/auth/dto/requests/change-password.request.dto.ts +0 -34
  474. package/src/lib/auth/dto/requests/forgot-password.request.dto.ts +0 -30
  475. package/src/lib/auth/dto/requests/initialize-admin.request.dto.ts +0 -51
  476. package/src/lib/auth/dto/requests/login.request.dto.ts +0 -65
  477. package/src/lib/auth/dto/requests/refresh-token.request.dto.ts +0 -12
  478. package/src/lib/auth/dto/requests/reset-password-with-token.request.dto.ts +0 -22
  479. package/src/lib/auth/dto/requests/reset-password.request.dto.ts +0 -50
  480. package/src/lib/auth/dto/requests/send-email-verification.request.dto.ts +0 -12
  481. package/src/lib/auth/dto/requests/send-mfa-code.request.dto.ts +0 -19
  482. package/src/lib/auth/dto/requests/signup.request.dto.ts +0 -42
  483. package/src/lib/auth/dto/requests/toggle-mfa.request.dto.ts +0 -12
  484. package/src/lib/auth/dto/requests/verify-2fa.request.dto.ts +0 -24
  485. package/src/lib/auth/dto/requests/verify-email.request.dto.ts +0 -22
  486. package/src/lib/auth/dto/requests/verify-forgot-password-otp-request-dto.ts +0 -41
  487. package/src/lib/auth/dto/requests/verify-totp-setup.request.dto.ts +0 -22
  488. package/src/lib/auth/dto/responses/auth.response.dto.ts +0 -99
  489. package/src/lib/auth/dto/responses/client-config.response.dto.ts +0 -153
  490. package/src/lib/auth/dto/responses/initialize-admin.response.dto.ts +0 -22
  491. package/src/lib/auth/dto/responses/mfa-code-response.dto.ts +0 -27
  492. package/src/lib/auth/dto/responses/mfa-status.response.dto.ts +0 -89
  493. package/src/lib/auth/dto/responses/verify-otp.response.dto.ts +0 -9
  494. package/src/lib/auth/entities/mfa-secret.entity.ts +0 -33
  495. package/src/lib/auth/entities/otp.entity.ts +0 -33
  496. package/src/lib/auth/services/cookie.service.ts +0 -43
  497. package/src/lib/auth.constants.ts +0 -63
  498. package/src/lib/core/core.module.ts +0 -50
  499. package/src/lib/core/decorators/permissions.decorator.ts +0 -17
  500. package/src/lib/core/decorators/role.decorator.ts +0 -12
  501. package/src/lib/core/decorators/skip-mfa.decorator.ts +0 -4
  502. package/src/lib/core/dto/message.response.dto.ts +0 -6
  503. package/src/lib/core/interfaces/mfa-options.interface.ts +0 -46
  504. package/src/lib/core/interfaces/otp.interface.ts +0 -6
  505. package/src/lib/core/interfaces/session-options.interface.ts +0 -19
  506. package/src/lib/core/providers/apple-auth.provider.ts +0 -61
  507. package/src/lib/core/providers/base-auth.provider.ts +0 -74
  508. package/src/lib/core/providers/email-auth.provider.ts +0 -71
  509. package/src/lib/core/providers/facebook-auth.provider.ts +0 -55
  510. package/src/lib/core/providers/google-auth.provider.ts +0 -61
  511. package/src/lib/core/providers/jwt-auth.provider.ts +0 -50
  512. package/src/lib/core/providers/phone-auth.provider.ts +0 -45
  513. package/src/lib/core/services/auth-config.service.ts +0 -184
  514. package/src/lib/core/services/auth-provider-registry.service.ts +0 -93
  515. package/src/lib/core/services/initialization.service.ts +0 -29
  516. package/src/lib/core/services/jwt.service.ts +0 -137
  517. package/src/lib/nest-auth.module.ts +0 -152
  518. package/src/lib/permission/entities/permission.entity.ts +0 -56
  519. package/src/lib/permission/permission.module.ts +0 -14
  520. package/src/lib/request-context/request-context.middleware.ts +0 -13
  521. package/src/lib/role/entities/role.entity.ts +0 -103
  522. package/src/lib/role/role.module.ts +0 -15
  523. package/src/lib/session/entities/session.entity.ts +0 -54
  524. package/src/lib/session/repositories/typeorm-session.repository.ts +0 -86
  525. package/src/lib/session/session.module.ts +0 -102
  526. package/src/lib/tenant/events/tenant-created.event.ts +0 -9
  527. package/src/lib/tenant/events/tenant-deleted.event.ts +0 -11
  528. package/src/lib/tenant/events/tenant-updated.event.ts +0 -12
  529. package/src/lib/tenant/tenant.module.ts +0 -19
  530. package/src/lib/types/express.d.ts +0 -14
  531. package/src/lib/user/dto/requests/update-user.dto.ts +0 -15
  532. package/src/lib/user/entities/access-key.entity.ts +0 -53
  533. package/src/lib/user/entities/identity.entity.ts +0 -31
  534. package/src/lib/user/entities/user.entity.ts +0 -212
  535. package/src/lib/user/events/user-created.event.ts +0 -10
  536. package/src/lib/user/events/user-deleted.event.ts +0 -12
  537. package/src/lib/user/events/user-updated.event.ts +0 -13
  538. package/src/lib/user/services/access-key.service.ts +0 -145
  539. package/src/lib/user/user.module.ts +0 -26
  540. package/src/lib/utils/database.utils.ts +0 -6
  541. package/src/lib/utils/device.util.ts +0 -111
  542. package/src/lib/utils/otp.ts +0 -3
  543. package/src/types/ms.d.ts +0 -1
  544. package/test/access-key.service.spec.ts +0 -204
  545. package/test/auth.service.spec.ts +0 -541
  546. package/test/mfa.service.spec.ts +0 -359
  547. package/test/role.service.spec.ts +0 -418
  548. package/test/tenant.service.spec.ts +0 -218
  549. package/test/test.setup.ts +0 -66
  550. package/test/user.service.spec.ts +0 -374
  551. package/tsconfig.json +0 -17
  552. package/tsconfig.lib.json +0 -15
  553. package/tsconfig.spec.json +0 -15
  554. package/tsconfig.tsbuildinfo +0 -1
  555. package/ui/.env +0 -1
  556. package/ui/.env.example +0 -1
  557. package/ui/.eslintignore +0 -7
  558. package/ui/README.md +0 -288
  559. package/ui/index.html +0 -17
  560. package/ui/package.json +0 -34
  561. package/ui/postcss.config.js +0 -6
  562. package/ui/src/App.tsx +0 -245
  563. package/ui/src/components/AuthGuard.tsx +0 -59
  564. package/ui/src/components/AuthProvider.tsx +0 -76
  565. package/ui/src/components/Button.tsx +0 -37
  566. package/ui/src/components/Card.tsx +0 -37
  567. package/ui/src/components/ErrorMessage.tsx +0 -15
  568. package/ui/src/components/FormDialog.tsx +0 -61
  569. package/ui/src/components/FormFooter.tsx +0 -37
  570. package/ui/src/components/Layout.tsx +0 -112
  571. package/ui/src/components/LoadingMessage.tsx +0 -11
  572. package/ui/src/components/Modal.tsx +0 -97
  573. package/ui/src/components/MultiSelect.tsx +0 -145
  574. package/ui/src/components/PageHeader.tsx +0 -42
  575. package/ui/src/components/PanelHeader.tsx +0 -28
  576. package/ui/src/components/PermissionInput.tsx +0 -473
  577. package/ui/src/components/SearchInput.tsx +0 -69
  578. package/ui/src/components/Select.tsx +0 -51
  579. package/ui/src/components/SwaggerUIWrapper.tsx +0 -316
  580. package/ui/src/components/Table.tsx +0 -207
  581. package/ui/src/components/Tag.tsx +0 -9
  582. package/ui/src/components/TagsInput.tsx +0 -96
  583. package/ui/src/components/admin/AdminForm.tsx +0 -170
  584. package/ui/src/components/admin/CreateAdminDialog.tsx +0 -38
  585. package/ui/src/components/auth/LoginFooter.tsx +0 -17
  586. package/ui/src/components/auth/LoginHeader.tsx +0 -14
  587. package/ui/src/components/auth/components/CodeBlock.tsx +0 -43
  588. package/ui/src/components/auth/components/CreateAccountCodeExamples.tsx +0 -60
  589. package/ui/src/components/auth/components/PasswordRequirements.tsx +0 -16
  590. package/ui/src/components/auth/components/PasswordStrengthIndicator.tsx +0 -48
  591. package/ui/src/components/auth/components/ResetPasswordCodeExamples.tsx +0 -76
  592. package/ui/src/components/auth/components/Tabs.tsx +0 -32
  593. package/ui/src/components/auth/dialogs/CreateAccountDialog.tsx +0 -79
  594. package/ui/src/components/auth/dialogs/ForgotPasswordDialog.tsx +0 -79
  595. package/ui/src/components/auth/forms/CreateAccountForm.tsx +0 -226
  596. package/ui/src/components/auth/forms/LoginForm.tsx +0 -149
  597. package/ui/src/components/auth/forms/ResetPasswordForm.tsx +0 -202
  598. package/ui/src/components/auth/types.ts +0 -17
  599. package/ui/src/components/auth/utils/security.ts +0 -82
  600. package/ui/src/components/auth/utils/utils.ts +0 -25
  601. package/ui/src/components/form/EmailField.tsx +0 -25
  602. package/ui/src/components/form/FormField.tsx +0 -102
  603. package/ui/src/components/form/FormMultiSelect.tsx +0 -46
  604. package/ui/src/components/form/FormSelect.tsx +0 -60
  605. package/ui/src/components/form/FormTagsInput.tsx +0 -42
  606. package/ui/src/components/form/FormTextarea.tsx +0 -42
  607. package/ui/src/components/form/PasswordField.tsx +0 -93
  608. package/ui/src/components/form/SecretKeyField.tsx +0 -49
  609. package/ui/src/components/permission/CreatePermissionDialog.tsx +0 -44
  610. package/ui/src/components/permission/EditPermissionDialog.tsx +0 -55
  611. package/ui/src/components/permission/PermissionForm.tsx +0 -251
  612. package/ui/src/components/role/CreateRoleDialog.tsx +0 -45
  613. package/ui/src/components/role/EditRoleDialog.tsx +0 -55
  614. package/ui/src/components/role/RoleDialog.tsx +0 -252
  615. package/ui/src/components/role/RoleForm.tsx +0 -246
  616. package/ui/src/components/tenant/CreateTenantDialog.tsx +0 -41
  617. package/ui/src/components/tenant/EditTenantDialog.tsx +0 -52
  618. package/ui/src/components/tenant/TenantForm.tsx +0 -160
  619. package/ui/src/components/user/CreateUserDialog.tsx +0 -45
  620. package/ui/src/components/user/UserDetailModal.tsx +0 -815
  621. package/ui/src/components/user/UserForm.tsx +0 -191
  622. package/ui/src/data/nest-auth.json +0 -1687
  623. package/ui/src/hooks/useApi.ts +0 -69
  624. package/ui/src/hooks/useAuth.ts +0 -100
  625. package/ui/src/hooks/useConfirm.tsx +0 -105
  626. package/ui/src/hooks/useFormFooter.tsx +0 -42
  627. package/ui/src/hooks/usePagination.ts +0 -69
  628. package/ui/src/index.css +0 -59
  629. package/ui/src/main.tsx +0 -13
  630. package/ui/src/pages/AdminsPage.tsx +0 -178
  631. package/ui/src/pages/ApiPage.tsx +0 -89
  632. package/ui/src/pages/DashboardPage.tsx +0 -281
  633. package/ui/src/pages/LoginPage.tsx +0 -39
  634. package/ui/src/pages/PermissionsPage.tsx +0 -376
  635. package/ui/src/pages/RolesPage.tsx +0 -274
  636. package/ui/src/pages/TenantsPage.tsx +0 -221
  637. package/ui/src/pages/UsersPage.tsx +0 -387
  638. package/ui/src/services/api.ts +0 -115
  639. package/ui/src/types/index.ts +0 -136
  640. package/ui/src/vite-env.d.ts +0 -9
  641. package/ui/tailwind.config.js +0 -45
  642. package/ui/tsconfig.json +0 -24
  643. package/ui/tsconfig.node.json +0 -10
  644. package/ui/vite.config.ts +0 -37
  645. package/ui/yarn.lock +0 -3137
@@ -1,418 +0,0 @@
1
- import { DataSource, Repository } from 'typeorm';
2
- import { RoleService } from '../src/lib/role/services/role.service';
3
- import { NestAuthRole } from '../src/lib/role/entities/role.entity';
4
- import { NestAuthTenant } from '../src/lib/tenant/entities/tenant.entity';
5
- import { getRepositoryToken } from '@nestjs/typeorm';
6
- import { createTestApp } from './test.setup';
7
- import { ConflictException, NotFoundException } from '@nestjs/common';
8
- import { DEFAULT_GUARD_NAME } from '../src/lib/auth.constants';
9
-
10
- describe('RoleService', () => {
11
- let service: RoleService;
12
- let roleRepository: Repository<NestAuthRole>;
13
- let tenantRepository: Repository<NestAuthTenant>;
14
- let dataSource: DataSource;
15
- let tenant1: NestAuthTenant;
16
- let tenant2: NestAuthTenant;
17
-
18
- beforeEach(async () => {
19
- const app = await createTestApp();
20
-
21
- service = app.get<RoleService>(RoleService);
22
- dataSource = app.get<DataSource>(DataSource);
23
- roleRepository = dataSource.getRepository(NestAuthRole);
24
- tenantRepository = dataSource.getRepository(NestAuthTenant);
25
-
26
- // Create test tenants
27
- [tenant1, tenant2] = await tenantRepository.save([
28
- { name: 'Tenant 1', domain: 'tenant-1' },
29
- { name: 'Tenant 2', domain: 'tenant-2' }
30
- ]);
31
- });
32
-
33
- afterEach(async () => {
34
- // Clean up database after each test
35
- await dataSource.synchronize(true);
36
- });
37
-
38
- afterAll(async () => {
39
- // Close the connection after all tests
40
- await dataSource.destroy();
41
- });
42
-
43
- describe('createRole', () => {
44
- it('should create a new role successfully', async () => {
45
- const result = await service.createRole('test-role', DEFAULT_GUARD_NAME, tenant1.id);
46
-
47
- expect(result).toBeDefined();
48
- expect(result.name).toBe('test-role');
49
- expect(result.guard).toBe(DEFAULT_GUARD_NAME);
50
- expect(result.tenantId).toBe(tenant1.id);
51
- expect(result.isSystem).toBe(false);
52
- });
53
-
54
- it('should throw ConflictException if role already exists', async () => {
55
- await service.createRole('test-role', DEFAULT_GUARD_NAME, tenant1.id);
56
-
57
- await expect(
58
- service.createRole('test-role', DEFAULT_GUARD_NAME, tenant1.id)
59
- ).rejects.toThrow(ConflictException);
60
- });
61
-
62
- it('should throw ConflictException if role name conflicts with system role', async () => {
63
- await service.createRole('system-role', DEFAULT_GUARD_NAME, null, true);
64
-
65
- await expect(
66
- service.createRole('system-role', DEFAULT_GUARD_NAME, tenant1.id)
67
- ).rejects.toThrow(ConflictException);
68
- });
69
- });
70
-
71
- describe('getRoleById', () => {
72
- it('should return role by id', async () => {
73
- const role = await service.createRole('test-role', DEFAULT_GUARD_NAME, tenant1.id);
74
-
75
- const result = await service.getRoleById(role.id);
76
-
77
- expect(result).toBeDefined();
78
- expect(result?.id).toBe(role.id);
79
- expect(result?.name).toBe('test-role');
80
- });
81
-
82
- it('should return null if role not found', async () => {
83
- const result = await service.getRoleById('non-existent-id');
84
-
85
- expect(result).toBeNull();
86
- });
87
- });
88
-
89
- describe('getRoleByName', () => {
90
- it('should return role by name and guard', async () => {
91
- await service.createRole('test-role', DEFAULT_GUARD_NAME, tenant1.id);
92
-
93
- const result = await service.getRoleByName('test-role', DEFAULT_GUARD_NAME, tenant1.id);
94
-
95
- expect(result).toBeDefined();
96
- expect(result?.name).toBe('test-role');
97
- expect(result?.guard).toBe(DEFAULT_GUARD_NAME);
98
- expect(result?.tenantId).toBe(tenant1.id);
99
- });
100
-
101
- it('should return null if role not found', async () => {
102
- const result = await service.getRoleByName('non-existent', DEFAULT_GUARD_NAME, tenant1.id);
103
-
104
- expect(result).toBeNull();
105
- });
106
- });
107
-
108
- describe('getRolesByGuard', () => {
109
- it('should return roles by guard', async () => {
110
- await service.createRole('test-role-1', DEFAULT_GUARD_NAME, tenant1.id);
111
- await service.createRole('test-role-2', DEFAULT_GUARD_NAME, tenant1.id);
112
-
113
- const result = await service.getRolesByGuard(DEFAULT_GUARD_NAME, tenant1.id);
114
-
115
- expect(result).toHaveLength(2);
116
- expect(result[0].guard).toBe(DEFAULT_GUARD_NAME);
117
- expect(result[1].guard).toBe(DEFAULT_GUARD_NAME);
118
- });
119
-
120
- it('should return empty array if guard is not provided', async () => {
121
- const result = await service.getRolesByGuard('');
122
-
123
- expect(result).toEqual([]);
124
- });
125
- });
126
-
127
- describe('getRolesByTenant', () => {
128
- it('should return roles by tenant including system roles', async () => {
129
- await service.createRole('system-role', DEFAULT_GUARD_NAME, null, true);
130
- await service.createRole('tenant-role-1', DEFAULT_GUARD_NAME, tenant1.id);
131
- await service.createRole('tenant-role-2', DEFAULT_GUARD_NAME, tenant1.id);
132
-
133
- const result = await service.getRolesByTenant(tenant1.id);
134
-
135
- expect(result).toHaveLength(3);
136
- expect(result.some(role => role.name === 'system-role')).toBe(true);
137
- expect(result.some(role => role.name === 'tenant-role-1')).toBe(true);
138
- expect(result.some(role => role.name === 'tenant-role-2')).toBe(true);
139
- });
140
-
141
- it('should return empty array if tenantId is not provided', async () => {
142
- const result = await service.getRolesByTenant('');
143
-
144
- expect(result).toEqual([]);
145
- });
146
- });
147
-
148
- describe('updateRole', () => {
149
- it('should update role successfully', async () => {
150
- const role = await service.createRole('test-role', DEFAULT_GUARD_NAME, tenant1.id);
151
-
152
- const result = await service.updateRole(role.id, { name: 'updated-role' });
153
-
154
- expect(result.name).toBe('updated-role');
155
- });
156
-
157
- it('should throw NotFoundException if role not found', async () => {
158
- await expect(
159
- service.updateRole('non-existent-id', { name: 'updated-role' })
160
- ).rejects.toThrow(NotFoundException);
161
- });
162
-
163
- it('should throw BadRequestException if trying to update system role', async () => {
164
- const systemRole = await service.createRole('system-role', DEFAULT_GUARD_NAME, null, true);
165
-
166
- await expect(
167
- service.updateRole(systemRole.id, { name: 'updated-role' })
168
- ).rejects.toThrow('Cannot update system role');
169
- });
170
- });
171
-
172
- describe('updateRolePermissions', () => {
173
- it('should update role permissions successfully', async () => {
174
- const role = await service.createRole('test-role', DEFAULT_GUARD_NAME, tenant1.id);
175
-
176
- const result = await service.updateRolePermissions(role.id, ['permission-1', 'permission-2']);
177
-
178
- expect(result).toBeDefined();
179
- expect(result.permissions).toHaveLength(2);
180
- expect(result.permissions).toContain('permission-1');
181
- expect(result.permissions).toContain('permission-2');
182
- });
183
-
184
- it('should throw NotFoundException if role not found', async () => {
185
- await expect(
186
- service.updateRolePermissions('non-existent-id', ['permission-1'])
187
- ).rejects.toThrow(NotFoundException);
188
- });
189
-
190
- it('should throw BadRequestException if trying to update system role permissions', async () => {
191
- const systemRole = await service.createRole('system-role', DEFAULT_GUARD_NAME, null, true);
192
-
193
- await expect(
194
- service.updateRolePermissions(systemRole.id, ['permission-1'])
195
- ).rejects.toThrow('Cannot update system role');
196
- });
197
- });
198
-
199
- describe('deleteRole', () => {
200
- it('should delete role successfully', async () => {
201
- const role = await service.createRole('test-role', DEFAULT_GUARD_NAME, tenant1.id);
202
-
203
- await service.deleteRole(role.id);
204
-
205
- const deletedRole = await service.getRoleById(role.id);
206
- expect(deletedRole).toBeNull();
207
- });
208
-
209
- it('should throw NotFoundException if role not found', async () => {
210
- await expect(
211
- service.deleteRole('non-existent-id')
212
- ).rejects.toThrow(NotFoundException);
213
- });
214
-
215
- it('should throw BadRequestException if trying to delete system role', async () => {
216
- const systemRole = await service.createRole('system-role', DEFAULT_GUARD_NAME, null, true);
217
-
218
- await expect(
219
- service.deleteRole(systemRole.id)
220
- ).rejects.toThrow('Cannot delete system role');
221
- });
222
- });
223
-
224
- describe('deleteSystemRole', () => {
225
- it('should delete system role successfully', async () => {
226
- const systemRole = await service.createRole('system-role', DEFAULT_GUARD_NAME, null, true);
227
-
228
- await service.deleteSystemRole(systemRole.id);
229
-
230
- const deletedRole = await service.getRoleById(systemRole.id);
231
- expect(deletedRole).toBeNull();
232
- });
233
-
234
- it('should not throw error if role not found', async () => {
235
- await expect(service.deleteSystemRole('non-existent-id')).resolves.not.toThrow();
236
- });
237
-
238
- it('should not delete if role is not a system role', async () => {
239
- const role = await service.createRole('test-role', DEFAULT_GUARD_NAME, tenant1.id);
240
-
241
- await service.deleteSystemRole(role.id);
242
-
243
- const existingRole = await service.getRoleById(role.id);
244
- expect(existingRole).toBeDefined();
245
- });
246
- });
247
-
248
- describe('Multiple Tenants and Guards', () => {
249
- it('should allow same role name across different tenants', async () => {
250
- // Create role in tenant-1
251
- const role1 = await service.createRole('admin', DEFAULT_GUARD_NAME, tenant1.id);
252
- expect(role1.name).toBe('admin');
253
- expect(role1.tenantId).toBe(tenant1.id);
254
-
255
- // Create same role in tenant-2
256
- const role2 = await service.createRole('admin', DEFAULT_GUARD_NAME, tenant2.id);
257
- expect(role2.name).toBe('admin');
258
- expect(role2.tenantId).toBe(tenant2.id);
259
-
260
- // Verify both roles exist
261
- const roles = await service.getRolesByGuard(DEFAULT_GUARD_NAME, tenant1.id);
262
- expect(roles).toHaveLength(1);
263
- expect(roles[0].name).toBe('admin');
264
- expect(roles[0].tenantId).toBe(tenant1.id);
265
- });
266
-
267
- it('should allow same role name across different guards in same tenant', async () => {
268
- // Create role with web guard
269
- const webRole = await service.createRole('admin', 'web', tenant1.id);
270
- expect(webRole.name).toBe('admin');
271
- expect(webRole.guard).toBe('web');
272
-
273
- // Create same role with api guard
274
- const apiRole = await service.createRole('admin', 'api', tenant1.id);
275
- expect(apiRole.name).toBe('admin');
276
- expect(apiRole.guard).toBe('api');
277
-
278
- // Verify both roles exist
279
- const webRoles = await service.getRolesByGuard('web', tenant1.id);
280
- expect(webRoles).toHaveLength(1);
281
- expect(webRoles[0].name).toBe('admin');
282
-
283
- const apiRoles = await service.getRolesByGuard('api', tenant1.id);
284
- expect(apiRoles).toHaveLength(1);
285
- expect(apiRoles[0].name).toBe('admin');
286
- });
287
-
288
- it('should prevent role name conflicts within same tenant and guard', async () => {
289
- // Create initial role
290
- await service.createRole('admin', 'web', tenant1.id);
291
-
292
- // Try to create same role in same tenant and guard
293
- await expect(
294
- service.createRole('admin', 'web', tenant1.id)
295
- ).rejects.toThrow(ConflictException);
296
- });
297
-
298
- it('should prevent role name conflicts with system roles across all tenants', async () => {
299
- // Create system role
300
- await service.createRole('super-admin', DEFAULT_GUARD_NAME, null, true);
301
-
302
- // Try to create same role in different tenants
303
- await expect(
304
- service.createRole('super-admin', DEFAULT_GUARD_NAME, tenant1.id)
305
- ).rejects.toThrow(ConflictException);
306
-
307
- await expect(
308
- service.createRole('super-admin', DEFAULT_GUARD_NAME, tenant2.id)
309
- ).rejects.toThrow(ConflictException);
310
- });
311
- });
312
-
313
- describe('Role Update Restrictions', () => {
314
- it('should prevent updating system role properties', async () => {
315
- const systemRole = await service.createRole('system-role', DEFAULT_GUARD_NAME, null, true);
316
-
317
- // Try to update various properties
318
- await expect(
319
- service.updateRole(systemRole.id, { name: 'new-name' })
320
- ).rejects.toThrow('Cannot update system role');
321
-
322
- await expect(
323
- service.updateRole(systemRole.id, { guard: 'new-guard' })
324
- ).rejects.toThrow('Cannot update system role');
325
-
326
- await expect(
327
- service.updateRole(systemRole.id, { isSystem: false })
328
- ).rejects.toThrow('Cannot update system role');
329
-
330
- await expect(
331
- service.updateRole(systemRole.id, { tenantId: tenant1.id })
332
- ).rejects.toThrow('Cannot update system role');
333
- });
334
-
335
- it('should prevent updating role to conflict with existing roles', async () => {
336
- // Create two roles
337
- const role1 = await service.createRole('role1', 'web', tenant1.id);
338
- await service.createRole('role2', 'web', tenant1.id);
339
-
340
- // Try to update role1 to conflict with role2
341
- await expect(
342
- service.updateRole(role1.id, { name: 'role2' })
343
- ).rejects.toThrow(ConflictException);
344
- });
345
-
346
- it('should prevent updating role to conflict with system roles', async () => {
347
- // Create system role
348
- await service.createRole('system-role', DEFAULT_GUARD_NAME, null, true);
349
-
350
- // Create regular role
351
- const regularRole = await service.createRole('regular-role', DEFAULT_GUARD_NAME, tenant1.id);
352
-
353
- // Try to update regular role to system role name
354
- await expect(
355
- service.updateRole(regularRole.id, { name: 'system-role' })
356
- ).rejects.toThrow(ConflictException);
357
- });
358
-
359
- it('should allow updating role name to a new unique name', async () => {
360
- const role = await service.createRole('old-name', 'web', tenant1.id);
361
-
362
- const updatedRole = await service.updateRole(role.id, { name: 'new-name' });
363
-
364
- expect(updatedRole.name).toBe('new-name');
365
- expect(updatedRole.guard).toBe('web');
366
- expect(updatedRole.tenantId).toBe(tenant1.id);
367
- });
368
-
369
- it('should allow updating role guard if name remains unique', async () => {
370
- const role = await service.createRole('admin', 'web', tenant1.id);
371
-
372
- const updatedRole = await service.updateRole(role.id, { guard: 'api' });
373
-
374
- expect(updatedRole.name).toBe('admin');
375
- expect(updatedRole.guard).toBe('api');
376
- expect(updatedRole.tenantId).toBe(tenant1.id);
377
- });
378
- });
379
-
380
- describe('Role Permissions Management', () => {
381
- it('should handle permissions across multiple tenants', async () => {
382
- // Create roles in different tenants
383
- const role1 = await service.createRole('admin', 'web', tenant1.id);
384
- const role2 = await service.createRole('admin', 'web', tenant2.id);
385
-
386
- // Update permissions for each role
387
- const updatedRole1 = await service.updateRolePermissions(role1.id, ['permission-1', 'permission-2']);
388
- const updatedRole2 = await service.updateRolePermissions(role2.id, ['permission-3', 'permission-4']);
389
-
390
- // Verify permissions are set correctly
391
- expect(updatedRole1.permissions).toHaveLength(2);
392
- expect(updatedRole1.permissions).toContain('permission-1');
393
- expect(updatedRole1.permissions).toContain('permission-2');
394
-
395
- expect(updatedRole2.permissions).toHaveLength(2);
396
- expect(updatedRole2.permissions).toContain('permission-3');
397
- expect(updatedRole2.permissions).toContain('permission-4');
398
- });
399
-
400
- it('should prevent updating permissions for system roles', async () => {
401
- const systemRole = await service.createRole('system-role', DEFAULT_GUARD_NAME, null, true);
402
-
403
- await expect(
404
- service.updateRolePermissions(systemRole.id, ['permission-1'])
405
- ).rejects.toThrow('Cannot update system role');
406
- });
407
-
408
- it('should allow updating permissions for regular roles', async () => {
409
- const role = await service.createRole('regular-role', 'web', tenant1.id);
410
-
411
- const updatedRole = await service.updateRolePermissions(role.id, ['permission-1', 'permission-2']);
412
-
413
- expect(updatedRole.permissions).toHaveLength(2);
414
- expect(updatedRole.permissions).toContain('permission-1');
415
- expect(updatedRole.permissions).toContain('permission-2');
416
- });
417
- });
418
- });
@@ -1,218 +0,0 @@
1
- import { DataSource, Repository } from 'typeorm';
2
- import { TenantService } from '../src/lib/tenant/services/tenant.service';
3
- import { NestAuthTenant } from '../src/lib/tenant/entities/tenant.entity';
4
- import { getRepositoryToken } from '@nestjs/typeorm';
5
- import { createTestApp } from './test.setup';
6
- import { ConflictException, NotFoundException } from '@nestjs/common';
7
-
8
- describe('TenantService', () => {
9
- let service: TenantService;
10
- let tenantRepository: Repository<NestAuthTenant>;
11
- let dataSource: DataSource;
12
-
13
- beforeEach(async () => {
14
- const app = await createTestApp();
15
-
16
- service = app.get<TenantService>(TenantService);
17
- dataSource = app.get<DataSource>(DataSource);
18
- tenantRepository = dataSource.getRepository(NestAuthTenant);
19
- });
20
-
21
- afterEach(async () => {
22
- // Clean up database after each test
23
- await dataSource.synchronize(true);
24
- });
25
-
26
- afterAll(async () => {
27
- // Close the connection after all tests
28
- await dataSource.destroy();
29
- });
30
-
31
- describe('createTenant', () => {
32
- it('should create a new tenant successfully', async () => {
33
- const createData = {
34
- name: 'Test Tenant',
35
- domain: 'test.example.com',
36
- description: 'Test tenant description'
37
- };
38
-
39
- const result = await service.createTenant(createData);
40
-
41
- expect(result).toBeDefined();
42
- expect(result.name).toBe(createData.name);
43
- expect(result.domain).toBe(createData.domain);
44
- expect(result.description).toBe(createData.description);
45
- expect(result.isActive).toBe(true);
46
- expect(result.metadata).toEqual({});
47
- });
48
-
49
- it('should throw ConflictException if tenant with same domain exists', async () => {
50
- const createData = {
51
- name: 'Test Tenant',
52
- domain: 'test.example.com'
53
- };
54
-
55
- await service.createTenant(createData);
56
-
57
- await expect(service.createTenant(createData)).rejects.toThrow(ConflictException);
58
- });
59
- });
60
-
61
- describe('getTenantById', () => {
62
- it('should return tenant by id', async () => {
63
- const tenant = await service.createTenant({
64
- name: 'Test Tenant',
65
- domain: 'test.example.com'
66
- });
67
-
68
- const result = await service.getTenantById(tenant.id);
69
-
70
- expect(result).toBeDefined();
71
- expect(result?.id).toBe(tenant.id);
72
- expect(result?.name).toBe('Test Tenant');
73
- });
74
-
75
- it('should return null if tenant not found', async () => {
76
- const result = await service.getTenantById('non-existent-id');
77
-
78
- expect(result).toBeNull();
79
- });
80
- });
81
-
82
- describe('getTenantByDomain', () => {
83
- it('should return tenant by domain', async () => {
84
- const tenant = await service.createTenant({
85
- name: 'Test Tenant',
86
- domain: 'test.example.com'
87
- });
88
-
89
- const result = await service.getTenantByDomain('test.example.com');
90
-
91
- expect(result).toBeDefined();
92
- expect(result?.domain).toBe('test.example.com');
93
- expect(result?.id).toBe(tenant.id);
94
- });
95
-
96
- it('should return null if tenant not found', async () => {
97
- const result = await service.getTenantByDomain('non-existent.com');
98
-
99
- expect(result).toBeNull();
100
- });
101
- });
102
-
103
- describe('updateTenant', () => {
104
- it('should update tenant successfully', async () => {
105
- const tenant = await service.createTenant({
106
- name: 'Test Tenant',
107
- domain: 'test.example.com'
108
- });
109
-
110
- const updateData = {
111
- name: 'Updated Tenant',
112
- description: 'Updated description'
113
- };
114
-
115
- const result = await service.updateTenant(tenant.id, updateData);
116
-
117
- expect(result.name).toBe(updateData.name);
118
- expect(result.description).toBe(updateData.description);
119
- expect(result.domain).toBe('test.example.com'); // Domain should remain unchanged
120
- });
121
-
122
- it('should throw NotFoundException if tenant not found', async () => {
123
- await expect(
124
- service.updateTenant('non-existent-id', { name: 'Updated Tenant' })
125
- ).rejects.toThrow(NotFoundException);
126
- });
127
- });
128
-
129
- describe('deleteTenant', () => {
130
- it('should delete tenant successfully', async () => {
131
- const tenant = await service.createTenant({
132
- name: 'Test Tenant',
133
- domain: 'test.example.com'
134
- });
135
-
136
- await service.deleteTenant(tenant.id);
137
-
138
- const deletedTenant = await service.getTenantById(tenant.id);
139
- expect(deletedTenant).toBeNull();
140
- });
141
-
142
- it('should throw NotFoundException if tenant not found', async () => {
143
- await expect(
144
- service.deleteTenant('non-existent-id')
145
- ).rejects.toThrow(NotFoundException);
146
- });
147
- });
148
-
149
- describe('updateTenantStatus', () => {
150
- it('should update tenant status successfully', async () => {
151
- const tenant = await service.createTenant({
152
- name: 'Test Tenant',
153
- domain: 'test.example.com'
154
- });
155
-
156
- const result = await service.updateTenantStatus(tenant.id, false);
157
-
158
- expect(result.isActive).toBe(false);
159
- });
160
-
161
- it('should throw NotFoundException if tenant not found', async () => {
162
- await expect(
163
- service.updateTenantStatus('non-existent-id', false)
164
- ).rejects.toThrow(NotFoundException);
165
- });
166
- });
167
-
168
- describe('updateTenantMetadata', () => {
169
- it('should update tenant metadata successfully', async () => {
170
- const tenant = await service.createTenant({
171
- name: 'Test Tenant',
172
- domain: 'test.example.com'
173
- });
174
-
175
- const metadata = { key: 'value', nested: { data: 'test' } };
176
- const result = await service.updateTenantMetadata(tenant.id, metadata);
177
-
178
- expect(result.metadata).toEqual(metadata);
179
- });
180
-
181
- it('should throw NotFoundException if tenant not found', async () => {
182
- await expect(
183
- service.updateTenantMetadata('non-existent-id', { key: 'value' })
184
- ).rejects.toThrow(NotFoundException);
185
- });
186
- });
187
-
188
- describe('Multiple Tenants', () => {
189
- it('should allow multiple tenants with different domains', async () => {
190
- const tenant1 = await service.createTenant({
191
- name: 'Tenant 1',
192
- domain: 'tenant1.example.com'
193
- });
194
-
195
- const tenant2 = await service.createTenant({
196
- name: 'Tenant 2',
197
- domain: 'tenant2.example.com'
198
- });
199
-
200
- expect(tenant1.id).not.toBe(tenant2.id);
201
- expect(tenant1.domain).not.toBe(tenant2.domain);
202
- });
203
-
204
- it('should prevent duplicate domains across tenants', async () => {
205
- await service.createTenant({
206
- name: 'Tenant 1',
207
- domain: 'example.com'
208
- });
209
-
210
- await expect(
211
- service.createTenant({
212
- name: 'Tenant 2',
213
- domain: 'example.com'
214
- })
215
- ).rejects.toThrow(ConflictException);
216
- });
217
- });
218
- });