@solidstarters/solid-core 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1154) hide show
  1. package/dist/commands/basic.command.d.ts +19 -0
  2. package/dist/commands/basic.command.d.ts.map +1 -0
  3. package/dist/commands/basic.command.js +79 -0
  4. package/dist/commands/basic.command.js.map +1 -0
  5. package/dist/commands/helper.d.ts +7 -0
  6. package/dist/commands/helper.d.ts.map +1 -0
  7. package/dist/commands/helper.js +14 -0
  8. package/dist/commands/helper.js.map +1 -0
  9. package/dist/commands/refresh-model.command.d.ts +20 -0
  10. package/dist/commands/refresh-model.command.d.ts.map +1 -0
  11. package/dist/commands/refresh-model.command.js +89 -0
  12. package/dist/commands/refresh-model.command.js.map +1 -0
  13. package/dist/commands/refresh-module.command.d.ts +20 -0
  14. package/dist/commands/refresh-module.command.d.ts.map +1 -0
  15. package/dist/commands/refresh-module.command.js +89 -0
  16. package/dist/commands/refresh-module.command.js.map +1 -0
  17. package/dist/commands/remove-fields.command.d.ts +18 -0
  18. package/dist/commands/remove-fields.command.d.ts.map +1 -0
  19. package/dist/commands/remove-fields.command.js +82 -0
  20. package/dist/commands/remove-fields.command.js.map +1 -0
  21. package/dist/commands/seed.command.d.ts +14 -0
  22. package/dist/commands/seed.command.d.ts.map +1 -0
  23. package/dist/commands/seed.command.js +55 -0
  24. package/dist/commands/seed.command.js.map +1 -0
  25. package/dist/config/app-builder.config.d.ts +11 -0
  26. package/dist/config/app-builder.config.d.ts.map +1 -0
  27. package/dist/config/app-builder.config.js +13 -0
  28. package/dist/config/app-builder.config.js.map +1 -0
  29. package/dist/config/common.config.d.ts +81 -0
  30. package/dist/config/common.config.d.ts.map +1 -0
  31. package/dist/config/common.config.js +46 -0
  32. package/dist/config/common.config.js.map +1 -0
  33. package/dist/config/iam.config.d.ts +47 -0
  34. package/dist/config/iam.config.d.ts.map +1 -0
  35. package/dist/config/iam.config.js +33 -0
  36. package/dist/config/iam.config.js.map +1 -0
  37. package/dist/config/redis.options.d.ts +3 -0
  38. package/dist/config/redis.options.d.ts.map +1 -0
  39. package/dist/config/redis.options.js +22 -0
  40. package/dist/config/redis.options.js.map +1 -0
  41. package/dist/constants.d.ts +17 -0
  42. package/dist/constants.d.ts.map +1 -0
  43. package/dist/constants.js +24 -0
  44. package/dist/constants.js.map +1 -0
  45. package/dist/controllers/action-metadata.controller.d.ts +32 -0
  46. package/dist/controllers/action-metadata.controller.d.ts.map +1 -0
  47. package/dist/controllers/action-metadata.controller.js +135 -0
  48. package/dist/controllers/action-metadata.controller.js.map +1 -0
  49. package/dist/controllers/authentication.controller.d.ts +93 -0
  50. package/dist/controllers/authentication.controller.d.ts.map +1 -0
  51. package/dist/controllers/authentication.controller.js +154 -0
  52. package/dist/controllers/authentication.controller.js.map +1 -0
  53. package/dist/controllers/email-template.controller.d.ts +15 -0
  54. package/dist/controllers/email-template.controller.d.ts.map +1 -0
  55. package/dist/controllers/email-template.controller.js +178 -0
  56. package/dist/controllers/email-template.controller.js.map +1 -0
  57. package/dist/controllers/field-metadata.controller.d.ts +254 -0
  58. package/dist/controllers/field-metadata.controller.d.ts.map +1 -0
  59. package/dist/controllers/field-metadata.controller.js +125 -0
  60. package/dist/controllers/field-metadata.controller.js.map +1 -0
  61. package/dist/controllers/google-authentication.controller.d.ts +19 -0
  62. package/dist/controllers/google-authentication.controller.d.ts.map +1 -0
  63. package/dist/controllers/google-authentication.controller.js +94 -0
  64. package/dist/controllers/google-authentication.controller.js.map +1 -0
  65. package/dist/controllers/media-storage-provider-metadata.controller.d.ts +26 -0
  66. package/dist/controllers/media-storage-provider-metadata.controller.d.ts.map +1 -0
  67. package/dist/controllers/media-storage-provider-metadata.controller.js +116 -0
  68. package/dist/controllers/media-storage-provider-metadata.controller.js.map +1 -0
  69. package/dist/controllers/media.controller.d.ts +25 -0
  70. package/dist/controllers/media.controller.d.ts.map +1 -0
  71. package/dist/controllers/media.controller.js +120 -0
  72. package/dist/controllers/media.controller.js.map +1 -0
  73. package/dist/controllers/menu-item-metadata.controller.d.ts +34 -0
  74. package/dist/controllers/menu-item-metadata.controller.d.ts.map +1 -0
  75. package/dist/controllers/menu-item-metadata.controller.js +149 -0
  76. package/dist/controllers/menu-item-metadata.controller.js.map +1 -0
  77. package/dist/controllers/model-metadata.controller.d.ts +38 -0
  78. package/dist/controllers/model-metadata.controller.d.ts.map +1 -0
  79. package/dist/controllers/model-metadata.controller.js +151 -0
  80. package/dist/controllers/model-metadata.controller.js.map +1 -0
  81. package/dist/controllers/module-metadata.controller.d.ts +27 -0
  82. package/dist/controllers/module-metadata.controller.d.ts.map +1 -0
  83. package/dist/controllers/module-metadata.controller.js +142 -0
  84. package/dist/controllers/module-metadata.controller.js.map +1 -0
  85. package/dist/controllers/mq-message-queue.controller.d.ts +32 -0
  86. package/dist/controllers/mq-message-queue.controller.d.ts.map +1 -0
  87. package/dist/controllers/mq-message-queue.controller.js +133 -0
  88. package/dist/controllers/mq-message-queue.controller.js.map +1 -0
  89. package/dist/controllers/mq-message.controller.d.ts +32 -0
  90. package/dist/controllers/mq-message.controller.d.ts.map +1 -0
  91. package/dist/controllers/mq-message.controller.js +133 -0
  92. package/dist/controllers/mq-message.controller.js.map +1 -0
  93. package/dist/controllers/otp-authentication.controller.d.ts +32 -0
  94. package/dist/controllers/otp-authentication.controller.d.ts.map +1 -0
  95. package/dist/controllers/otp-authentication.controller.js +90 -0
  96. package/dist/controllers/otp-authentication.controller.js.map +1 -0
  97. package/dist/controllers/permission-metadata.controller.d.ts +32 -0
  98. package/dist/controllers/permission-metadata.controller.d.ts.map +1 -0
  99. package/dist/controllers/permission-metadata.controller.js +135 -0
  100. package/dist/controllers/permission-metadata.controller.js.map +1 -0
  101. package/dist/controllers/queues-test.controller.d.ts +7 -0
  102. package/dist/controllers/queues-test.controller.d.ts.map +1 -0
  103. package/dist/controllers/queues-test.controller.js +54 -0
  104. package/dist/controllers/queues-test.controller.js.map +1 -0
  105. package/dist/controllers/role-metadata.controller.d.ts +32 -0
  106. package/dist/controllers/role-metadata.controller.d.ts.map +1 -0
  107. package/dist/controllers/role-metadata.controller.js +135 -0
  108. package/dist/controllers/role-metadata.controller.js.map +1 -0
  109. package/dist/controllers/service.controller.d.ts +9 -0
  110. package/dist/controllers/service.controller.d.ts.map +1 -0
  111. package/dist/controllers/service.controller.js +40 -0
  112. package/dist/controllers/service.controller.js.map +1 -0
  113. package/dist/controllers/sms-template.controller.d.ts +14 -0
  114. package/dist/controllers/sms-template.controller.d.ts.map +1 -0
  115. package/dist/controllers/sms-template.controller.js +101 -0
  116. package/dist/controllers/sms-template.controller.js.map +1 -0
  117. package/dist/controllers/test.controller.d.ts +21 -0
  118. package/dist/controllers/test.controller.d.ts.map +1 -0
  119. package/dist/controllers/test.controller.js +93 -0
  120. package/dist/controllers/test.controller.js.map +1 -0
  121. package/dist/controllers/user.controller.d.ts +40 -0
  122. package/dist/controllers/user.controller.d.ts.map +1 -0
  123. package/dist/controllers/user.controller.js +205 -0
  124. package/dist/controllers/user.controller.js.map +1 -0
  125. package/dist/controllers/view-metadata.controller.d.ts +38 -0
  126. package/dist/controllers/view-metadata.controller.d.ts.map +1 -0
  127. package/dist/controllers/view-metadata.controller.js +147 -0
  128. package/dist/controllers/view-metadata.controller.js.map +1 -0
  129. package/dist/decorators/active-user.decorator.d.ts +3 -0
  130. package/dist/decorators/active-user.decorator.d.ts.map +1 -0
  131. package/dist/decorators/active-user.decorator.js +11 -0
  132. package/dist/decorators/active-user.decorator.js.map +1 -0
  133. package/dist/decorators/auth.decorator.d.ts +4 -0
  134. package/dist/decorators/auth.decorator.d.ts.map +1 -0
  135. package/dist/decorators/auth.decorator.js +8 -0
  136. package/dist/decorators/auth.decorator.js.map +1 -0
  137. package/dist/decorators/computed-field-provider.decorator.d.ts +3 -0
  138. package/dist/decorators/computed-field-provider.decorator.d.ts.map +1 -0
  139. package/dist/decorators/computed-field-provider.decorator.js +11 -0
  140. package/dist/decorators/computed-field-provider.decorator.js.map +1 -0
  141. package/dist/decorators/is-not-in-enum.decorator.d.ts +3 -0
  142. package/dist/decorators/is-not-in-enum.decorator.d.ts.map +1 -0
  143. package/dist/decorators/is-not-in-enum.decorator.js +26 -0
  144. package/dist/decorators/is-not-in-enum.decorator.js.map +1 -0
  145. package/dist/decorators/protocol.decorator.d.ts +2 -0
  146. package/dist/decorators/protocol.decorator.d.ts.map +1 -0
  147. package/dist/decorators/protocol.decorator.js +9 -0
  148. package/dist/decorators/protocol.decorator.js.map +1 -0
  149. package/dist/decorators/public.decorator.d.ts +3 -0
  150. package/dist/decorators/public.decorator.d.ts.map +1 -0
  151. package/dist/decorators/public.decorator.js +8 -0
  152. package/dist/decorators/public.decorator.js.map +1 -0
  153. package/dist/decorators/roles.decorator.d.ts +3 -0
  154. package/dist/decorators/roles.decorator.d.ts.map +1 -0
  155. package/dist/decorators/roles.decorator.js +8 -0
  156. package/dist/decorators/roles.decorator.js.map +1 -0
  157. package/dist/decorators/selection-provider.decorator.d.ts +3 -0
  158. package/dist/decorators/selection-provider.decorator.d.ts.map +1 -0
  159. package/dist/decorators/selection-provider.decorator.js +11 -0
  160. package/dist/decorators/selection-provider.decorator.js.map +1 -0
  161. package/dist/decorators/solid-database-module.decorator.d.ts +3 -0
  162. package/dist/decorators/solid-database-module.decorator.d.ts.map +1 -0
  163. package/dist/decorators/solid-database-module.decorator.js +11 -0
  164. package/dist/decorators/solid-database-module.decorator.js.map +1 -0
  165. package/dist/decorators/solid-service.decorator.d.ts +3 -0
  166. package/dist/decorators/solid-service.decorator.d.ts.map +1 -0
  167. package/dist/decorators/solid-service.decorator.js +7 -0
  168. package/dist/decorators/solid-service.decorator.js.map +1 -0
  169. package/dist/dtos/basic-filters.dto.d.ts +12 -0
  170. package/dist/dtos/basic-filters.dto.d.ts.map +1 -0
  171. package/dist/dtos/basic-filters.dto.js +63 -0
  172. package/dist/dtos/basic-filters.dto.js.map +1 -0
  173. package/dist/dtos/change-password.dto.d.ts +7 -0
  174. package/dist/dtos/change-password.dto.d.ts.map +1 -0
  175. package/dist/dtos/change-password.dto.js +37 -0
  176. package/dist/dtos/change-password.dto.js.map +1 -0
  177. package/dist/dtos/confirm-forgot-password.dto.d.ts +7 -0
  178. package/dist/dtos/confirm-forgot-password.dto.d.ts.map +1 -0
  179. package/dist/dtos/confirm-forgot-password.dto.js +39 -0
  180. package/dist/dtos/confirm-forgot-password.dto.js.map +1 -0
  181. package/dist/dtos/create-action-metadata.dto.d.ts +17 -0
  182. package/dist/dtos/create-action-metadata.dto.d.ts.map +1 -0
  183. package/dist/dtos/create-action-metadata.dto.js +91 -0
  184. package/dist/dtos/create-action-metadata.dto.js.map +1 -0
  185. package/dist/dtos/create-email-attachment.dto.d.ts +9 -0
  186. package/dist/dtos/create-email-attachment.dto.d.ts.map +1 -0
  187. package/dist/dtos/create-email-attachment.dto.js +51 -0
  188. package/dist/dtos/create-email-attachment.dto.js.map +1 -0
  189. package/dist/dtos/create-email-template.dto.d.ts +11 -0
  190. package/dist/dtos/create-email-template.dto.d.ts.map +1 -0
  191. package/dist/dtos/create-email-template.dto.js +55 -0
  192. package/dist/dtos/create-email-template.dto.js.map +1 -0
  193. package/dist/dtos/create-field-metadata.dto.d.ts +142 -0
  194. package/dist/dtos/create-field-metadata.dto.d.ts.map +1 -0
  195. package/dist/dtos/create-field-metadata.dto.js +372 -0
  196. package/dist/dtos/create-field-metadata.dto.js.map +1 -0
  197. package/dist/dtos/create-list-of-values.dto.d.ts +9 -0
  198. package/dist/dtos/create-list-of-values.dto.d.ts.map +1 -0
  199. package/dist/dtos/create-list-of-values.dto.js +45 -0
  200. package/dist/dtos/create-list-of-values.dto.js.map +1 -0
  201. package/dist/dtos/create-media-storage-provider-metadata.dto.d.ts +14 -0
  202. package/dist/dtos/create-media-storage-provider-metadata.dto.d.ts.map +1 -0
  203. package/dist/dtos/create-media-storage-provider-metadata.dto.js +57 -0
  204. package/dist/dtos/create-media-storage-provider-metadata.dto.js.map +1 -0
  205. package/dist/dtos/create-media.dto.d.ts +8 -0
  206. package/dist/dtos/create-media.dto.d.ts.map +1 -0
  207. package/dist/dtos/create-media.dto.js +46 -0
  208. package/dist/dtos/create-media.dto.js.map +1 -0
  209. package/dist/dtos/create-menu-item-metadata.dto.d.ts +16 -0
  210. package/dist/dtos/create-menu-item-metadata.dto.d.ts.map +1 -0
  211. package/dist/dtos/create-menu-item-metadata.dto.js +93 -0
  212. package/dist/dtos/create-menu-item-metadata.dto.js.map +1 -0
  213. package/dist/dtos/create-message.dto.d.ts +11 -0
  214. package/dist/dtos/create-message.dto.d.ts.map +1 -0
  215. package/dist/dtos/create-message.dto.js +11 -0
  216. package/dist/dtos/create-message.dto.js.map +1 -0
  217. package/dist/dtos/create-model-metadata.dto.d.ts +28 -0
  218. package/dist/dtos/create-model-metadata.dto.d.ts.map +1 -0
  219. package/dist/dtos/create-model-metadata.dto.js +131 -0
  220. package/dist/dtos/create-model-metadata.dto.js.map +1 -0
  221. package/dist/dtos/create-module-metadata.dto.d.ts +12 -0
  222. package/dist/dtos/create-module-metadata.dto.d.ts.map +1 -0
  223. package/dist/dtos/create-module-metadata.dto.js +74 -0
  224. package/dist/dtos/create-module-metadata.dto.js.map +1 -0
  225. package/dist/dtos/create-mq-message-queue.dto.d.ts +9 -0
  226. package/dist/dtos/create-mq-message-queue.dto.d.ts.map +1 -0
  227. package/dist/dtos/create-mq-message-queue.dto.js +50 -0
  228. package/dist/dtos/create-mq-message-queue.dto.js.map +1 -0
  229. package/dist/dtos/create-mq-message.dto.d.ts +16 -0
  230. package/dist/dtos/create-mq-message.dto.d.ts.map +1 -0
  231. package/dist/dtos/create-mq-message.dto.js +82 -0
  232. package/dist/dtos/create-mq-message.dto.js.map +1 -0
  233. package/dist/dtos/create-permission-metadata.dto.d.ts +8 -0
  234. package/dist/dtos/create-permission-metadata.dto.d.ts.map +1 -0
  235. package/dist/dtos/create-permission-metadata.dto.js +46 -0
  236. package/dist/dtos/create-permission-metadata.dto.js.map +1 -0
  237. package/dist/dtos/create-role-metadata.dto.d.ts +16 -0
  238. package/dist/dtos/create-role-metadata.dto.d.ts.map +1 -0
  239. package/dist/dtos/create-role-metadata.dto.js +82 -0
  240. package/dist/dtos/create-role-metadata.dto.js.map +1 -0
  241. package/dist/dtos/create-short-url.dto.d.ts +7 -0
  242. package/dist/dtos/create-short-url.dto.d.ts.map +1 -0
  243. package/dist/dtos/create-short-url.dto.js +40 -0
  244. package/dist/dtos/create-short-url.dto.js.map +1 -0
  245. package/dist/dtos/create-sms-template.dto.d.ts +9 -0
  246. package/dist/dtos/create-sms-template.dto.d.ts.map +1 -0
  247. package/dist/dtos/create-sms-template.dto.js +41 -0
  248. package/dist/dtos/create-sms-template.dto.js.map +1 -0
  249. package/dist/dtos/create-user.dto.d.ts +32 -0
  250. package/dist/dtos/create-user.dto.d.ts.map +1 -0
  251. package/dist/dtos/create-user.dto.js +184 -0
  252. package/dist/dtos/create-user.dto.js.map +1 -0
  253. package/dist/dtos/create-view-metadata.dto.d.ts +12 -0
  254. package/dist/dtos/create-view-metadata.dto.d.ts.map +1 -0
  255. package/dist/dtos/create-view-metadata.dto.js +67 -0
  256. package/dist/dtos/create-view-metadata.dto.js.map +1 -0
  257. package/dist/dtos/fetch-roles.dto.d.ts +5 -0
  258. package/dist/dtos/fetch-roles.dto.d.ts.map +1 -0
  259. package/dist/dtos/fetch-roles.dto.js +27 -0
  260. package/dist/dtos/fetch-roles.dto.js.map +1 -0
  261. package/dist/dtos/initiate-forgot-password.dto.d.ts +5 -0
  262. package/dist/dtos/initiate-forgot-password.dto.d.ts.map +1 -0
  263. package/dist/dtos/initiate-forgot-password.dto.js +31 -0
  264. package/dist/dtos/initiate-forgot-password.dto.js.map +1 -0
  265. package/dist/dtos/mutate-role-permissions.dto.d.ts +5 -0
  266. package/dist/dtos/mutate-role-permissions.dto.d.ts.map +1 -0
  267. package/dist/dtos/mutate-role-permissions.dto.js +33 -0
  268. package/dist/dtos/mutate-role-permissions.dto.js.map +1 -0
  269. package/dist/dtos/mutate-user-roles-list.dto.d.ts +5 -0
  270. package/dist/dtos/mutate-user-roles-list.dto.d.ts.map +1 -0
  271. package/dist/dtos/mutate-user-roles-list.dto.js +34 -0
  272. package/dist/dtos/mutate-user-roles-list.dto.js.map +1 -0
  273. package/dist/dtos/mutate-user-roles.dto.d.ts +5 -0
  274. package/dist/dtos/mutate-user-roles.dto.d.ts.map +1 -0
  275. package/dist/dtos/mutate-user-roles.dto.js +34 -0
  276. package/dist/dtos/mutate-user-roles.dto.js.map +1 -0
  277. package/dist/dtos/oauth-user-dto.d.ts +11 -0
  278. package/dist/dtos/oauth-user-dto.d.ts.map +1 -0
  279. package/dist/dtos/oauth-user-dto.js +7 -0
  280. package/dist/dtos/oauth-user-dto.js.map +1 -0
  281. package/dist/dtos/otp-confirm-otp.dto.d.ts +10 -0
  282. package/dist/dtos/otp-confirm-otp.dto.d.ts.map +1 -0
  283. package/dist/dtos/otp-confirm-otp.dto.js +39 -0
  284. package/dist/dtos/otp-confirm-otp.dto.js.map +1 -0
  285. package/dist/dtos/otp-sign-in.dto.d.ts +5 -0
  286. package/dist/dtos/otp-sign-in.dto.d.ts.map +1 -0
  287. package/dist/dtos/otp-sign-in.dto.js +31 -0
  288. package/dist/dtos/otp-sign-in.dto.js.map +1 -0
  289. package/dist/dtos/otp-sign-up.dto.d.ts +9 -0
  290. package/dist/dtos/otp-sign-up.dto.d.ts.map +1 -0
  291. package/dist/dtos/otp-sign-up.dto.js +48 -0
  292. package/dist/dtos/otp-sign-up.dto.js.map +1 -0
  293. package/dist/dtos/pagination-query.dto.d.ts +7 -0
  294. package/dist/dtos/pagination-query.dto.d.ts.map +1 -0
  295. package/dist/dtos/pagination-query.dto.js +45 -0
  296. package/dist/dtos/pagination-query.dto.js.map +1 -0
  297. package/dist/dtos/query.dto.d.ts +9 -0
  298. package/dist/dtos/query.dto.d.ts.map +1 -0
  299. package/dist/dtos/query.dto.js +11 -0
  300. package/dist/dtos/query.dto.js.map +1 -0
  301. package/dist/dtos/refresh-token.dto.d.ts +4 -0
  302. package/dist/dtos/refresh-token.dto.d.ts.map +1 -0
  303. package/dist/dtos/refresh-token.dto.js +25 -0
  304. package/dist/dtos/refresh-token.dto.js.map +1 -0
  305. package/dist/dtos/register-private.dto.d.ts +7 -0
  306. package/dist/dtos/register-private.dto.d.ts.map +1 -0
  307. package/dist/dtos/register-private.dto.js +39 -0
  308. package/dist/dtos/register-private.dto.js.map +1 -0
  309. package/dist/dtos/selection-dynamic-query.dto.d.ts +8 -0
  310. package/dist/dtos/selection-dynamic-query.dto.d.ts.map +1 -0
  311. package/dist/dtos/selection-dynamic-query.dto.js +53 -0
  312. package/dist/dtos/selection-dynamic-query.dto.js.map +1 -0
  313. package/dist/dtos/sign-in.dto.d.ts +6 -0
  314. package/dist/dtos/sign-in.dto.d.ts.map +1 -0
  315. package/dist/dtos/sign-in.dto.js +39 -0
  316. package/dist/dtos/sign-in.dto.js.map +1 -0
  317. package/dist/dtos/sign-up.dto.d.ts +9 -0
  318. package/dist/dtos/sign-up.dto.d.ts.map +1 -0
  319. package/dist/dtos/sign-up.dto.js +51 -0
  320. package/dist/dtos/sign-up.dto.js.map +1 -0
  321. package/dist/dtos/sort-filter.dto.d.ts +8 -0
  322. package/dist/dtos/sort-filter.dto.d.ts.map +1 -0
  323. package/dist/dtos/sort-filter.dto.js +34 -0
  324. package/dist/dtos/sort-filter.dto.js.map +1 -0
  325. package/dist/dtos/update-action-metadata.dto.d.ts +18 -0
  326. package/dist/dtos/update-action-metadata.dto.d.ts.map +1 -0
  327. package/dist/dtos/update-action-metadata.dto.js +101 -0
  328. package/dist/dtos/update-action-metadata.dto.js.map +1 -0
  329. package/dist/dtos/update-email-template.dto.d.ts +6 -0
  330. package/dist/dtos/update-email-template.dto.d.ts.map +1 -0
  331. package/dist/dtos/update-email-template.dto.js +14 -0
  332. package/dist/dtos/update-email-template.dto.js.map +1 -0
  333. package/dist/dtos/update-field-metadata.dto.d.ts +5 -0
  334. package/dist/dtos/update-field-metadata.dto.d.ts.map +1 -0
  335. package/dist/dtos/update-field-metadata.dto.js +27 -0
  336. package/dist/dtos/update-field-metadata.dto.js.map +1 -0
  337. package/dist/dtos/update-media-storage-provider.dto.d.ts +6 -0
  338. package/dist/dtos/update-media-storage-provider.dto.d.ts.map +1 -0
  339. package/dist/dtos/update-media-storage-provider.dto.js +13 -0
  340. package/dist/dtos/update-media-storage-provider.dto.js.map +1 -0
  341. package/dist/dtos/update-media.dto.d.ts +6 -0
  342. package/dist/dtos/update-media.dto.d.ts.map +1 -0
  343. package/dist/dtos/update-media.dto.js +13 -0
  344. package/dist/dtos/update-media.dto.js.map +1 -0
  345. package/dist/dtos/update-menu-item-metadata.dto.d.ts +17 -0
  346. package/dist/dtos/update-menu-item-metadata.dto.d.ts.map +1 -0
  347. package/dist/dtos/update-menu-item-metadata.dto.js +98 -0
  348. package/dist/dtos/update-menu-item-metadata.dto.js.map +1 -0
  349. package/dist/dtos/update-message.dto.d.ts +11 -0
  350. package/dist/dtos/update-message.dto.d.ts.map +1 -0
  351. package/dist/dtos/update-message.dto.js +43 -0
  352. package/dist/dtos/update-message.dto.js.map +1 -0
  353. package/dist/dtos/update-model-metadata.dto.d.ts +9 -0
  354. package/dist/dtos/update-model-metadata.dto.d.ts.map +1 -0
  355. package/dist/dtos/update-model-metadata.dto.js +39 -0
  356. package/dist/dtos/update-model-metadata.dto.js.map +1 -0
  357. package/dist/dtos/update-module-metadata.dto.d.ts +6 -0
  358. package/dist/dtos/update-module-metadata.dto.d.ts.map +1 -0
  359. package/dist/dtos/update-module-metadata.dto.js +13 -0
  360. package/dist/dtos/update-module-metadata.dto.js.map +1 -0
  361. package/dist/dtos/update-mq-message-queue.dto.d.ts +10 -0
  362. package/dist/dtos/update-mq-message-queue.dto.d.ts.map +1 -0
  363. package/dist/dtos/update-mq-message-queue.dto.js +55 -0
  364. package/dist/dtos/update-mq-message-queue.dto.js.map +1 -0
  365. package/dist/dtos/update-mq-message.dto.d.ts +17 -0
  366. package/dist/dtos/update-mq-message.dto.d.ts.map +1 -0
  367. package/dist/dtos/update-mq-message.dto.js +94 -0
  368. package/dist/dtos/update-mq-message.dto.js.map +1 -0
  369. package/dist/dtos/update-permission-metadata.dto.d.ts +9 -0
  370. package/dist/dtos/update-permission-metadata.dto.d.ts.map +1 -0
  371. package/dist/dtos/update-permission-metadata.dto.js +51 -0
  372. package/dist/dtos/update-permission-metadata.dto.js.map +1 -0
  373. package/dist/dtos/update-role-metadata.dto.d.ts +17 -0
  374. package/dist/dtos/update-role-metadata.dto.d.ts.map +1 -0
  375. package/dist/dtos/update-role-metadata.dto.js +87 -0
  376. package/dist/dtos/update-role-metadata.dto.js.map +1 -0
  377. package/dist/dtos/update-sms-template.dto.d.ts +6 -0
  378. package/dist/dtos/update-sms-template.dto.d.ts.map +1 -0
  379. package/dist/dtos/update-sms-template.dto.js +14 -0
  380. package/dist/dtos/update-sms-template.dto.js.map +1 -0
  381. package/dist/dtos/update-user.dto.d.ts +33 -0
  382. package/dist/dtos/update-user.dto.d.ts.map +1 -0
  383. package/dist/dtos/update-user.dto.js +193 -0
  384. package/dist/dtos/update-user.dto.js.map +1 -0
  385. package/dist/dtos/update-view-metadata.dto.d.ts +13 -0
  386. package/dist/dtos/update-view-metadata.dto.d.ts.map +1 -0
  387. package/dist/dtos/update-view-metadata.dto.js +79 -0
  388. package/dist/dtos/update-view-metadata.dto.js.map +1 -0
  389. package/dist/entities/action-metadata.entity.d.ts +18 -0
  390. package/dist/entities/action-metadata.entity.d.ts.map +1 -0
  391. package/dist/entities/action-metadata.entity.js +79 -0
  392. package/dist/entities/action-metadata.entity.js.map +1 -0
  393. package/dist/entities/common.entity.d.ts +8 -0
  394. package/dist/entities/common.entity.d.ts.map +1 -0
  395. package/dist/entities/common.entity.js +41 -0
  396. package/dist/entities/common.entity.js.map +1 -0
  397. package/dist/entities/email-attachment.entity.d.ts +11 -0
  398. package/dist/entities/email-attachment.entity.d.ts.map +1 -0
  399. package/dist/entities/email-attachment.entity.js +52 -0
  400. package/dist/entities/email-attachment.entity.js.map +1 -0
  401. package/dist/entities/email-template.entity.d.ts +12 -0
  402. package/dist/entities/email-template.entity.d.ts.map +1 -0
  403. package/dist/entities/email-template.entity.js +54 -0
  404. package/dist/entities/email-template.entity.js.map +1 -0
  405. package/dist/entities/field-metadata.entity.d.ts +45 -0
  406. package/dist/entities/field-metadata.entity.d.ts.map +1 -0
  407. package/dist/entities/field-metadata.entity.js +190 -0
  408. package/dist/entities/field-metadata.entity.js.map +1 -0
  409. package/dist/entities/list-of-values.entity.d.ts +10 -0
  410. package/dist/entities/list-of-values.entity.d.ts.map +1 -0
  411. package/dist/entities/list-of-values.entity.js +49 -0
  412. package/dist/entities/list-of-values.entity.js.map +1 -0
  413. package/dist/entities/media-storage-provider-metadata.entity.d.ts +10 -0
  414. package/dist/entities/media-storage-provider-metadata.entity.d.ts.map +1 -0
  415. package/dist/entities/media-storage-provider-metadata.entity.js +50 -0
  416. package/dist/entities/media-storage-provider-metadata.entity.js.map +1 -0
  417. package/dist/entities/media.entity.d.ts +12 -0
  418. package/dist/entities/media.entity.d.ts.map +1 -0
  419. package/dist/entities/media.entity.js +55 -0
  420. package/dist/entities/media.entity.js.map +1 -0
  421. package/dist/entities/menu-item-metadata.entity.d.ts +14 -0
  422. package/dist/entities/menu-item-metadata.entity.d.ts.map +1 -0
  423. package/dist/entities/menu-item-metadata.entity.js +63 -0
  424. package/dist/entities/menu-item-metadata.entity.js.map +1 -0
  425. package/dist/entities/model-metadata.entity.d.ts +21 -0
  426. package/dist/entities/model-metadata.entity.d.ts.map +1 -0
  427. package/dist/entities/model-metadata.entity.js +92 -0
  428. package/dist/entities/model-metadata.entity.js.map +1 -0
  429. package/dist/entities/module-metadata.entity.d.ts +13 -0
  430. package/dist/entities/module-metadata.entity.d.ts.map +1 -0
  431. package/dist/entities/module-metadata.entity.js +59 -0
  432. package/dist/entities/module-metadata.entity.js.map +1 -0
  433. package/dist/entities/mq-message-queue.entity.d.ts +8 -0
  434. package/dist/entities/mq-message-queue.entity.d.ts.map +1 -0
  435. package/dist/entities/mq-message-queue.entity.js +38 -0
  436. package/dist/entities/mq-message-queue.entity.js.map +1 -0
  437. package/dist/entities/mq-message.entity.d.ts +19 -0
  438. package/dist/entities/mq-message.entity.d.ts.map +1 -0
  439. package/dist/entities/mq-message.entity.js +84 -0
  440. package/dist/entities/mq-message.entity.js.map +1 -0
  441. package/dist/entities/permission-metadata.entity.d.ts +7 -0
  442. package/dist/entities/permission-metadata.entity.d.ts.map +1 -0
  443. package/dist/entities/permission-metadata.entity.js +35 -0
  444. package/dist/entities/permission-metadata.entity.js.map +1 -0
  445. package/dist/entities/role-metadata.entity.d.ts +11 -0
  446. package/dist/entities/role-metadata.entity.d.ts.map +1 -0
  447. package/dist/entities/role-metadata.entity.js +45 -0
  448. package/dist/entities/role-metadata.entity.js.map +1 -0
  449. package/dist/entities/sms-template.entity.d.ts +10 -0
  450. package/dist/entities/sms-template.entity.d.ts.map +1 -0
  451. package/dist/entities/sms-template.entity.js +49 -0
  452. package/dist/entities/sms-template.entity.js.map +1 -0
  453. package/dist/entities/user-password-history.entity.d.ts +7 -0
  454. package/dist/entities/user-password-history.entity.d.ts.map +1 -0
  455. package/dist/entities/user-password-history.entity.js +35 -0
  456. package/dist/entities/user-password-history.entity.js.map +1 -0
  457. package/dist/entities/user.entity.d.ts +34 -0
  458. package/dist/entities/user.entity.d.ts.map +1 -0
  459. package/dist/entities/user.entity.js +155 -0
  460. package/dist/entities/user.entity.js.map +1 -0
  461. package/dist/entities/view-metadata.entity.d.ts +13 -0
  462. package/dist/entities/view-metadata.entity.d.ts.map +1 -0
  463. package/dist/entities/view-metadata.entity.js +59 -0
  464. package/dist/entities/view-metadata.entity.js.map +1 -0
  465. package/dist/enums/auth-type.enum.d.ts +5 -0
  466. package/dist/enums/auth-type.enum.d.ts.map +1 -0
  467. package/dist/enums/auth-type.enum.js +9 -0
  468. package/dist/enums/auth-type.enum.js.map +1 -0
  469. package/dist/filters/http-exception.filter.d.ts +6 -0
  470. package/dist/filters/http-exception.filter.d.ts.map +1 -0
  471. package/dist/filters/http-exception.filter.js +47 -0
  472. package/dist/filters/http-exception.filter.js.map +1 -0
  473. package/dist/guards/access-token.guard.d.ts +14 -0
  474. package/dist/guards/access-token.guard.d.ts.map +1 -0
  475. package/dist/guards/access-token.guard.js +55 -0
  476. package/dist/guards/access-token.guard.js.map +1 -0
  477. package/dist/guards/authentication.guard.d.ts +14 -0
  478. package/dist/guards/authentication.guard.d.ts.map +1 -0
  479. package/dist/guards/authentication.guard.js +67 -0
  480. package/dist/guards/authentication.guard.js.map +1 -0
  481. package/dist/guards/permissions.guard.d.ts +9 -0
  482. package/dist/guards/permissions.guard.d.ts.map +1 -0
  483. package/dist/guards/permissions.guard.js +41 -0
  484. package/dist/guards/permissions.guard.js.map +1 -0
  485. package/dist/guards/roles.guard.d.ts +9 -0
  486. package/dist/guards/roles.guard.d.ts.map +1 -0
  487. package/dist/guards/roles.guard.js +39 -0
  488. package/dist/guards/roles.guard.js.map +1 -0
  489. package/dist/helpers/command.service.d.ts +5 -0
  490. package/dist/helpers/command.service.d.ts.map +1 -0
  491. package/dist/helpers/command.service.js +40 -0
  492. package/dist/helpers/command.service.js.map +1 -0
  493. package/dist/helpers/field-crud-managers/BigIntFieldCrudManager.d.ts +20 -0
  494. package/dist/helpers/field-crud-managers/BigIntFieldCrudManager.d.ts.map +1 -0
  495. package/dist/helpers/field-crud-managers/BigIntFieldCrudManager.js +45 -0
  496. package/dist/helpers/field-crud-managers/BigIntFieldCrudManager.js.map +1 -0
  497. package/dist/helpers/field-crud-managers/BooleanFieldCrudManager.d.ts +15 -0
  498. package/dist/helpers/field-crud-managers/BooleanFieldCrudManager.d.ts.map +1 -0
  499. package/dist/helpers/field-crud-managers/BooleanFieldCrudManager.js +34 -0
  500. package/dist/helpers/field-crud-managers/BooleanFieldCrudManager.js.map +1 -0
  501. package/dist/helpers/field-crud-managers/ComputedFieldCrudManager.d.ts +19 -0
  502. package/dist/helpers/field-crud-managers/ComputedFieldCrudManager.d.ts.map +1 -0
  503. package/dist/helpers/field-crud-managers/ComputedFieldCrudManager.js +32 -0
  504. package/dist/helpers/field-crud-managers/ComputedFieldCrudManager.js.map +1 -0
  505. package/dist/helpers/field-crud-managers/DateFieldCrudManager.d.ts +15 -0
  506. package/dist/helpers/field-crud-managers/DateFieldCrudManager.d.ts.map +1 -0
  507. package/dist/helpers/field-crud-managers/DateFieldCrudManager.js +34 -0
  508. package/dist/helpers/field-crud-managers/DateFieldCrudManager.js.map +1 -0
  509. package/dist/helpers/field-crud-managers/DecimalFieldCrudManager.d.ts +19 -0
  510. package/dist/helpers/field-crud-managers/DecimalFieldCrudManager.d.ts.map +1 -0
  511. package/dist/helpers/field-crud-managers/DecimalFieldCrudManager.js +42 -0
  512. package/dist/helpers/field-crud-managers/DecimalFieldCrudManager.js.map +1 -0
  513. package/dist/helpers/field-crud-managers/EmailFieldCrudManager.d.ts +20 -0
  514. package/dist/helpers/field-crud-managers/EmailFieldCrudManager.d.ts.map +1 -0
  515. package/dist/helpers/field-crud-managers/EmailFieldCrudManager.js +43 -0
  516. package/dist/helpers/field-crud-managers/EmailFieldCrudManager.js.map +1 -0
  517. package/dist/helpers/field-crud-managers/IntFieldCrudManager.d.ts +19 -0
  518. package/dist/helpers/field-crud-managers/IntFieldCrudManager.d.ts.map +1 -0
  519. package/dist/helpers/field-crud-managers/IntFieldCrudManager.js +42 -0
  520. package/dist/helpers/field-crud-managers/IntFieldCrudManager.js.map +1 -0
  521. package/dist/helpers/field-crud-managers/JsonFieldCrudManager.d.ts +15 -0
  522. package/dist/helpers/field-crud-managers/JsonFieldCrudManager.d.ts.map +1 -0
  523. package/dist/helpers/field-crud-managers/JsonFieldCrudManager.js +34 -0
  524. package/dist/helpers/field-crud-managers/JsonFieldCrudManager.js.map +1 -0
  525. package/dist/helpers/field-crud-managers/LongTextFieldCrudManager.d.ts +18 -0
  526. package/dist/helpers/field-crud-managers/LongTextFieldCrudManager.d.ts.map +1 -0
  527. package/dist/helpers/field-crud-managers/LongTextFieldCrudManager.js +41 -0
  528. package/dist/helpers/field-crud-managers/LongTextFieldCrudManager.js.map +1 -0
  529. package/dist/helpers/field-crud-managers/ManyToManyRelationFieldCrudManager.d.ts +33 -0
  530. package/dist/helpers/field-crud-managers/ManyToManyRelationFieldCrudManager.d.ts.map +1 -0
  531. package/dist/helpers/field-crud-managers/ManyToManyRelationFieldCrudManager.js +154 -0
  532. package/dist/helpers/field-crud-managers/ManyToManyRelationFieldCrudManager.js.map +1 -0
  533. package/dist/helpers/field-crud-managers/ManyToOneRelationFieldCrudManager.d.ts +24 -0
  534. package/dist/helpers/field-crud-managers/ManyToOneRelationFieldCrudManager.d.ts.map +1 -0
  535. package/dist/helpers/field-crud-managers/ManyToOneRelationFieldCrudManager.js +72 -0
  536. package/dist/helpers/field-crud-managers/ManyToOneRelationFieldCrudManager.js.map +1 -0
  537. package/dist/helpers/field-crud-managers/MediaFieldCrudManager.d.ts +20 -0
  538. package/dist/helpers/field-crud-managers/MediaFieldCrudManager.d.ts.map +1 -0
  539. package/dist/helpers/field-crud-managers/MediaFieldCrudManager.js +59 -0
  540. package/dist/helpers/field-crud-managers/MediaFieldCrudManager.js.map +1 -0
  541. package/dist/helpers/field-crud-managers/NoOpsFieldCrudManager.d.ts +8 -0
  542. package/dist/helpers/field-crud-managers/NoOpsFieldCrudManager.d.ts.map +1 -0
  543. package/dist/helpers/field-crud-managers/NoOpsFieldCrudManager.js +15 -0
  544. package/dist/helpers/field-crud-managers/NoOpsFieldCrudManager.js.map +1 -0
  545. package/dist/helpers/field-crud-managers/OneToManyRelationFieldCrudManager.d.ts +32 -0
  546. package/dist/helpers/field-crud-managers/OneToManyRelationFieldCrudManager.d.ts.map +1 -0
  547. package/dist/helpers/field-crud-managers/OneToManyRelationFieldCrudManager.js +158 -0
  548. package/dist/helpers/field-crud-managers/OneToManyRelationFieldCrudManager.js.map +1 -0
  549. package/dist/helpers/field-crud-managers/PasswordFieldCrudManager.d.ts +23 -0
  550. package/dist/helpers/field-crud-managers/PasswordFieldCrudManager.d.ts.map +1 -0
  551. package/dist/helpers/field-crud-managers/PasswordFieldCrudManager.js +57 -0
  552. package/dist/helpers/field-crud-managers/PasswordFieldCrudManager.js.map +1 -0
  553. package/dist/helpers/field-crud-managers/RichTextFieldCrudManager.d.ts +18 -0
  554. package/dist/helpers/field-crud-managers/RichTextFieldCrudManager.d.ts.map +1 -0
  555. package/dist/helpers/field-crud-managers/RichTextFieldCrudManager.js +41 -0
  556. package/dist/helpers/field-crud-managers/RichTextFieldCrudManager.js.map +1 -0
  557. package/dist/helpers/field-crud-managers/SelectionDynamicFieldCrudManager.d.ts +24 -0
  558. package/dist/helpers/field-crud-managers/SelectionDynamicFieldCrudManager.d.ts.map +1 -0
  559. package/dist/helpers/field-crud-managers/SelectionDynamicFieldCrudManager.js +63 -0
  560. package/dist/helpers/field-crud-managers/SelectionDynamicFieldCrudManager.js.map +1 -0
  561. package/dist/helpers/field-crud-managers/SelectionStaticFieldCrudManager.d.ts +20 -0
  562. package/dist/helpers/field-crud-managers/SelectionStaticFieldCrudManager.d.ts.map +1 -0
  563. package/dist/helpers/field-crud-managers/SelectionStaticFieldCrudManager.js +56 -0
  564. package/dist/helpers/field-crud-managers/SelectionStaticFieldCrudManager.js.map +1 -0
  565. package/dist/helpers/field-crud-managers/ShortTextFieldCrudManager.d.ts +20 -0
  566. package/dist/helpers/field-crud-managers/ShortTextFieldCrudManager.d.ts.map +1 -0
  567. package/dist/helpers/field-crud-managers/ShortTextFieldCrudManager.js +45 -0
  568. package/dist/helpers/field-crud-managers/ShortTextFieldCrudManager.js.map +1 -0
  569. package/dist/helpers/field-crud-managers/UUIDFieldCrudManager.d.ts +15 -0
  570. package/dist/helpers/field-crud-managers/UUIDFieldCrudManager.d.ts.map +1 -0
  571. package/dist/helpers/field-crud-managers/UUIDFieldCrudManager.js +41 -0
  572. package/dist/helpers/field-crud-managers/UUIDFieldCrudManager.js.map +1 -0
  573. package/dist/helpers/module.helper.d.ts +3 -0
  574. package/dist/helpers/module.helper.d.ts.map +1 -0
  575. package/dist/helpers/module.helper.js +56 -0
  576. package/dist/helpers/module.helper.js.map +1 -0
  577. package/dist/helpers/schematic.service.d.ts +25 -0
  578. package/dist/helpers/schematic.service.d.ts.map +1 -0
  579. package/dist/helpers/schematic.service.js +77 -0
  580. package/dist/helpers/schematic.service.js.map +1 -0
  581. package/dist/helpers/solid-registry.d.ts +39 -0
  582. package/dist/helpers/solid-registry.d.ts.map +1 -0
  583. package/dist/helpers/solid-registry.js +86 -0
  584. package/dist/helpers/solid-registry.js.map +1 -0
  585. package/dist/index.d.ts +202 -0
  586. package/dist/index.d.ts.map +1 -0
  587. package/dist/index.js +218 -0
  588. package/dist/index.js.map +1 -0
  589. package/dist/interceptors/logging.interceptor.d.ts +72 -0
  590. package/dist/interceptors/logging.interceptor.d.ts.map +1 -0
  591. package/dist/interceptors/logging.interceptor.js +110 -0
  592. package/dist/interceptors/logging.interceptor.js.map +1 -0
  593. package/dist/interceptors/wrap-response.interceptor.d.ts +7 -0
  594. package/dist/interceptors/wrap-response.interceptor.d.ts.map +1 -0
  595. package/dist/interceptors/wrap-response.interceptor.js +32 -0
  596. package/dist/interceptors/wrap-response.interceptor.js.map +1 -0
  597. package/dist/interfaces/active-user-data.interface.d.ts +8 -0
  598. package/dist/interfaces/active-user-data.interface.d.ts.map +1 -0
  599. package/dist/interfaces/active-user-data.interface.js +3 -0
  600. package/dist/interfaces/active-user-data.interface.js.map +1 -0
  601. package/dist/interfaces/mq.d.ts +20 -0
  602. package/dist/interfaces/mq.d.ts.map +1 -0
  603. package/dist/interfaces/mq.js +3 -0
  604. package/dist/interfaces/mq.js.map +1 -0
  605. package/dist/interfaces.d.ts +100 -0
  606. package/dist/interfaces.d.ts.map +1 -0
  607. package/dist/interfaces.js +19 -0
  608. package/dist/interfaces.js.map +1 -0
  609. package/dist/jobs/api-email-publisher.service.d.ts +11 -0
  610. package/dist/jobs/api-email-publisher.service.d.ts.map +1 -0
  611. package/dist/jobs/api-email-publisher.service.js +39 -0
  612. package/dist/jobs/api-email-publisher.service.js.map +1 -0
  613. package/dist/jobs/api-email-queue-options.d.ts +8 -0
  614. package/dist/jobs/api-email-queue-options.d.ts.map +1 -0
  615. package/dist/jobs/api-email-queue-options.js +10 -0
  616. package/dist/jobs/api-email-queue-options.js.map +1 -0
  617. package/dist/jobs/api-email-subscriber.service.d.ts +15 -0
  618. package/dist/jobs/api-email-subscriber.service.d.ts.map +1 -0
  619. package/dist/jobs/api-email-subscriber.service.js +45 -0
  620. package/dist/jobs/api-email-subscriber.service.js.map +1 -0
  621. package/dist/jobs/email-publisher.service.d.ts +11 -0
  622. package/dist/jobs/email-publisher.service.d.ts.map +1 -0
  623. package/dist/jobs/email-publisher.service.js +39 -0
  624. package/dist/jobs/email-publisher.service.js.map +1 -0
  625. package/dist/jobs/email-queue-options.d.ts +8 -0
  626. package/dist/jobs/email-queue-options.d.ts.map +1 -0
  627. package/dist/jobs/email-queue-options.js +10 -0
  628. package/dist/jobs/email-queue-options.js.map +1 -0
  629. package/dist/jobs/email-subscriber.service.d.ts +15 -0
  630. package/dist/jobs/email-subscriber.service.d.ts.map +1 -0
  631. package/dist/jobs/email-subscriber.service.js +45 -0
  632. package/dist/jobs/email-subscriber.service.js.map +1 -0
  633. package/dist/jobs/otp-publisher.service.d.ts +11 -0
  634. package/dist/jobs/otp-publisher.service.d.ts.map +1 -0
  635. package/dist/jobs/otp-publisher.service.js +39 -0
  636. package/dist/jobs/otp-publisher.service.js.map +1 -0
  637. package/dist/jobs/otp-queue-options.d.ts +8 -0
  638. package/dist/jobs/otp-queue-options.d.ts.map +1 -0
  639. package/dist/jobs/otp-queue-options.js +10 -0
  640. package/dist/jobs/otp-queue-options.js.map +1 -0
  641. package/dist/jobs/otp-subscriber.service.d.ts +15 -0
  642. package/dist/jobs/otp-subscriber.service.d.ts.map +1 -0
  643. package/dist/jobs/otp-subscriber.service.js +45 -0
  644. package/dist/jobs/otp-subscriber.service.js.map +1 -0
  645. package/dist/jobs/queue-test-publisher.service.d.ts +11 -0
  646. package/dist/jobs/queue-test-publisher.service.d.ts.map +1 -0
  647. package/dist/jobs/queue-test-publisher.service.js +39 -0
  648. package/dist/jobs/queue-test-publisher.service.js.map +1 -0
  649. package/dist/jobs/queue-test-subscriber.service.d.ts +13 -0
  650. package/dist/jobs/queue-test-subscriber.service.d.ts.map +1 -0
  651. package/dist/jobs/queue-test-subscriber.service.js +42 -0
  652. package/dist/jobs/queue-test-subscriber.service.js.map +1 -0
  653. package/dist/jobs/sms-publisher.service.d.ts +11 -0
  654. package/dist/jobs/sms-publisher.service.d.ts.map +1 -0
  655. package/dist/jobs/sms-publisher.service.js +39 -0
  656. package/dist/jobs/sms-publisher.service.js.map +1 -0
  657. package/dist/jobs/sms-queue-options.d.ts +8 -0
  658. package/dist/jobs/sms-queue-options.d.ts.map +1 -0
  659. package/dist/jobs/sms-queue-options.js +10 -0
  660. package/dist/jobs/sms-queue-options.js.map +1 -0
  661. package/dist/jobs/sms-subscriber.service.d.ts +15 -0
  662. package/dist/jobs/sms-subscriber.service.d.ts.map +1 -0
  663. package/dist/jobs/sms-subscriber.service.js +45 -0
  664. package/dist/jobs/sms-subscriber.service.js.map +1 -0
  665. package/dist/jobs/test-queue.config.d.ts +8 -0
  666. package/dist/jobs/test-queue.config.d.ts.map +1 -0
  667. package/dist/jobs/test-queue.config.js +10 -0
  668. package/dist/jobs/test-queue.config.js.map +1 -0
  669. package/dist/jobs/whatsapp-publisher.service.d.ts +11 -0
  670. package/dist/jobs/whatsapp-publisher.service.d.ts.map +1 -0
  671. package/dist/jobs/whatsapp-publisher.service.js +39 -0
  672. package/dist/jobs/whatsapp-publisher.service.js.map +1 -0
  673. package/dist/jobs/whatsapp-queue-options.d.ts +8 -0
  674. package/dist/jobs/whatsapp-queue-options.d.ts.map +1 -0
  675. package/dist/jobs/whatsapp-queue-options.js +10 -0
  676. package/dist/jobs/whatsapp-queue-options.js.map +1 -0
  677. package/dist/jobs/whatsapp-subscriber.service.d.ts +15 -0
  678. package/dist/jobs/whatsapp-subscriber.service.d.ts.map +1 -0
  679. package/dist/jobs/whatsapp-subscriber.service.js +45 -0
  680. package/dist/jobs/whatsapp-subscriber.service.js.map +1 -0
  681. package/dist/listeners/user-registration.listener.d.ts +7 -0
  682. package/dist/listeners/user-registration.listener.d.ts.map +1 -0
  683. package/dist/listeners/user-registration.listener.js +35 -0
  684. package/dist/listeners/user-registration.listener.js.map +1 -0
  685. package/dist/passport-strategies/google-oauth.strategy.d.ts +18 -0
  686. package/dist/passport-strategies/google-oauth.strategy.d.ts.map +1 -0
  687. package/dist/passport-strategies/google-oauth.strategy.js +64 -0
  688. package/dist/passport-strategies/google-oauth.strategy.js.map +1 -0
  689. package/dist/passport-strategies/local.strategy.d.ts +15 -0
  690. package/dist/passport-strategies/local.strategy.d.ts.map +1 -0
  691. package/dist/passport-strategies/local.strategy.js +44 -0
  692. package/dist/passport-strategies/local.strategy.js.map +1 -0
  693. package/dist/providers/list-of-values-selection-providers.service.d.ts +15 -0
  694. package/dist/providers/list-of-values-selection-providers.service.d.ts.map +1 -0
  695. package/dist/providers/list-of-values-selection-providers.service.js +50 -0
  696. package/dist/providers/list-of-values-selection-providers.service.js.map +1 -0
  697. package/dist/seeders/email-template-seeder.service.d.ts +11 -0
  698. package/dist/seeders/email-template-seeder.service.d.ts.map +1 -0
  699. package/dist/seeders/email-template-seeder.service.js +89 -0
  700. package/dist/seeders/email-template-seeder.service.js.map +1 -0
  701. package/dist/seeders/module-metadata-seeder.service.d.ts +52 -0
  702. package/dist/seeders/module-metadata-seeder.service.d.ts.map +1 -0
  703. package/dist/seeders/module-metadata-seeder.service.js +338 -0
  704. package/dist/seeders/module-metadata-seeder.service.js.map +1 -0
  705. package/dist/seeders/permission-metadata-seeder.service.d.ts +13 -0
  706. package/dist/seeders/permission-metadata-seeder.service.d.ts.map +1 -0
  707. package/dist/seeders/permission-metadata-seeder.service.js +73 -0
  708. package/dist/seeders/permission-metadata-seeder.service.js.map +1 -0
  709. package/dist/seeders/seed-data/solid-core-metadata.json +5534 -0
  710. package/dist/seeders/sms-template-seeder.service.d.ts +11 -0
  711. package/dist/seeders/sms-template-seeder.service.d.ts.map +1 -0
  712. package/dist/seeders/sms-template-seeder.service.js +91 -0
  713. package/dist/seeders/sms-template-seeder.service.js.map +1 -0
  714. package/dist/seeders/user-seeder.service.d.ts +10 -0
  715. package/dist/seeders/user-seeder.service.d.ts.map +1 -0
  716. package/dist/seeders/user-seeder.service.js +43 -0
  717. package/dist/seeders/user-seeder.service.js.map +1 -0
  718. package/dist/services/access-token-storage.service.d.ts +1 -0
  719. package/dist/services/access-token-storage.service.d.ts.map +1 -0
  720. package/dist/services/access-token-storage.service.js +1 -0
  721. package/dist/services/access-token-storage.service.js.map +1 -0
  722. package/dist/services/action-metadata.service.d.ts +27 -0
  723. package/dist/services/action-metadata.service.d.ts.map +1 -0
  724. package/dist/services/action-metadata.service.js +84 -0
  725. package/dist/services/action-metadata.service.js.map +1 -0
  726. package/dist/services/authentication.service.d.ts +166 -0
  727. package/dist/services/authentication.service.d.ts.map +1 -0
  728. package/dist/services/authentication.service.js +766 -0
  729. package/dist/services/authentication.service.js.map +1 -0
  730. package/dist/services/bcrypt.service.d.ts +6 -0
  731. package/dist/services/bcrypt.service.d.ts.map +1 -0
  732. package/dist/services/bcrypt.service.js +25 -0
  733. package/dist/services/bcrypt.service.js.map +1 -0
  734. package/dist/services/computed-fields/uuid-external-id-computed-field-provider.service.d.ts +8 -0
  735. package/dist/services/computed-fields/uuid-external-id-computed-field-provider.service.d.ts.map +1 -0
  736. package/dist/services/computed-fields/uuid-external-id-computed-field-provider.service.js +33 -0
  737. package/dist/services/computed-fields/uuid-external-id-computed-field-provider.service.js.map +1 -0
  738. package/dist/services/crud-helper.service.d.ts +25 -0
  739. package/dist/services/crud-helper.service.d.ts.map +1 -0
  740. package/dist/services/crud-helper.service.js +239 -0
  741. package/dist/services/crud-helper.service.js.map +1 -0
  742. package/dist/services/crud.service.d.ts +60 -0
  743. package/dist/services/crud.service.d.ts.map +1 -0
  744. package/dist/services/crud.service.js +493 -0
  745. package/dist/services/crud.service.js.map +1 -0
  746. package/dist/services/email-template.service.d.ts +18 -0
  747. package/dist/services/email-template.service.d.ts.map +1 -0
  748. package/dist/services/email-template.service.js +86 -0
  749. package/dist/services/email-template.service.js.map +1 -0
  750. package/dist/services/field-metadata.service.d.ts +269 -0
  751. package/dist/services/field-metadata.service.d.ts.map +1 -0
  752. package/dist/services/field-metadata.service.js +726 -0
  753. package/dist/services/field-metadata.service.js.map +1 -0
  754. package/dist/services/file.service.d.ts +16 -0
  755. package/dist/services/file.service.d.ts.map +1 -0
  756. package/dist/services/file.service.js +167 -0
  757. package/dist/services/file.service.js.map +1 -0
  758. package/dist/services/hashing.service.d.ts +5 -0
  759. package/dist/services/hashing.service.d.ts.map +1 -0
  760. package/dist/services/hashing.service.js +17 -0
  761. package/dist/services/hashing.service.js.map +1 -0
  762. package/dist/services/list-of-values.service.d.ts +13 -0
  763. package/dist/services/list-of-values.service.d.ts.map +1 -0
  764. package/dist/services/list-of-values.service.js +67 -0
  765. package/dist/services/list-of-values.service.js.map +1 -0
  766. package/dist/services/mail/ElasticEmailService.d.ts +26 -0
  767. package/dist/services/mail/ElasticEmailService.d.ts.map +1 -0
  768. package/dist/services/mail/ElasticEmailService.js +165 -0
  769. package/dist/services/mail/ElasticEmailService.js.map +1 -0
  770. package/dist/services/mail/SMTPEmailService.d.ts +19 -0
  771. package/dist/services/mail/SMTPEmailService.d.ts.map +1 -0
  772. package/dist/services/mail/SMTPEmailService.js +98 -0
  773. package/dist/services/mail/SMTPEmailService.js.map +1 -0
  774. package/dist/services/media-storage-provider-metadata-seeder.service.d.ts +8 -0
  775. package/dist/services/media-storage-provider-metadata-seeder.service.d.ts.map +1 -0
  776. package/dist/services/media-storage-provider-metadata-seeder.service.js +43 -0
  777. package/dist/services/media-storage-provider-metadata-seeder.service.js.map +1 -0
  778. package/dist/services/media-storage-provider-metadata.service.d.ts +30 -0
  779. package/dist/services/media-storage-provider-metadata.service.d.ts.map +1 -0
  780. package/dist/services/media-storage-provider-metadata.service.js +139 -0
  781. package/dist/services/media-storage-provider-metadata.service.js.map +1 -0
  782. package/dist/services/media.service.d.ts +42 -0
  783. package/dist/services/media.service.d.ts.map +1 -0
  784. package/dist/services/media.service.js +227 -0
  785. package/dist/services/media.service.js.map +1 -0
  786. package/dist/services/mediaStorageProviders/file-s3-storage-provider.d.ts +19 -0
  787. package/dist/services/mediaStorageProviders/file-s3-storage-provider.d.ts.map +1 -0
  788. package/dist/services/mediaStorageProviders/file-s3-storage-provider.js +68 -0
  789. package/dist/services/mediaStorageProviders/file-s3-storage-provider.js.map +1 -0
  790. package/dist/services/mediaStorageProviders/file-storage-provider.d.ts +19 -0
  791. package/dist/services/mediaStorageProviders/file-storage-provider.d.ts.map +1 -0
  792. package/dist/services/mediaStorageProviders/file-storage-provider.js +62 -0
  793. package/dist/services/mediaStorageProviders/file-storage-provider.js.map +1 -0
  794. package/dist/services/mediaStorageProviders/index.d.ts +7 -0
  795. package/dist/services/mediaStorageProviders/index.d.ts.map +1 -0
  796. package/dist/services/mediaStorageProviders/index.js +17 -0
  797. package/dist/services/mediaStorageProviders/index.js.map +1 -0
  798. package/dist/services/menu-item-metadata.service.d.ts +31 -0
  799. package/dist/services/menu-item-metadata.service.d.ts.map +1 -0
  800. package/dist/services/menu-item-metadata.service.js +151 -0
  801. package/dist/services/menu-item-metadata.service.js.map +1 -0
  802. package/dist/services/model-metadata.service.d.ts +54 -0
  803. package/dist/services/model-metadata.service.d.ts.map +1 -0
  804. package/dist/services/model-metadata.service.js +649 -0
  805. package/dist/services/model-metadata.service.js.map +1 -0
  806. package/dist/services/module-metadata.service.d.ts +58 -0
  807. package/dist/services/module-metadata.service.d.ts.map +1 -0
  808. package/dist/services/module-metadata.service.js +379 -0
  809. package/dist/services/module-metadata.service.js.map +1 -0
  810. package/dist/services/mq-message-queue.service.d.ts +26 -0
  811. package/dist/services/mq-message-queue.service.d.ts.map +1 -0
  812. package/dist/services/mq-message-queue.service.js +72 -0
  813. package/dist/services/mq-message-queue.service.js.map +1 -0
  814. package/dist/services/mq-message.service.d.ts +25 -0
  815. package/dist/services/mq-message.service.d.ts.map +1 -0
  816. package/dist/services/mq-message.service.js +60 -0
  817. package/dist/services/mq-message.service.js.map +1 -0
  818. package/dist/services/pdf.service.d.ts +4 -0
  819. package/dist/services/pdf.service.d.ts.map +1 -0
  820. package/dist/services/pdf.service.js +61 -0
  821. package/dist/services/pdf.service.js.map +1 -0
  822. package/dist/services/permission-metadata.service.d.ts +33 -0
  823. package/dist/services/permission-metadata.service.d.ts.map +1 -0
  824. package/dist/services/permission-metadata.service.js +112 -0
  825. package/dist/services/permission-metadata.service.js.map +1 -0
  826. package/dist/services/rabbitmq-publisher.service.d.ts +14 -0
  827. package/dist/services/rabbitmq-publisher.service.d.ts.map +1 -0
  828. package/dist/services/rabbitmq-publisher.service.js +117 -0
  829. package/dist/services/rabbitmq-publisher.service.js.map +1 -0
  830. package/dist/services/rabbitmq-subscriber.service.d.ts +18 -0
  831. package/dist/services/rabbitmq-subscriber.service.d.ts.map +1 -0
  832. package/dist/services/rabbitmq-subscriber.service.js +172 -0
  833. package/dist/services/rabbitmq-subscriber.service.js.map +1 -0
  834. package/dist/services/refresh-token-ids-storage.service.d.ts +12 -0
  835. package/dist/services/refresh-token-ids-storage.service.d.ts.map +1 -0
  836. package/dist/services/refresh-token-ids-storage.service.js +48 -0
  837. package/dist/services/refresh-token-ids-storage.service.js.map +1 -0
  838. package/dist/services/role-metadata.service.d.ts +37 -0
  839. package/dist/services/role-metadata.service.d.ts.map +1 -0
  840. package/dist/services/role-metadata.service.js +191 -0
  841. package/dist/services/role-metadata.service.js.map +1 -0
  842. package/dist/services/selection-providers/list-of-models-selection-provider.service.d.ts +11 -0
  843. package/dist/services/selection-providers/list-of-models-selection-provider.service.d.ts.map +1 -0
  844. package/dist/services/selection-providers/list-of-models-selection-provider.service.js +69 -0
  845. package/dist/services/selection-providers/list-of-models-selection-provider.service.js.map +1 -0
  846. package/dist/services/short-url/tiny-url.service.d.ts +14 -0
  847. package/dist/services/short-url/tiny-url.service.d.ts.map +1 -0
  848. package/dist/services/short-url/tiny-url.service.js +51 -0
  849. package/dist/services/short-url/tiny-url.service.js.map +1 -0
  850. package/dist/services/sms/Msg91BaseSMSService.d.ts +19 -0
  851. package/dist/services/sms/Msg91BaseSMSService.d.ts.map +1 -0
  852. package/dist/services/sms/Msg91BaseSMSService.js +60 -0
  853. package/dist/services/sms/Msg91BaseSMSService.js.map +1 -0
  854. package/dist/services/sms/Msg91OTPService.d.ts +15 -0
  855. package/dist/services/sms/Msg91OTPService.d.ts.map +1 -0
  856. package/dist/services/sms/Msg91OTPService.js +55 -0
  857. package/dist/services/sms/Msg91OTPService.js.map +1 -0
  858. package/dist/services/sms/Msg91SMSService.d.ts +14 -0
  859. package/dist/services/sms/Msg91SMSService.d.ts.map +1 -0
  860. package/dist/services/sms/Msg91SMSService.js +46 -0
  861. package/dist/services/sms/Msg91SMSService.js.map +1 -0
  862. package/dist/services/sms-template.service.d.ts +18 -0
  863. package/dist/services/sms-template.service.d.ts.map +1 -0
  864. package/dist/services/sms-template.service.js +84 -0
  865. package/dist/services/sms-template.service.js.map +1 -0
  866. package/dist/services/solid-introspect.service.d.ts +18 -0
  867. package/dist/services/solid-introspect.service.d.ts.map +1 -0
  868. package/dist/services/solid-introspect.service.js +114 -0
  869. package/dist/services/solid-introspect.service.js.map +1 -0
  870. package/dist/services/user.service.d.ts +38 -0
  871. package/dist/services/user.service.d.ts.map +1 -0
  872. package/dist/services/user.service.js +199 -0
  873. package/dist/services/user.service.js.map +1 -0
  874. package/dist/services/view-metadata.service.d.ts +40 -0
  875. package/dist/services/view-metadata.service.d.ts.map +1 -0
  876. package/dist/services/view-metadata.service.js +149 -0
  877. package/dist/services/view-metadata.service.js.map +1 -0
  878. package/dist/services/whatsapp/Msg91WhatsappService.d.ts +32 -0
  879. package/dist/services/whatsapp/Msg91WhatsappService.d.ts.map +1 -0
  880. package/dist/services/whatsapp/Msg91WhatsappService.js +103 -0
  881. package/dist/services/whatsapp/Msg91WhatsappService.js.map +1 -0
  882. package/dist/solid-core.module.d.ts +3 -0
  883. package/dist/solid-core.module.d.ts.map +1 -0
  884. package/dist/solid-core.module.js +314 -0
  885. package/dist/solid-core.module.js.map +1 -0
  886. package/dist/subscribers/model.subscriber.d.ts +10 -0
  887. package/dist/subscribers/model.subscriber.d.ts.map +1 -0
  888. package/dist/subscribers/model.subscriber.js +81 -0
  889. package/dist/subscribers/model.subscriber.js.map +1 -0
  890. package/dist/subscribers/softDeleteAwareEventSubscriber.subscriber.d.ts +9 -0
  891. package/dist/subscribers/softDeleteAwareEventSubscriber.subscriber.d.ts.map +1 -0
  892. package/dist/subscribers/softDeleteAwareEventSubscriber.subscriber.js +52 -0
  893. package/dist/subscribers/softDeleteAwareEventSubscriber.subscriber.js.map +1 -0
  894. package/dist/transformers/array-transformer.d.ts +3 -0
  895. package/dist/transformers/array-transformer.d.ts.map +1 -0
  896. package/dist/transformers/array-transformer.js +13 -0
  897. package/dist/transformers/array-transformer.js.map +1 -0
  898. package/dist/transformers/boolean-transformer.d.ts +4 -0
  899. package/dist/transformers/boolean-transformer.d.ts.map +1 -0
  900. package/dist/transformers/boolean-transformer.js +15 -0
  901. package/dist/transformers/boolean-transformer.js.map +1 -0
  902. package/dist/transformers/integer-transformer.d.ts +3 -0
  903. package/dist/transformers/integer-transformer.d.ts.map +1 -0
  904. package/dist/transformers/integer-transformer.js +10 -0
  905. package/dist/transformers/integer-transformer.js.map +1 -0
  906. package/dist/tsconfig.tsbuildinfo +1 -0
  907. package/dist/validators/is-parsable-int.d.ts +3 -0
  908. package/dist/validators/is-parsable-int.d.ts.map +1 -0
  909. package/dist/validators/is-parsable-int.js +24 -0
  910. package/dist/validators/is-parsable-int.js.map +1 -0
  911. package/nest-cli.json +9 -0
  912. package/package.json +132 -0
  913. package/solidstarters-solid-core-module-1.1.3.tgz +0 -0
  914. package/src/commands/basic.command.ts +60 -0
  915. package/src/commands/helper.ts +11 -0
  916. package/src/commands/refresh-model.command.ts +73 -0
  917. package/src/commands/refresh-module.command.ts +74 -0
  918. package/src/commands/remove-fields.command.ts +67 -0
  919. package/src/commands/seed.command.ts +54 -0
  920. package/src/config/app-builder.config.ts +12 -0
  921. package/src/config/common.config.ts +44 -0
  922. package/src/config/iam.config.ts +32 -0
  923. package/src/config/redis.options.ts +20 -0
  924. package/src/constants.ts +26 -0
  925. package/src/controllers/action-metadata.controller.ts +66 -0
  926. package/src/controllers/authentication.controller.ts +100 -0
  927. package/src/controllers/email-template.controller.ts +150 -0
  928. package/src/controllers/field-metadata.controller.ts +72 -0
  929. package/src/controllers/google-authentication.controller.ts +78 -0
  930. package/src/controllers/media-storage-provider-metadata.controller.ts +64 -0
  931. package/src/controllers/media.controller.ts +75 -0
  932. package/src/controllers/menu-item-metadata.controller.ts +79 -0
  933. package/src/controllers/model-metadata.controller.ts +88 -0
  934. package/src/controllers/module-metadata.controller.ts +88 -0
  935. package/src/controllers/mq-message-queue.controller.ts +66 -0
  936. package/src/controllers/mq-message.controller.ts +66 -0
  937. package/src/controllers/otp-authentication.controller.ts +64 -0
  938. package/src/controllers/permission-metadata.controller.ts +69 -0
  939. package/src/controllers/queues-test.controller.ts +33 -0
  940. package/src/controllers/role-metadata.controller.ts +69 -0
  941. package/src/controllers/service.controller.ts +39 -0
  942. package/src/controllers/sms-template.controller.ts +49 -0
  943. package/src/controllers/test.controller.ts +52 -0
  944. package/src/controllers/user.controller.ts +110 -0
  945. package/src/controllers/user.controller.ts.bkp +78 -0
  946. package/src/controllers/view-metadata.controller.ts +74 -0
  947. package/src/decorators/active-user.decorator.ts +11 -0
  948. package/src/decorators/auth.decorator.ts +6 -0
  949. package/src/decorators/computed-field-provider.decorator.ts +7 -0
  950. package/src/decorators/is-not-in-enum.decorator.ts +24 -0
  951. package/src/decorators/protocol.decorator.ts +13 -0
  952. package/src/decorators/public.decorator.ts +5 -0
  953. package/src/decorators/roles.decorator.ts +5 -0
  954. package/src/decorators/selection-provider.decorator.ts +7 -0
  955. package/src/decorators/solid-database-module.decorator.ts +7 -0
  956. package/src/decorators/solid-service.decorator.ts +5 -0
  957. package/src/dtos/basic-filters.dto.ts +47 -0
  958. package/src/dtos/change-password.dto.ts +15 -0
  959. package/src/dtos/confirm-forgot-password.dto.ts +17 -0
  960. package/src/dtos/create-action-metadata.dto.ts +58 -0
  961. package/src/dtos/create-email-attachment.dto.ts +27 -0
  962. package/src/dtos/create-email-template.dto.ts +30 -0
  963. package/src/dtos/create-field-metadata.dto.ts +385 -0
  964. package/src/dtos/create-list-of-values.dto.ts +22 -0
  965. package/src/dtos/create-media-storage-provider-metadata.dto.ts +37 -0
  966. package/src/dtos/create-media.dto.ts +23 -0
  967. package/src/dtos/create-menu-item-metadata.dto.ts +60 -0
  968. package/src/dtos/create-message.dto.ts +12 -0
  969. package/src/dtos/create-model-metadata.dto.ts +101 -0
  970. package/src/dtos/create-module-metadata.dto.ts +52 -0
  971. package/src/dtos/create-mq-message-queue.dto.ts +26 -0
  972. package/src/dtos/create-mq-message.dto.ts +48 -0
  973. package/src/dtos/create-permission-metadata.dto.ts +23 -0
  974. package/src/dtos/create-role-metadata.dto.ts +53 -0
  975. package/src/dtos/create-short-url.dto.ts +18 -0
  976. package/src/dtos/create-sms-template.dto.ts +20 -0
  977. package/src/dtos/create-user.dto.ts +121 -0
  978. package/src/dtos/create-view-metadata.dto.ts +39 -0
  979. package/src/dtos/fetch-roles.dto.ts +12 -0
  980. package/src/dtos/initiate-forgot-password.dto.ts +13 -0
  981. package/src/dtos/mutate-role-permissions.dto.ts +13 -0
  982. package/src/dtos/mutate-user-roles-list.dto.ts +14 -0
  983. package/src/dtos/mutate-user-roles.dto.ts +14 -0
  984. package/src/dtos/oauth-user-dto.ts +12 -0
  985. package/src/dtos/otp-confirm-otp.dto.ts +18 -0
  986. package/src/dtos/otp-sign-in.dto.ts +11 -0
  987. package/src/dtos/otp-sign-up.dto.ts +23 -0
  988. package/src/dtos/pagination-query.dto.ts +23 -0
  989. package/src/dtos/query.dto.ts +8 -0
  990. package/src/dtos/refresh-token.dto.ts +6 -0
  991. package/src/dtos/register-private.dto.ts +17 -0
  992. package/src/dtos/selection-dynamic-query.dto.ts +29 -0
  993. package/src/dtos/sign-in.dto.ts +21 -0
  994. package/src/dtos/sign-up.dto.ts +30 -0
  995. package/src/dtos/sort-filter.dto.ts +14 -0
  996. package/src/dtos/update-action-metadata.dto.ts +67 -0
  997. package/src/dtos/update-email-template.dto.ts +4 -0
  998. package/src/dtos/update-field-metadata.dto.ts +10 -0
  999. package/src/dtos/update-media-storage-provider.dto.ts +5 -0
  1000. package/src/dtos/update-media.dto.ts +5 -0
  1001. package/src/dtos/update-menu-item-metadata.dto.ts +64 -0
  1002. package/src/dtos/update-message.dto.ts +17 -0
  1003. package/src/dtos/update-model-metadata.dto.ts +21 -0
  1004. package/src/dtos/update-module-metadata.dto.ts +5 -0
  1005. package/src/dtos/update-mq-message-queue.dto.ts +32 -0
  1006. package/src/dtos/update-mq-message.dto.ts +63 -0
  1007. package/src/dtos/update-permission-metadata.dto.ts +27 -0
  1008. package/src/dtos/update-role-metadata.dto.ts +57 -0
  1009. package/src/dtos/update-sms-template.dto.ts +4 -0
  1010. package/src/dtos/update-user.dto.ts +129 -0
  1011. package/src/dtos/update-view-metadata.dto.ts +50 -0
  1012. package/src/entities/action-metadata.entity.ts +47 -0
  1013. package/src/entities/common.entity.ts +18 -0
  1014. package/src/entities/email-attachment.entity.ts +27 -0
  1015. package/src/entities/email-template.entity.ts +28 -0
  1016. package/src/entities/field-metadata.entity.ts +138 -0
  1017. package/src/entities/list-of-values.entity.ts +23 -0
  1018. package/src/entities/media-storage-provider-metadata.entity.ts +24 -0
  1019. package/src/entities/media.entity.ts +31 -0
  1020. package/src/entities/menu-item-metadata.entity.ts +35 -0
  1021. package/src/entities/model-metadata.entity.ts +62 -0
  1022. package/src/entities/module-metadata.entity.ts +31 -0
  1023. package/src/entities/mq-message-queue.entity.ts +14 -0
  1024. package/src/entities/mq-message.entity.ts +49 -0
  1025. package/src/entities/permission-metadata.entity.ts +13 -0
  1026. package/src/entities/role-metadata.entity.ts +20 -0
  1027. package/src/entities/sms-template.entity.ts +24 -0
  1028. package/src/entities/user-password-history.entity.ts +14 -0
  1029. package/src/entities/user.entity.ts +100 -0
  1030. package/src/entities/user.entity.ts.bkp +144 -0
  1031. package/src/entities/view-metadata.entity.ts +31 -0
  1032. package/src/enums/auth-type.enum.ts +4 -0
  1033. package/src/filters/http-exception.filter.ts +38 -0
  1034. package/src/guards/access-token.guard.ts +57 -0
  1035. package/src/guards/authentication.guard.ts +70 -0
  1036. package/src/guards/permissions.guard.ts +39 -0
  1037. package/src/guards/roles.guard.ts +37 -0
  1038. package/src/helpers/command.service.ts +26 -0
  1039. package/src/helpers/field-crud-managers/BigIntFieldCrudManager.ts +55 -0
  1040. package/src/helpers/field-crud-managers/BooleanFieldCrudManager.ts +44 -0
  1041. package/src/helpers/field-crud-managers/ComputedFieldCrudManager.ts +43 -0
  1042. package/src/helpers/field-crud-managers/DateFieldCrudManager.ts +42 -0
  1043. package/src/helpers/field-crud-managers/DecimalFieldCrudManager.ts +52 -0
  1044. package/src/helpers/field-crud-managers/EmailFieldCrudManager.ts +53 -0
  1045. package/src/helpers/field-crud-managers/IntFieldCrudManager.ts +52 -0
  1046. package/src/helpers/field-crud-managers/JsonFieldCrudManager.ts +42 -0
  1047. package/src/helpers/field-crud-managers/LongTextFieldCrudManager.ts +52 -0
  1048. package/src/helpers/field-crud-managers/ManyToManyRelationFieldCrudManager.ts +199 -0
  1049. package/src/helpers/field-crud-managers/ManyToOneRelationFieldCrudManager.ts +96 -0
  1050. package/src/helpers/field-crud-managers/MediaFieldCrudManager.ts +69 -0
  1051. package/src/helpers/field-crud-managers/NoOpsFieldCrudManager.ts +13 -0
  1052. package/src/helpers/field-crud-managers/OneToManyRelationFieldCrudManager.ts +204 -0
  1053. package/src/helpers/field-crud-managers/PasswordFieldCrudManager.ts +70 -0
  1054. package/src/helpers/field-crud-managers/RichTextFieldCrudManager.ts +50 -0
  1055. package/src/helpers/field-crud-managers/SelectionDynamicFieldCrudManager.ts +80 -0
  1056. package/src/helpers/field-crud-managers/SelectionStaticFieldCrudManager.ts +68 -0
  1057. package/src/helpers/field-crud-managers/ShortTextFieldCrudManager.ts +58 -0
  1058. package/src/helpers/field-crud-managers/UUIDFieldCrudManager.ts +49 -0
  1059. package/src/helpers/module.helper.ts +25 -0
  1060. package/src/helpers/schematic.service.ts +91 -0
  1061. package/src/helpers/solid-registry.ts +95 -0
  1062. package/src/index.ts +225 -0
  1063. package/src/interceptors/logging.interceptor.ts +110 -0
  1064. package/src/interceptors/wrap-response.interceptor.ts +26 -0
  1065. package/src/interfaces/active-user-data.interface.ts +31 -0
  1066. package/src/interfaces/mq.ts +23 -0
  1067. package/src/interfaces.ts +153 -0
  1068. package/src/jobs/api-email-publisher.service.ts +23 -0
  1069. package/src/jobs/api-email-queue-options.ts +14 -0
  1070. package/src/jobs/api-email-subscriber.service.ts +30 -0
  1071. package/src/jobs/email-publisher.service.ts +23 -0
  1072. package/src/jobs/email-queue-options.ts +14 -0
  1073. package/src/jobs/email-subscriber.service.ts +30 -0
  1074. package/src/jobs/otp-publisher.service.ts +23 -0
  1075. package/src/jobs/otp-queue-options.ts +14 -0
  1076. package/src/jobs/otp-subscriber.service.ts +30 -0
  1077. package/src/jobs/queue-test-publisher.service.ts +24 -0
  1078. package/src/jobs/queue-test-subscriber.service.ts +28 -0
  1079. package/src/jobs/sms-publisher.service.ts +23 -0
  1080. package/src/jobs/sms-queue-options.ts +14 -0
  1081. package/src/jobs/sms-subscriber.service.ts +30 -0
  1082. package/src/jobs/test-queue.config.ts +14 -0
  1083. package/src/jobs/whatsapp-publisher.service.ts +23 -0
  1084. package/src/jobs/whatsapp-queue-options.ts +12 -0
  1085. package/src/jobs/whatsapp-subscriber.service.ts +30 -0
  1086. package/src/listeners/user-registration.listener.ts +14 -0
  1087. package/src/passport-strategies/google-oauth.strategy.ts +58 -0
  1088. package/src/passport-strategies/local.strategy.ts +28 -0
  1089. package/src/providers/list-of-values-selection-providers.service.ts +44 -0
  1090. package/src/seeders/email-template-seeder.service.ts +47 -0
  1091. package/src/seeders/module-metadata-seeder.service.ts +420 -0
  1092. package/src/seeders/permission-metadata-seeder.service.ts +64 -0
  1093. package/src/seeders/seed-data/email-templates/forgot-password.handlebars.html +169 -0
  1094. package/src/seeders/seed-data/email-templates/on-force-password-change.handlebars.html +210 -0
  1095. package/src/seeders/seed-data/email-templates/otp-on-login.handlebars.html +159 -0
  1096. package/src/seeders/seed-data/email-templates/otp-on-register.handlebars.html +160 -0
  1097. package/src/seeders/seed-data/sms-templates/forgot-password.handlebars.txt +1 -0
  1098. package/src/seeders/seed-data/sms-templates/otp-on-login.handlebars.txt +1 -0
  1099. package/src/seeders/seed-data/sms-templates/otp-on-register.handlebars.txt +1 -0
  1100. package/src/seeders/seed-data/solid-core-metadata.json +5534 -0
  1101. package/src/seeders/sms-template-seeder.service.ts +48 -0
  1102. package/src/seeders/user-seeder.service.ts +32 -0
  1103. package/src/services/access-token-storage.service.ts +0 -0
  1104. package/src/services/action-metadata.service.ts +66 -0
  1105. package/src/services/authentication.service.ts +970 -0
  1106. package/src/services/bcrypt.service.ts +15 -0
  1107. package/src/services/computed-fields/uuid-external-id-computed-field-provider.service.ts +28 -0
  1108. package/src/services/crud-helper.service.ts +273 -0
  1109. package/src/services/crud.service.ts +652 -0
  1110. package/src/services/email-template.service.ts +80 -0
  1111. package/src/services/field-metadata.service.ts +873 -0
  1112. package/src/services/file.service.ts +149 -0
  1113. package/src/services/groupBy.json +92 -0
  1114. package/src/services/hashing.service.ts +7 -0
  1115. package/src/services/list-of-values.service.ts +54 -0
  1116. package/src/services/mail/ElasticEmailService.ts +177 -0
  1117. package/src/services/mail/SMTPEmailService.ts +101 -0
  1118. package/src/services/media-storage-provider-metadata-seeder.service.ts +33 -0
  1119. package/src/services/media-storage-provider-metadata.service.ts +152 -0
  1120. package/src/services/media.service.ts +262 -0
  1121. package/src/services/mediaStorageProviders/file-s3-storage-provider.ts +83 -0
  1122. package/src/services/mediaStorageProviders/file-storage-provider.ts +76 -0
  1123. package/src/services/mediaStorageProviders/index.ts +23 -0
  1124. package/src/services/menu-item-metadata.service.ts +189 -0
  1125. package/src/services/model-metadata.service.ts +749 -0
  1126. package/src/services/module-metadata.service.ts +399 -0
  1127. package/src/services/mq-message-queue.service.ts +49 -0
  1128. package/src/services/mq-message.service.ts +35 -0
  1129. package/src/services/pdf.service.ts +29 -0
  1130. package/src/services/permission-metadata.service.ts +93 -0
  1131. package/src/services/rabbitmq-publisher.service.ts +121 -0
  1132. package/src/services/rabbitmq-subscriber.service.ts +192 -0
  1133. package/src/services/refresh-token-ids-storage.service.ts +45 -0
  1134. package/src/services/role-metadata.service.ts +205 -0
  1135. package/src/services/selection-providers/list-of-models-selection-provider.service.ts +70 -0
  1136. package/src/services/short-url/tiny-url.service.ts +60 -0
  1137. package/src/services/sms/Msg91BaseSMSService.ts +79 -0
  1138. package/src/services/sms/Msg91OTPService.ts +48 -0
  1139. package/src/services/sms/Msg91SMSService.ts +30 -0
  1140. package/src/services/sms-template.service.ts +77 -0
  1141. package/src/services/solid-introspect.service.ts +148 -0
  1142. package/src/services/user.service.ts +221 -0
  1143. package/src/services/user.service.ts.bkp +311 -0
  1144. package/src/services/view-metadata.service.ts +143 -0
  1145. package/src/services/whatsapp/Msg91WhatsappService.ts +149 -0
  1146. package/src/solid-core.module.ts +316 -0
  1147. package/src/subscribers/model.subscriber.ts +76 -0
  1148. package/src/subscribers/softDeleteAwareEventSubscriber.subscriber.ts +36 -0
  1149. package/src/transformers/array-transformer.ts +16 -0
  1150. package/src/transformers/boolean-transformer.ts +12 -0
  1151. package/src/transformers/integer-transformer.ts +17 -0
  1152. package/src/validators/is-parsable-int.ts +21 -0
  1153. package/src/workflow.readme.md +25 -0
  1154. package/tsconfig.json +25 -0
@@ -0,0 +1,970 @@
1
+ import { HttpService } from '@nestjs/axios';
2
+ import {
3
+ BadRequestException,
4
+ ConflictException,
5
+ Inject,
6
+ Injectable,
7
+ Logger,
8
+ NotFoundException,
9
+ UnauthorizedException,
10
+ } from '@nestjs/common';
11
+ import { ConfigType } from '@nestjs/config';
12
+ import { EventEmitter2 } from '@nestjs/event-emitter';
13
+ import { JwtService } from '@nestjs/jwt';
14
+ import { InjectRepository } from '@nestjs/typeorm';
15
+ import { isEmpty, isNotEmpty } from 'class-validator';
16
+ import { randomInt, randomUUID } from 'crypto';
17
+ import { SMTPEMailService } from 'src/services/mail/SMTPEmailService';
18
+ import { Msg91OTPService } from 'src/services/sms/Msg91OTPService';
19
+ import { Repository } from 'typeorm';
20
+ import { iamConfig, jwtConfig } from '../config/iam.config';
21
+ import { ChangePasswordDto } from "../dtos/change-password.dto";
22
+ import { ConfirmForgotPasswordDto } from '../dtos/confirm-forgot-password.dto';
23
+ import { InitiateForgotPasswordDto } from '../dtos/initiate-forgot-password.dto';
24
+ import { OTPConfirmOTPDto } from '../dtos/otp-confirm-otp.dto';
25
+ import { OTPSignInDto } from '../dtos/otp-sign-in.dto';
26
+ import { OTPSignUpDto } from '../dtos/otp-sign-up.dto';
27
+ import { RefreshTokenDto } from '../dtos/refresh-token.dto';
28
+ import { SignInDto } from '../dtos/sign-in.dto';
29
+ import { SignUpDto } from '../dtos/sign-up.dto';
30
+ import { UserPasswordHistory } from '../entities/user-password-history.entity';
31
+ import { User } from '../entities/user.entity';
32
+ import { ActiveUserData } from '../interfaces/active-user-data.interface';
33
+ import { HashingService } from './hashing.service';
34
+ import { InvalidatedRefreshTokenError, RefreshTokenIdsStorageService } from './refresh-token-ids-storage.service';
35
+ import { UserService } from './user.service';
36
+ import { EventDetails, EventType } from "../interfaces";
37
+ import {
38
+ ForgotPasswordSendVerificationTokenOn,
39
+ RegistrationValidationSource,
40
+ TransactionalRegistrationValidationSource
41
+ } from "../constants";
42
+
43
+ enum LoginProvider {
44
+ LOCAL = 'local',
45
+ GOOGLE = 'google',
46
+ OTP = 'otp',
47
+ }
48
+
49
+ interface otp {
50
+ token: string;
51
+ expiresAt: Date;
52
+ }
53
+
54
+ @Injectable()
55
+ export class AuthenticationService {
56
+ private readonly logger = new Logger(AuthenticationService.name);
57
+
58
+ constructor(
59
+ private readonly userService: UserService,
60
+ @InjectRepository(User) private readonly userRepository: Repository<User>,
61
+ @InjectRepository(UserPasswordHistory) private readonly userPasswordHistoryRepository: Repository<UserPasswordHistory>,
62
+ private readonly hashingService: HashingService,
63
+ private readonly jwtService: JwtService,
64
+ @Inject(jwtConfig.KEY)
65
+ private readonly jwtConfiguration: ConfigType<typeof jwtConfig>,
66
+ @Inject(iamConfig.KEY)
67
+ private readonly iamConfiguration: ConfigType<typeof iamConfig>,
68
+ private readonly refreshTokenIdsStorage: RefreshTokenIdsStorageService,
69
+ private readonly httpService: HttpService,
70
+ private readonly mailService: SMTPEMailService,
71
+ private readonly smsService: Msg91OTPService,
72
+ private readonly eventEmitter: EventEmitter2,
73
+ ) { }
74
+
75
+ async resolveUser(username: string, email: string) {
76
+ return await this.userRepository.findOne({
77
+ where: [
78
+ { username: username },
79
+ { email: email },
80
+ ],
81
+ relations: {
82
+ roles: true
83
+ }
84
+ });
85
+ }
86
+
87
+ async validateUser(signInDto: SignInDto) {
88
+
89
+ const user = await this.resolveUser(signInDto.username, signInDto.email);
90
+
91
+ if (!user) {
92
+ throw new UnauthorizedException('User does not exists');
93
+ }
94
+ if (!user.active) {
95
+ throw new UnauthorizedException('User profile not activated');
96
+ }
97
+ const isEqual = await this.hashingService.compare(
98
+ signInDto.password,
99
+ user.password,
100
+ );
101
+ if (!isEqual) {
102
+ throw new UnauthorizedException('Password does not match');
103
+ }
104
+
105
+ return user;
106
+ }
107
+
108
+ async signUp(signUpDto: SignUpDto, activeUser: ActiveUserData = null): Promise<User> {
109
+ // If public registrations are disabled and no activeUser is present when invoking signUp then we throw an exception.
110
+ if (!this.iamConfiguration.allowPublicRegistration && !activeUser) {
111
+ throw new BadRequestException('Public registrations are disabled.');
112
+ }
113
+
114
+ try {
115
+ const user = new User();
116
+ user.username = signUpDto.username;
117
+ user.email = signUpDto.email;
118
+ user.fullName = signUpDto.fullName;
119
+ if (signUpDto.mobile) {
120
+ user.mobile = signUpDto.mobile;
121
+ }
122
+ // If password has been specified by the user, then we simply create & activate the user based on the configuration parameter "activateUserOnRegistration".
123
+ let pwd = '';
124
+ let autoGeneratedPwd = '';
125
+ if (signUpDto.password) {
126
+ pwd = await this.hashingService.hash(signUpDto.password);
127
+ }
128
+ else {
129
+ // TODO: If password is not specified then auto-generate a random password, trigger this password over an email to the user.
130
+ // TODO: Also track if the user has to force reset / change their password, and then activate the user.
131
+ autoGeneratedPwd = this.generatePassword();
132
+ pwd = await this.hashingService.hash(autoGeneratedPwd);
133
+ user.forcePasswordChange = true;
134
+ }
135
+ user.password = pwd;
136
+ user.active = this.iamConfiguration.activateUserOnRegistration;
137
+ const savedUser = await this.userRepository.save(user);
138
+
139
+ // Also assign a default role to the newly created user.
140
+ let roles = [];
141
+ if (this.iamConfiguration.defaultRole) {
142
+ roles.push(this.iamConfiguration.defaultRole);
143
+ }
144
+ if (signUpDto.roles) {
145
+ roles = [...roles, ...signUpDto.roles];
146
+ }
147
+ roles = Array.from(new Set([...roles]));
148
+ if (roles.length > 0) {
149
+ this.userService.addRolesToUser(user.username, roles);
150
+ }
151
+ // Tanay: Adding user password to history table
152
+ const userPasswordHistory = new UserPasswordHistory();
153
+ userPasswordHistory.passwordHash = pwd;
154
+ userPasswordHistory.user = savedUser;
155
+ await this.userPasswordHistoryRepository.save(userPasswordHistory);
156
+
157
+ // if forcePasswordChange is true, then we trigger an email to the user to change the password, this needs to be done using a queue.
158
+ // Create a new method like notifyUserOnForcePasswordChange, create a new email template we can call it on-force-password-change this template to include the random password
159
+ if (user.forcePasswordChange && autoGeneratedPwd) {
160
+ this.notifyUserOnForcePasswordChange(user, autoGeneratedPwd);
161
+ }
162
+
163
+ // TODO: make provision to trigger a welcome email also.
164
+
165
+ return savedUser;
166
+ } catch (err) {
167
+ const pgUniqueViolationErrorCode = '23505';
168
+ if (err.code === pgUniqueViolationErrorCode) {
169
+ throw new ConflictException();
170
+ }
171
+ throw err;
172
+ }
173
+ }
174
+
175
+ generatePassword(length: number = 8): string {
176
+ const upperCase = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
177
+ const lowerCase = "abcdefghijklmnopqrstuvwxyz";
178
+ const numbers = "0123456789";
179
+ const specialChars = "@$#";
180
+ const allChars = upperCase + lowerCase + numbers + specialChars;
181
+
182
+ let password = "";
183
+
184
+ for (let i = 0; i < length; i++) {
185
+ const randomIndex = Math.floor(Math.random() * allChars.length);
186
+ password += allChars[randomIndex];
187
+ }
188
+
189
+ return password;
190
+ }
191
+
192
+ private notifyUserOnForcePasswordChange(user: User, autoGeneratedPwd: string) {
193
+
194
+ this.mailService.sendEmailUsingTemplate(
195
+ user.email,
196
+ 'on-force-password-change',
197
+ {
198
+ solidAppName: process.env.SOLID_APP_NAME,
199
+ solidAppWebsiteUrl: process.env.SOLID_APP_WEBSITE_URL,
200
+ frontendLoginPageUrl: process.env.IAM_FRONTEND_APP_LOGIN_PAGE_URL,
201
+ fullName: user.fullName,
202
+ userName: user.username,
203
+ password: autoGeneratedPwd,
204
+ },
205
+ true,
206
+ 'user',
207
+ user.id
208
+ );
209
+
210
+ }
211
+
212
+ async otpInitiateRegistration(signUpDto: OTPSignUpDto) {
213
+ try {
214
+ if (!this.isPasswordlessRegistrationEnabled()) {
215
+ throw new BadRequestException('Passwordless registration is not enabled');
216
+ }
217
+ // Validate if either mobile or email is present.
218
+ if (isEmpty(signUpDto.mobile) && isEmpty(signUpDto.email)) {
219
+ throw new BadRequestException('Either mobile or email is required for initiating registration');
220
+ }
221
+ if (signUpDto.validationSources.includes(TransactionalRegistrationValidationSource.EMAIL) && isEmpty(signUpDto.email)) {
222
+ throw new BadRequestException('Email is required for email validation source');
223
+ }
224
+ if (signUpDto.validationSources.includes(TransactionalRegistrationValidationSource.MOBILE) && isEmpty(signUpDto.mobile)) {
225
+ throw new BadRequestException('Mobile is required for mobile validation source');
226
+ }
227
+
228
+ // Validate if user already exists.
229
+ const existingUser = await this.userRepository.findOne({ //TODO Perhaps we should use the user service instead of the repository directly.
230
+ where: [
231
+ { email: signUpDto.email, },
232
+ { mobile: signUpDto.mobile, },
233
+ { username: signUpDto.username, }
234
+ ]
235
+ });
236
+ if (isNotEmpty(existingUser) && existingUser.active) {
237
+ throw new ConflictException('User already exists. Please sign in');
238
+ }
239
+ const finalRegistrationVerificationSources = this.calculateVerificationSources(this.iamConfiguration.passwordlessRegistrationValidateWhat, signUpDto);
240
+ let user = existingUser
241
+ if (isEmpty(user)) {
242
+ user = this.createUser(signUpDto);
243
+ this.populateVerificationTokens(finalRegistrationVerificationSources, user);
244
+ await this.userRepository.save(user);
245
+ await this.userService.addRoleToUser(user.username, this.iamConfiguration.defaultRole);
246
+ }
247
+ else {
248
+ this.populateVerificationTokens(finalRegistrationVerificationSources, user);
249
+ await this.userRepository.save(user);
250
+ }
251
+
252
+ // Send OTP to the user through email or SMS, depending on the configuration.
253
+ this.notifyUserOnOtpInitiateRegistration(user, finalRegistrationVerificationSources);
254
+ return { message: 'User registration initiated. OTP sent to the user.' }
255
+ } catch (err) {
256
+ const pgUniqueViolationErrorCode = '23505';
257
+ if (err.code === pgUniqueViolationErrorCode) {
258
+ throw new ConflictException();
259
+ }
260
+ throw err;
261
+ }
262
+ }
263
+
264
+ // Create a new user entity.
265
+ private createUser(signUpDto: OTPSignUpDto) {
266
+ const user = new User();
267
+ user.username = signUpDto.username;
268
+ user.email = signUpDto.email;
269
+ user.mobile = signUpDto.mobile;
270
+ user.customPayload = signUpDto.customPayload;
271
+ user.lastLoginProvider = LoginProvider.OTP;
272
+ return user;
273
+ }
274
+
275
+ private calculateVerificationSources(configuredRegistrationValidationSources: string[], signUpDto: OTPSignUpDto): string[] {
276
+ const finalRegistrationValidationSources = configuredRegistrationValidationSources.filter((source) => source !== RegistrationValidationSource.TRANSACTIONAL);
277
+ if (configuredRegistrationValidationSources.includes(RegistrationValidationSource.TRANSACTIONAL)) {
278
+ finalRegistrationValidationSources.push(...signUpDto.validationSources); // Add the validation sources provided by the user.
279
+ }
280
+ return finalRegistrationValidationSources;
281
+ }
282
+
283
+ // Generate the validation tokens for the user i.e (system configured + user provided)
284
+ private populateVerificationTokens(finalRegistrationValidationSources: string[], user: User) {
285
+ if (finalRegistrationValidationSources.length === 0) {
286
+ throw new BadRequestException('At least one validation source is required');
287
+ }
288
+ if (finalRegistrationValidationSources.includes(TransactionalRegistrationValidationSource.EMAIL)) {
289
+ const { token, expiresAt } = this.otp();
290
+ user.emailVerificationTokenOnRegistration = token;
291
+ user.emailVerificationTokenOnRegistrationExpiresAt = expiresAt;
292
+ if (this.iamConfiguration.autoLoginUserOnRegistration) {
293
+ user.emailVerificationTokenOnLogin = token;
294
+ user.emailVerificationTokenOnLoginExpiresAt = expiresAt;
295
+ }
296
+ }
297
+ if (finalRegistrationValidationSources.includes(TransactionalRegistrationValidationSource.MOBILE)) {
298
+ const { token, expiresAt } = this.otp();
299
+ user.mobileVerificationTokenOnRegistration = token;
300
+ user.mobileVerificationTokenOnRegistrationExpiresAt = expiresAt;
301
+ if (this.iamConfiguration.autoLoginUserOnRegistration) {
302
+ user.mobileVerificationTokenOnLogin = token;
303
+ user.mobileVerificationTokenOnLoginExpiresAt = expiresAt;
304
+ }
305
+ }
306
+ }
307
+
308
+ private notifyUserOnOtpInitiateRegistration(user: User, registrationValidationSources: string[]) {
309
+ if (this.iamConfiguration.dummyOtp)
310
+ return; // Do nothing if dummy otp is configured.
311
+ if (registrationValidationSources.includes(RegistrationValidationSource.EMAIL)) {
312
+ this.mailService.sendEmailUsingTemplate(
313
+ user.email,
314
+ 'otp-on-register',
315
+ {
316
+ solidAppName: process.env.SOLID_APP_NAME,
317
+ solidAppWebsiteUrl: process.env.SOLID_APP_WEBSITE_URL,
318
+ firstName: user.username,
319
+ emailVerificationTokenOnRegistration: user.emailVerificationTokenOnRegistration,
320
+ },
321
+ true,
322
+ 'user',
323
+ user.id
324
+ );
325
+ }
326
+ if (registrationValidationSources.includes(RegistrationValidationSource.MOBILE)) {
327
+ this.smsService.sendSMSUsingTemplate(
328
+ user.mobile,
329
+ 'otp-on-register',
330
+ {
331
+ solidAppName: process.env.SOLID_APP_NAME,
332
+ otp: user.mobileVerificationTokenOnRegistration,
333
+ mobileVerificationTokenOnRegistration: user.mobileVerificationTokenOnRegistration,
334
+ firstName: user.username
335
+ }
336
+ );
337
+ }
338
+ }
339
+
340
+ async otpConfirmRegistration(confirmSignUpDto: OTPConfirmOTPDto) {
341
+ if (!this.isPasswordlessRegistrationEnabled()) {
342
+ throw new BadRequestException('Passwordless registration is not enabled');
343
+ }
344
+
345
+ // Based on the identifier, validate by query the user table.
346
+ if (confirmSignUpDto.type === RegistrationValidationSource.EMAIL) {
347
+ const user = await this.userRepository.findOne({
348
+ where: {
349
+ email: confirmSignUpDto.identifier,
350
+ }
351
+ });
352
+ if (!user) {
353
+ throw new UnauthorizedException('User does not exist');
354
+ }
355
+ if (user.emailVerificationTokenOnRegistration !== confirmSignUpDto.otp) {
356
+ throw new UnauthorizedException('Invalid OTP');
357
+ }
358
+ if (user.emailVerificationTokenOnRegistrationExpiresAt < new Date()) {
359
+ throw new UnauthorizedException('OTP expired');
360
+ }
361
+ user.emailVerifiedOnRegistrationAt = new Date();
362
+ user.emailVerificationTokenOnRegistration = null;
363
+ user.emailVerificationTokenOnRegistrationExpiresAt = null;
364
+ user.active = this.iamConfiguration.activateUserOnRegistration && this.areRegistrationValidationSourcesVerified(user);
365
+ const savedUser: User = await this.userRepository.save(user);
366
+ this.triggerRegistrationEvent(savedUser);
367
+ return { active: savedUser.active, message: `User registration verified for ${confirmSignUpDto.type}` }
368
+ } else if (confirmSignUpDto.type === RegistrationValidationSource.MOBILE) {
369
+ const user = await this.userRepository.findOne({
370
+ where: {
371
+ mobile: confirmSignUpDto.identifier,
372
+ }
373
+ });
374
+ if (!user) {
375
+ throw new UnauthorizedException('User does not exist');
376
+ }
377
+ if (user.mobileVerificationTokenOnRegistration !== confirmSignUpDto.otp) {
378
+ throw new UnauthorizedException('Invalid OTP');
379
+ }
380
+ if (user.mobileVerificationTokenOnRegistrationExpiresAt < new Date()) {
381
+ throw new UnauthorizedException('Invalid OTP');
382
+ }
383
+ user.mobileVerifiedOnRegistrationAt = new Date();
384
+ user.mobileVerificationTokenOnRegistration = null;
385
+ user.mobileVerificationTokenOnRegistrationExpiresAt = null;
386
+ user.active = this.iamConfiguration.activateUserOnRegistration && this.areRegistrationValidationSourcesVerified(user);
387
+ const savedUser: User = await this.userRepository.save(user);
388
+ this.triggerRegistrationEvent(savedUser);
389
+ return { active: savedUser.active, message: `User registration verified for ${confirmSignUpDto.type}` }
390
+ }
391
+ throw new BadRequestException('Invalid type. Must be either email or mobile');
392
+ }
393
+
394
+ private triggerRegistrationEvent(savedUser: User) {
395
+ // Trigger events for user registration.
396
+ const event = new EventDetails<User>(EventType.USER_REGISTERED, savedUser);
397
+ this.eventEmitter.emit(EventType.USER_REGISTERED, event);
398
+ }
399
+
400
+ areRegistrationValidationSourcesVerified(user: User): boolean {
401
+ const registrationValidationSources = this.iamConfiguration.passwordlessRegistrationValidateWhat;
402
+ if (registrationValidationSources.includes(RegistrationValidationSource.EMAIL)) {
403
+ if (!user.emailVerifiedOnRegistrationAt) {
404
+ return false;
405
+ }
406
+ }
407
+ if (registrationValidationSources.includes(RegistrationValidationSource.MOBILE)) {
408
+ if (!user.mobileVerifiedOnRegistrationAt) {
409
+ return false;
410
+ }
411
+ }
412
+ return true;
413
+ }
414
+
415
+ private otp(): otp {
416
+ const now = new Date();
417
+ now.setMinutes(now.getMinutes() + this.iamConfiguration.otpExpiry);
418
+ return {
419
+ token: this.iamConfiguration.dummyOtp ? this.iamConfiguration.dummyOtp : randomInt(100000, 999999).toString(),
420
+ expiresAt: now,
421
+ };
422
+ }
423
+
424
+ async signIn(signInDto: SignInDto) {
425
+ const user = await this.validateUser(signInDto);
426
+
427
+ // TODO: Unset the password etc...
428
+ const tokens = await this.generateTokens(user);
429
+ return {
430
+ user: {
431
+ email: user.email,
432
+ mobile: user.mobile,
433
+ username: user.username,
434
+ forcePasswordChange: user.forcePasswordChange,
435
+ id: user.id,
436
+ roles: user.roles.map((role, idx, roles) => role.name)
437
+ },
438
+ ...tokens
439
+ }
440
+ }
441
+
442
+ async otpInitiateLogin(signInDto: OTPSignInDto) {
443
+ if (!this.isPasswordlessRegistrationEnabled()) {
444
+ throw new BadRequestException('Passwordless registration is not enabled');
445
+ }
446
+
447
+ // Validate & generate otp token for the user based on the identifier type.
448
+ if (signInDto.type === RegistrationValidationSource.EMAIL) {
449
+ const user = await this.userRepository.findOne({
450
+ where: {
451
+ email: signInDto.identifier,
452
+ }
453
+ });
454
+ if (!user) {
455
+ throw new UnauthorizedException('User does not exist');
456
+ }
457
+ if (!user.active) {
458
+ throw new UnauthorizedException('User is inactive');
459
+ }
460
+ const { token, expiresAt } = this.otp();
461
+ user.emailVerificationTokenOnLogin = token;
462
+ user.emailVerificationTokenOnLoginExpiresAt = expiresAt;
463
+ await this.userRepository.save(user);
464
+ this.notifyUserOnOtpInititateLogin(user, RegistrationValidationSource.EMAIL);
465
+ } else if (signInDto.type === RegistrationValidationSource.MOBILE) {
466
+ const user = await this.userRepository.findOne({
467
+ where: {
468
+ mobile: signInDto.identifier,
469
+ }
470
+ });
471
+ if (!user) {
472
+ throw new UnauthorizedException('User does not exist');
473
+ }
474
+
475
+ const { token, expiresAt } = this.otp();
476
+ user.mobileVerificationTokenOnLogin = token;
477
+ user.mobileVerificationTokenOnLoginExpiresAt = expiresAt;
478
+ await this.userRepository.save(user);
479
+ this.notifyUserOnOtpInititateLogin(user, RegistrationValidationSource.MOBILE);
480
+ }
481
+ else {
482
+ throw new BadRequestException('Invalid type. Must be either email or mobile');
483
+ }
484
+ return { message: 'User login initiated. OTP sent to the user.' };
485
+ }
486
+
487
+ private notifyUserOnOtpInititateLogin(user: User, loginType: RegistrationValidationSource) {
488
+ if (this.iamConfiguration.dummyOtp)
489
+ return; // Do nothing if dummy otp is configured.
490
+ if (loginType === RegistrationValidationSource.EMAIL) {
491
+ this.mailService.sendEmailUsingTemplate(
492
+ user.email,
493
+ 'otp-on-login',
494
+ {
495
+ solidAppName: process.env.SOLID_APP_NAME,
496
+ solidAppWebsiteUrl: process.env.SOLID_APP_WEBSITE_URL,
497
+ firstName: user.username,
498
+ emailVerificationTokenOnLogin: user.emailVerificationTokenOnLogin
499
+ },
500
+ true,
501
+ 'user',
502
+ user.id
503
+ );
504
+ }
505
+ if (loginType === RegistrationValidationSource.MOBILE) {
506
+ this.smsService.sendSMSUsingTemplate(
507
+ user.mobile,
508
+ 'otp-on-login',
509
+ {
510
+ solidAppName: process.env.SOLID_APP_NAME,
511
+ otp: user.mobileVerificationTokenOnLogin,
512
+ mobileVerificationTokenOnLogin: user.mobileVerificationTokenOnLogin,
513
+ firstName: user.username
514
+ }
515
+ );
516
+ }
517
+ }
518
+
519
+ async otpConfirmLogin(confirmSignInDto: OTPConfirmOTPDto) {
520
+ if (!this.isPasswordlessRegistrationEnabled()) {
521
+ throw new BadRequestException('Passwordless registration is not enabled');
522
+ }
523
+ if (confirmSignInDto.type === RegistrationValidationSource.EMAIL) {
524
+ const user = await this.userRepository.findOne({
525
+ where: {
526
+ email: confirmSignInDto.identifier,
527
+ },
528
+ relations: ['roles']
529
+ });
530
+ if (!user) {
531
+ throw new UnauthorizedException('User does not exist');
532
+ }
533
+ if (!user.active) {
534
+ throw new UnauthorizedException('User is inactive');
535
+ }
536
+ if (user.emailVerificationTokenOnLogin !== confirmSignInDto.otp) {
537
+ throw new UnauthorizedException('Invalid OTP');
538
+ }
539
+ if (user.emailVerificationTokenOnLoginExpiresAt < new Date()) {
540
+ throw new UnauthorizedException('Invalid OTP');
541
+ }
542
+ user.emailVerifiedOnLoginAt = new Date();
543
+ user.emailVerificationTokenOnLogin = null;
544
+ user.emailVerificationTokenOnLoginExpiresAt = null;
545
+ await this.userRepository.save(user);
546
+ const { accessToken, refreshToken } = await this.generateTokens(user);
547
+ const { id, username, email, mobile, lastLoginProvider } = user;
548
+ const roles = user.roles.map((role) => role.name);
549
+ return { accessToken, refreshToken, user: { id, username, email, mobile, lastLoginProvider, roles } };
550
+ } else if (confirmSignInDto.type === RegistrationValidationSource.MOBILE) {
551
+ const user = await this.userRepository.findOne({
552
+ where: {
553
+ mobile: confirmSignInDto.identifier,
554
+ },
555
+ relations: ['roles']
556
+ });
557
+ if (!user) {
558
+ throw new UnauthorizedException('User does not exist');
559
+ }
560
+ if (!user.active) {
561
+ throw new UnauthorizedException('User is inactive');
562
+ }
563
+ if (user.mobileVerificationTokenOnLogin !== confirmSignInDto.otp) {
564
+ throw new UnauthorizedException('Invalid OTP');
565
+ }
566
+ if (user.mobileVerificationTokenOnLoginExpiresAt < new Date()) {
567
+ throw new UnauthorizedException('Invalid OTP');
568
+ }
569
+ user.mobileVerifiedOnLoginAt = new Date();
570
+ user.mobileVerificationTokenOnLogin = null;
571
+ user.mobileVerificationTokenOnLoginExpiresAt = null;
572
+ await this.userRepository.save(user);
573
+ const { accessToken, refreshToken } = await this.generateTokens(user);
574
+ const { id, username, email, mobile, lastLoginProvider } = user;
575
+ const roles = user.roles.map((role) => role.name);
576
+ return { accessToken, refreshToken, user: { id, username, email, mobile, lastLoginProvider, roles } };
577
+
578
+ }
579
+ throw new BadRequestException('Invalid type. Must be either email or mobile');
580
+ }
581
+
582
+ async changePassword(changePasswordDto: ChangePasswordDto, activeUser: ActiveUserData) {
583
+ const user = await this.userRepository.findOne({
584
+ where: { id: changePasswordDto.id }
585
+ });
586
+ if (!user) {
587
+ throw new NotFoundException('User does not exists');
588
+ }
589
+
590
+ if (!user.active) {
591
+ throw new UnauthorizedException('User is inactive');
592
+ }
593
+
594
+ // 2. Validate if user has used a provider which is "local", only then it makes sense for us to initiate the forgot password routine.
595
+ if (user.lastLoginProvider !== 'local') {
596
+ throw new BadRequestException('User seems to have used a passwordless mode to authenticate.');
597
+ }
598
+
599
+ // Check if ID's match
600
+ if (!(user.id === activeUser.sub)) {
601
+ throw new BadRequestException("User ID's do not match ");
602
+ }
603
+
604
+ // Check if username's match
605
+ if (!(user.username === activeUser.username)) {
606
+ throw new BadRequestException("User username's do not match");
607
+ }
608
+
609
+ // Check if old password is matching.
610
+ const isEqual = await this.hashingService.compare(
611
+ changePasswordDto.currentPassword,
612
+ user.password,
613
+ );
614
+ if (!isEqual) {
615
+ throw new UnauthorizedException('Incorrect current password specified...');
616
+ }
617
+
618
+ // Update Password
619
+ const newPwd = await this.hashingService.hash(changePasswordDto.newPassword);
620
+ user.password = changePasswordDto.newPassword;
621
+
622
+ // Everytime the user changes the password we reset the forcePasswordChange flag back to false.
623
+ user.forcePasswordChange = false;
624
+
625
+ if (await this.isPasswordDuplicate(user)) {
626
+ throw new BadRequestException('Previously used passwords cannot be used again.');
627
+ }
628
+ await this.deleteOldPasswords(user);
629
+
630
+ user.password = newPwd;
631
+ const userPasswordHistory = new UserPasswordHistory();
632
+ userPasswordHistory.passwordHash = newPwd;
633
+ userPasswordHistory.user = user;
634
+
635
+ await this.userRepository.save(user);
636
+ await this.userPasswordHistoryRepository.save(userPasswordHistory);
637
+
638
+ return true;
639
+ }
640
+
641
+ async initiateForgotPassword(initiateForgotPasswordDto: InitiateForgotPasswordDto) {
642
+ // Steps / Algorithm:
643
+ // 1. Identify the user using the specified "username", if not found exit.
644
+ // const user = await this.userRepository.findOne({
645
+ // where: { username: initiateForgotPasswordDto.username, }
646
+ // });
647
+ const user = await this.resolveUser(initiateForgotPasswordDto.username, initiateForgotPasswordDto.email);
648
+
649
+ if (!user) {
650
+ throw new NotFoundException('User does not exists');
651
+ }
652
+ if (!user.active) {
653
+ throw new UnauthorizedException('User is inactive');
654
+ }
655
+
656
+ // 2. Validate if user has used a provider which is "local", only then it makes sense for us to initiate the forgot password routine.
657
+ if (user.lastLoginProvider !== 'local') {
658
+ throw new BadRequestException('User seems to have used a passwordless mode to authenticate.');
659
+ }
660
+
661
+ // 3. Generate a 6 digit validation token, we send this token to the user over their email & mobile number (controlled using configuration).
662
+ // 4. Save this validation token in new fields on the user record.
663
+ const { token, expiresAt } = this.otp();
664
+ user.verificationTokenOnForgotPassword = token;
665
+ user.verificationTokenOnForgotPasswordExpiresAt = expiresAt;
666
+ await this.userRepository.save(user);
667
+ this.notifyUserOnForgotPassword(user);
668
+
669
+ // 5. Return.
670
+ return {
671
+ status: 'success',
672
+ message: 'Forgot password - token generated and sent',
673
+ error: '',
674
+ errorCode: '',
675
+ data: {
676
+ user: {
677
+ email: user.email,
678
+ mobile: user.mobile,
679
+ username: user.username,
680
+ },
681
+ }
682
+ }
683
+ }
684
+
685
+ private notifyUserOnForgotPassword(user: User) {
686
+ const forgotPasswordSendVerificationTokenOn = this.iamConfiguration.forgotPasswordSendVerificationTokenOn;
687
+
688
+ if (forgotPasswordSendVerificationTokenOn == ForgotPasswordSendVerificationTokenOn.EMAIL) {
689
+ this.mailService.sendEmailUsingTemplate(
690
+ user.email,
691
+ 'forgot-password',
692
+ {
693
+ solidAppName: process.env.SOLID_APP_NAME,
694
+ solidAppWebsiteUrl: process.env.SOLID_APP_WEBSITE_URL,
695
+ firstName: user.username,
696
+ // TODO: Need to prefix this with the page url where the forgot password page will open up.
697
+ passwordResetLink: `${process.env.IAM_FRONTEND_APP_FORGOT_PASSWORD_PAGE_URL}?token=${user.verificationTokenOnForgotPassword}&username=${user.username}`
698
+ },
699
+ true,
700
+ 'user',
701
+ user.id
702
+ );
703
+ }
704
+ // Assuming all users do not have mobile as mandatory.
705
+ if (forgotPasswordSendVerificationTokenOn == ForgotPasswordSendVerificationTokenOn.MOBILE && user.mobile) {
706
+ this.smsService.sendSMSUsingTemplate(
707
+ user.mobile,
708
+ 'forgot-password',
709
+ {
710
+ solidAppName: process.env.SOLID_APP_NAME,
711
+ otp: user.verificationTokenOnForgotPassword,
712
+ verificationTokenOnForgotPassword: user.verificationTokenOnForgotPassword,
713
+ firstName: user.username
714
+
715
+ }
716
+ );
717
+ }
718
+ }
719
+
720
+ async confirmForgotPassword(confirmForgotPasswordDto: ConfirmForgotPasswordDto) {
721
+ // Steps / Algorithm:
722
+ // 1. Identify the user using the specified "username", if not found exit.
723
+ // const user = await this.userRepository.findOne({
724
+ // where: { username: confirmForgotPasswordDto.username, }
725
+ // });
726
+ const user = await this.resolveUser(confirmForgotPasswordDto.username, confirmForgotPasswordDto.email);
727
+
728
+ if (!user) {
729
+ throw new NotFoundException('User does not exists');
730
+ }
731
+
732
+ // 2. Validate if user has used a provider which is "local", only then it makes sense for us to initiate the forgot password routine.
733
+ if (user.lastLoginProvider !== 'local') {
734
+ throw new BadRequestException('User seems to have used a passwordless mode to authenticate.');
735
+ }
736
+ if (!user.active) {
737
+ throw new UnauthorizedException('User is inactive');
738
+ }
739
+
740
+ // 3. Validate the verification token is proper & update the user record.
741
+ if (user.verificationTokenOnForgotPassword !== confirmForgotPasswordDto.verificationToken) {
742
+ throw new UnauthorizedException('Invalid verification token');
743
+ }
744
+ if (user.verificationTokenOnForgotPasswordExpiresAt < new Date()) {
745
+ throw new UnauthorizedException('Invalid verification token');
746
+ }
747
+ user.forgotPasswordConfirmedAt = new Date();
748
+ user.verificationTokenOnForgotPassword = null;
749
+ user.verificationTokenOnForgotPasswordExpiresAt = null;
750
+
751
+ // 4. Update the users password while encrypting it.
752
+ const pwd = await this.hashingService.hash(confirmForgotPasswordDto.password);
753
+ user.password = confirmForgotPasswordDto.password
754
+
755
+ if (await this.isPasswordDuplicate(user)) {
756
+ throw new BadRequestException('Previously used passwords cannot be used again.');
757
+ }
758
+ await this.deleteOldPasswords(user);
759
+
760
+ user.password = pwd;
761
+ const userPasswordHistory = new UserPasswordHistory();
762
+ userPasswordHistory.passwordHash = pwd;
763
+ userPasswordHistory.user = user;
764
+
765
+ await this.userRepository.save(user);
766
+ //FIXME: Do this check conditionally, basis a configuration parameter i.e if IAM_ALLOW_PREVIOUS_PASSWORDS=false, default true
767
+ await this.userPasswordHistoryRepository.save(userPasswordHistory);
768
+
769
+ return {
770
+ status: 'success',
771
+ message: 'Forgot password confirmed',
772
+ error: '',
773
+ errorCode: '',
774
+ data: {}
775
+ }
776
+ }
777
+
778
+ //FIXME: Do this check conditionally, basis a configuration parameter i.e if IAM_ALLOW_PREVIOUS_PASSWORDS=true, return immediately without processing, i.e false.
779
+ private async isPasswordDuplicate(user: User) {
780
+ const userPwdHistoryEntityArray = await this.userPasswordHistoryRepository.findBy(
781
+ { user: { id: user.id } }
782
+ )
783
+ let userPwdHistoryArray = [];
784
+ // O(n)
785
+ for (const entity of userPwdHistoryEntityArray) {
786
+ userPwdHistoryArray.push(entity.passwordHash);
787
+ }
788
+ // O(n)
789
+ for (const pwdHash of userPwdHistoryArray) {
790
+ const isEqual = await this.hashingService.compare(user.password, pwdHash);
791
+ if (isEqual) {
792
+ return true;
793
+ }
794
+ }
795
+ return false;
796
+ }
797
+
798
+ //FIXME: Do this check conditionally, basis a configuration parameter i.e if IAM_ALLOW_PREVIOUS_PASSWORDS=true, return immediately without processing
799
+ private async deleteOldPasswords(user: User) {
800
+ const userPwdHistoryArray = await this.userPasswordHistoryRepository.findBy(
801
+ { user: { id: user.id } }
802
+ )
803
+ const pwdLimit = 2; //FIXME: Should this be moved into the env? IAM_PREVIOUS_PASSWORDS_LIMIT
804
+
805
+ // TODO: Check what slice() or splice() does.
806
+ //FIXME - Delete passwords which are older than the latest n passwords. n is configurable
807
+ if (userPwdHistoryArray.length >= pwdLimit) {
808
+ const numToDelete = pwdLimit + 1 - userPwdHistoryArray.length;
809
+ for (let i = 0; i < numToDelete; i++) {
810
+ await this.userPasswordHistoryRepository.remove(userPwdHistoryArray[i]);
811
+ }
812
+ }
813
+ }
814
+
815
+ async generateTokens(user: User) {
816
+ const refreshTokenId = randomUUID();
817
+
818
+ // const userRoleNames = user.roles.map((role) => role.name).join(';')
819
+ const userRoleNames = user.roles.map((role) => role.name);
820
+
821
+ const [accessToken, refreshToken] = await Promise.all([
822
+ this.signToken<Partial<ActiveUserData>>(
823
+ user.id,
824
+ this.jwtConfiguration.accessTokenTtl,
825
+ { username: user.username, email: user.email, roles: userRoleNames },
826
+ ),
827
+ this.signToken(user.id, this.jwtConfiguration.refreshTokenTtl, {
828
+ refreshTokenId,
829
+ }),
830
+ ]);
831
+
832
+ // store the refresh token id in the redis storage.
833
+ await this.refreshTokenIdsStorage.insert(user.id, refreshTokenId);
834
+
835
+ return {
836
+ accessToken,
837
+ refreshToken,
838
+ };
839
+ }
840
+
841
+ async refreshTokens(refreshTokenDto: RefreshTokenDto) {
842
+ try {
843
+ const { sub, refreshTokenId } = await this.jwtService.verifyAsync<Pick<ActiveUserData, 'sub'> & { refreshTokenId: string }>(refreshTokenDto.refreshToken, {
844
+ secret: this.jwtConfiguration.secret,
845
+ audience: this.jwtConfiguration.audience,
846
+ issuer: this.jwtConfiguration.issuer,
847
+ });
848
+ // const user = await this.userRepository.findOneByOrFail({ id: sub });
849
+ const user = await this.userRepository.findOne({
850
+ where: {
851
+ id: sub,
852
+ },
853
+ relations: {
854
+ roles: true
855
+ }
856
+ });
857
+ if (!user) {
858
+ throw new UnauthorizedException();
859
+ }
860
+
861
+ const isValid = await this.refreshTokenIdsStorage.validate(user.id, refreshTokenId);
862
+ if (isValid) {
863
+ // Refresh token rotation.
864
+ await this.refreshTokenIdsStorage.invalidate(user.id);
865
+ } else {
866
+ throw new Error('Refresh token is invalid');
867
+ }
868
+ return this.generateTokens(user);
869
+ } catch (err) {
870
+ if (err instanceof InvalidatedRefreshTokenError) {
871
+ // Take action: notify user that his refresh token might have been stolen?
872
+ throw new UnauthorizedException('Access denied');
873
+ }
874
+
875
+ throw new UnauthorizedException();
876
+ }
877
+ }
878
+
879
+ private async signToken<T>(userId: number, expiresIn: number, payload?: T) {
880
+ return await this.jwtService.signAsync(
881
+ {
882
+ sub: userId,
883
+ ...payload,
884
+ },
885
+ {
886
+ audience: this.jwtConfiguration.audience,
887
+ issuer: this.jwtConfiguration.issuer,
888
+ secret: this.jwtConfiguration.secret,
889
+ expiresIn,
890
+ },
891
+ );
892
+ }
893
+
894
+ // PROVIDER SPECIFIC CODE
895
+ async validateUserUsingGoogle(user: User) {
896
+ try {
897
+ // Make API call to Google OAuth service to fetch user profile
898
+ const response = await this.httpService.axiosRef.get(`https://www.googleapis.com/oauth2/v1/userinfo?alt=json&access_token=${user.googleAccessToken}`);
899
+ const userProfile = response.data;
900
+
901
+ // Ensure the fetched profile email & provider Id match the ones we have stored in the database earlier.
902
+ if (userProfile.email === user.email && userProfile.id === user.googleId) {
903
+ // TODO: remove the access code both from the database.
904
+ return userProfile;
905
+ } else {
906
+ throw new UnauthorizedException('Invalid user profile');
907
+ }
908
+ } catch (error) {
909
+ throw new UnauthorizedException('Failed to fetch user profile from Google OAuth service');
910
+ }
911
+ }
912
+
913
+ async signInUsingGoogle(accessCode: string) {
914
+ const user = await this.userRepository.findOne({
915
+ where: {
916
+ accessCode: accessCode
917
+ },
918
+ relations: {
919
+ roles: true
920
+ }
921
+ });
922
+
923
+ // Validate the user against the Google oauth provider.
924
+ // If the below call finishes without raising an exception then we have validated the user properly.
925
+ await this.validateUserUsingGoogle(user);
926
+
927
+ // finally we simply generate the tokens.
928
+ return await this.generateTokens(user);
929
+ }
930
+
931
+ private isPasswordlessRegistrationEnabled() {
932
+ return this.iamConfiguration.passwordlessRegistration;
933
+ }
934
+
935
+ //FIXME - Pending implementation
936
+ async logout() {
937
+ // const user = this.request.user; //TODO: // Access the user from the execution context
938
+
939
+ // Invalidate the refresh token
940
+ // await this.refreshTokenIdsStorage.invalidate(user.id);
941
+ }
942
+
943
+ async activateUser(userId: number) {
944
+ const user = await this.userService.findOne(userId, {});
945
+ if (!user) {
946
+ throw new NotFoundException('User not found');
947
+ }
948
+ user.active = true;
949
+ await this.userRepository.save(user);
950
+ }
951
+
952
+ async me(activeUser: ActiveUserData) {
953
+ const user = await this.userRepository.findOne({
954
+ where: {
955
+ id: activeUser.sub,
956
+ },
957
+ relations: {
958
+ roles: true
959
+ }
960
+ });
961
+ const tokens = await this.generateTokens(user);
962
+
963
+ const response = {
964
+ ...user,
965
+ ...tokens
966
+ }
967
+ return response;
968
+ }
969
+
970
+ }