@solidstarters/solid-core 1.2.203 → 1.2.206

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (505) hide show
  1. package/dist/commands/info.command.d.ts +19 -0
  2. package/dist/commands/info.command.d.ts.map +1 -0
  3. package/dist/commands/info.command.js +98 -0
  4. package/dist/commands/info.command.js.map +1 -0
  5. package/dist/commands/mcp.command.d.ts.map +1 -1
  6. package/dist/commands/mcp.command.js +2 -10
  7. package/dist/commands/mcp.command.js.map +1 -1
  8. package/dist/commands/seed.command.d.ts.map +1 -1
  9. package/dist/commands/seed.command.js +2 -11
  10. package/dist/commands/seed.command.js.map +1 -1
  11. package/dist/controllers/email-template.controller.d.ts +3 -1
  12. package/dist/controllers/email-template.controller.d.ts.map +1 -1
  13. package/dist/controllers/email-template.controller.js +7 -4
  14. package/dist/controllers/email-template.controller.js.map +1 -1
  15. package/dist/controllers/google-authentication.controller.d.ts +4 -5
  16. package/dist/controllers/google-authentication.controller.d.ts.map +1 -1
  17. package/dist/controllers/google-authentication.controller.js +21 -14
  18. package/dist/controllers/google-authentication.controller.js.map +1 -1
  19. package/dist/controllers/otp-authentication.controller.d.ts +10 -0
  20. package/dist/controllers/otp-authentication.controller.d.ts.map +1 -1
  21. package/dist/controllers/otp-authentication.controller.js +1 -1
  22. package/dist/controllers/setting.controller.d.ts +2 -34
  23. package/dist/controllers/setting.controller.d.ts.map +1 -1
  24. package/dist/controllers/setting.controller.js +4 -130
  25. package/dist/controllers/setting.controller.js.map +1 -1
  26. package/dist/decorators/settings-provider.decorator.d.ts +3 -0
  27. package/dist/decorators/settings-provider.decorator.d.ts.map +1 -0
  28. package/dist/decorators/settings-provider.decorator.js +8 -0
  29. package/dist/decorators/settings-provider.decorator.js.map +1 -0
  30. package/dist/decorators/solid-password.decorator.d.ts.map +1 -1
  31. package/dist/decorators/solid-password.decorator.js +3 -3
  32. package/dist/decorators/solid-password.decorator.js.map +1 -1
  33. package/dist/dtos/create-role-metadata.dto.d.ts +3 -4
  34. package/dist/dtos/create-role-metadata.dto.d.ts.map +1 -1
  35. package/dist/dtos/create-role-metadata.dto.js +4 -51
  36. package/dist/dtos/create-role-metadata.dto.js.map +1 -1
  37. package/dist/dtos/create-setting.dto.d.ts +3 -0
  38. package/dist/dtos/create-setting.dto.d.ts.map +1 -1
  39. package/dist/dtos/create-setting.dto.js +20 -2
  40. package/dist/dtos/create-setting.dto.js.map +1 -1
  41. package/dist/dtos/update-setting.dto.d.ts +3 -0
  42. package/dist/dtos/update-setting.dto.d.ts.map +1 -1
  43. package/dist/dtos/update-setting.dto.js +19 -1
  44. package/dist/dtos/update-setting.dto.js.map +1 -1
  45. package/dist/entities/setting.entity.d.ts +3 -0
  46. package/dist/entities/setting.entity.d.ts.map +1 -1
  47. package/dist/entities/setting.entity.js +13 -1
  48. package/dist/entities/setting.entity.js.map +1 -1
  49. package/dist/factories/mail.factory.d.ts +3 -4
  50. package/dist/factories/mail.factory.d.ts.map +1 -1
  51. package/dist/factories/mail.factory.js +6 -12
  52. package/dist/factories/mail.factory.js.map +1 -1
  53. package/dist/factories/sms.factory.d.ts +3 -4
  54. package/dist/factories/sms.factory.d.ts.map +1 -1
  55. package/dist/factories/sms.factory.js +6 -12
  56. package/dist/factories/sms.factory.js.map +1 -1
  57. package/dist/factories/whatsapp.factory.d.ts +3 -4
  58. package/dist/factories/whatsapp.factory.d.ts.map +1 -1
  59. package/dist/factories/whatsapp.factory.js +6 -12
  60. package/dist/factories/whatsapp.factory.js.map +1 -1
  61. package/dist/guards/access-token.guard.d.ts +3 -4
  62. package/dist/guards/access-token.guard.d.ts.map +1 -1
  63. package/dist/guards/access-token.guard.js +14 -9
  64. package/dist/guards/access-token.guard.js.map +1 -1
  65. package/dist/helpers/cors.helper.d.ts +1 -2
  66. package/dist/helpers/cors.helper.d.ts.map +1 -1
  67. package/dist/helpers/cors.helper.js +2 -2
  68. package/dist/helpers/cors.helper.js.map +1 -1
  69. package/dist/helpers/error-mapper.service.d.ts.map +1 -1
  70. package/dist/helpers/error-mapper.service.js.map +1 -1
  71. package/dist/helpers/google-oauth.helper.d.ts +7 -3
  72. package/dist/helpers/google-oauth.helper.d.ts.map +1 -1
  73. package/dist/helpers/google-oauth.helper.js +1 -2
  74. package/dist/helpers/google-oauth.helper.js.map +1 -1
  75. package/dist/helpers/module.helper.js +0 -2
  76. package/dist/helpers/module.helper.js.map +1 -1
  77. package/dist/helpers/solid-registry.d.ts +8 -3
  78. package/dist/helpers/solid-registry.d.ts.map +1 -1
  79. package/dist/helpers/solid-registry.js +32 -9
  80. package/dist/helpers/solid-registry.js.map +1 -1
  81. package/dist/index.d.ts +2 -4
  82. package/dist/index.d.ts.map +1 -1
  83. package/dist/index.js +3 -6
  84. package/dist/index.js.map +1 -1
  85. package/dist/interfaces.d.ts +21 -0
  86. package/dist/interfaces.d.ts.map +1 -1
  87. package/dist/interfaces.js +8 -1
  88. package/dist/interfaces.js.map +1 -1
  89. package/dist/passport-strategies/google-oauth.strategy.d.ts +1 -4
  90. package/dist/passport-strategies/google-oauth.strategy.d.ts.map +1 -1
  91. package/dist/passport-strategies/google-oauth.strategy.js +12 -12
  92. package/dist/passport-strategies/google-oauth.strategy.js.map +1 -1
  93. package/dist/seeders/email-template-seeder.service.d.ts +3 -4
  94. package/dist/seeders/email-template-seeder.service.d.ts.map +1 -1
  95. package/dist/seeders/email-template-seeder.service.js +7 -12
  96. package/dist/seeders/email-template-seeder.service.js.map +1 -1
  97. package/dist/seeders/module-metadata-seeder.service.d.ts +1 -5
  98. package/dist/seeders/module-metadata-seeder.service.d.ts.map +1 -1
  99. package/dist/seeders/module-metadata-seeder.service.js +23 -23
  100. package/dist/seeders/module-metadata-seeder.service.js.map +1 -1
  101. package/dist/seeders/seed-data/solid-core-metadata.json +98 -4
  102. package/dist/seeders/sms-template-seeder.service.d.ts +3 -4
  103. package/dist/seeders/sms-template-seeder.service.d.ts.map +1 -1
  104. package/dist/seeders/sms-template-seeder.service.js +7 -12
  105. package/dist/seeders/sms-template-seeder.service.js.map +1 -1
  106. package/dist/services/action-metadata.service.d.ts +2 -13
  107. package/dist/services/action-metadata.service.d.ts.map +1 -1
  108. package/dist/services/action-metadata.service.js +4 -22
  109. package/dist/services/action-metadata.service.js.map +1 -1
  110. package/dist/services/ai-interaction.service.d.ts +2 -13
  111. package/dist/services/ai-interaction.service.d.ts.map +1 -1
  112. package/dist/services/ai-interaction.service.js +6 -24
  113. package/dist/services/ai-interaction.service.js.map +1 -1
  114. package/dist/services/authentication.service.d.ts +14 -10
  115. package/dist/services/authentication.service.d.ts.map +1 -1
  116. package/dist/services/authentication.service.js +159 -114
  117. package/dist/services/authentication.service.js.map +1 -1
  118. package/dist/services/bcrypt.service.d.ts +3 -5
  119. package/dist/services/bcrypt.service.d.ts.map +1 -1
  120. package/dist/services/bcrypt.service.js +10 -14
  121. package/dist/services/bcrypt.service.js.map +1 -1
  122. package/dist/services/chatter-message-details.service.d.ts +2 -13
  123. package/dist/services/chatter-message-details.service.d.ts.map +1 -1
  124. package/dist/services/chatter-message-details.service.js +4 -22
  125. package/dist/services/chatter-message-details.service.js.map +1 -1
  126. package/dist/services/chatter-message.service.d.ts +2 -13
  127. package/dist/services/chatter-message.service.d.ts.map +1 -1
  128. package/dist/services/chatter-message.service.js +5 -23
  129. package/dist/services/chatter-message.service.js.map +1 -1
  130. package/dist/services/crud.service.d.ts +12 -12
  131. package/dist/services/crud.service.d.ts.map +1 -1
  132. package/dist/services/crud.service.js +25 -17
  133. package/dist/services/crud.service.js.map +1 -1
  134. package/dist/services/dashboard-question-sql-dataset-config.service.d.ts +2 -13
  135. package/dist/services/dashboard-question-sql-dataset-config.service.d.ts.map +1 -1
  136. package/dist/services/dashboard-question-sql-dataset-config.service.js +4 -21
  137. package/dist/services/dashboard-question-sql-dataset-config.service.js.map +1 -1
  138. package/dist/services/dashboard-question.service.d.ts +2 -13
  139. package/dist/services/dashboard-question.service.d.ts.map +1 -1
  140. package/dist/services/dashboard-question.service.js +4 -21
  141. package/dist/services/dashboard-question.service.js.map +1 -1
  142. package/dist/services/dashboard-variable.service.d.ts +2 -13
  143. package/dist/services/dashboard-variable.service.d.ts.map +1 -1
  144. package/dist/services/dashboard-variable.service.js +4 -21
  145. package/dist/services/dashboard-variable.service.js.map +1 -1
  146. package/dist/services/dashboard.service.d.ts +2 -13
  147. package/dist/services/dashboard.service.d.ts.map +1 -1
  148. package/dist/services/dashboard.service.js +4 -21
  149. package/dist/services/dashboard.service.js.map +1 -1
  150. package/dist/services/email-template.service.d.ts +2 -13
  151. package/dist/services/email-template.service.d.ts.map +1 -1
  152. package/dist/services/email-template.service.js +4 -22
  153. package/dist/services/email-template.service.js.map +1 -1
  154. package/dist/services/export-template.service.d.ts +2 -13
  155. package/dist/services/export-template.service.d.ts.map +1 -1
  156. package/dist/services/export-template.service.js +4 -21
  157. package/dist/services/export-template.service.js.map +1 -1
  158. package/dist/services/export-transaction.service.d.ts +2 -13
  159. package/dist/services/export-transaction.service.d.ts.map +1 -1
  160. package/dist/services/export-transaction.service.js +4 -21
  161. package/dist/services/export-transaction.service.js.map +1 -1
  162. package/dist/services/field-metadata.service.d.ts +11 -0
  163. package/dist/services/field-metadata.service.d.ts.map +1 -1
  164. package/dist/services/field-metadata.service.js +3 -0
  165. package/dist/services/field-metadata.service.js.map +1 -1
  166. package/dist/services/file/file-service.interface.d.ts +22 -0
  167. package/dist/services/file/file-service.interface.d.ts.map +1 -0
  168. package/dist/services/file/file-service.interface.js +5 -0
  169. package/dist/services/file/file-service.interface.js.map +1 -0
  170. package/dist/services/file.service.d.ts +1 -4
  171. package/dist/services/file.service.d.ts.map +1 -1
  172. package/dist/services/file.service.js +11 -12
  173. package/dist/services/file.service.js.map +1 -1
  174. package/dist/services/genai/r2r-helper.service.d.ts +3 -1
  175. package/dist/services/genai/r2r-helper.service.d.ts.map +1 -1
  176. package/dist/services/genai/r2r-helper.service.js +11 -7
  177. package/dist/services/genai/r2r-helper.service.js.map +1 -1
  178. package/dist/services/import-transaction-error-log.service.d.ts +2 -13
  179. package/dist/services/import-transaction-error-log.service.d.ts.map +1 -1
  180. package/dist/services/import-transaction-error-log.service.js +4 -22
  181. package/dist/services/import-transaction-error-log.service.js.map +1 -1
  182. package/dist/services/import-transaction.service.d.ts +2 -13
  183. package/dist/services/import-transaction.service.d.ts.map +1 -1
  184. package/dist/services/import-transaction.service.js +4 -22
  185. package/dist/services/import-transaction.service.js.map +1 -1
  186. package/dist/services/list-of-values.service.d.ts +2 -13
  187. package/dist/services/list-of-values.service.d.ts.map +1 -1
  188. package/dist/services/list-of-values.service.js +4 -22
  189. package/dist/services/list-of-values.service.js.map +1 -1
  190. package/dist/services/locale.service.d.ts +2 -13
  191. package/dist/services/locale.service.d.ts.map +1 -1
  192. package/dist/services/locale.service.js +4 -22
  193. package/dist/services/locale.service.js.map +1 -1
  194. package/dist/services/mail/elastic-email.service.d.ts +4 -5
  195. package/dist/services/mail/elastic-email.service.d.ts.map +1 -1
  196. package/dist/services/mail/elastic-email.service.js +10 -13
  197. package/dist/services/mail/elastic-email.service.js.map +1 -1
  198. package/dist/services/mail/smtp-email.service.d.ts +3 -4
  199. package/dist/services/mail/smtp-email.service.d.ts.map +1 -1
  200. package/dist/services/mail/smtp-email.service.js +19 -17
  201. package/dist/services/mail/smtp-email.service.js.map +1 -1
  202. package/dist/services/media-storage-provider-metadata.service.d.ts +11 -0
  203. package/dist/services/media-storage-provider-metadata.service.d.ts.map +1 -1
  204. package/dist/services/media-storage-provider-metadata.service.js +3 -0
  205. package/dist/services/media-storage-provider-metadata.service.js.map +1 -1
  206. package/dist/services/media.service.d.ts +2 -9
  207. package/dist/services/media.service.d.ts.map +1 -1
  208. package/dist/services/media.service.js +17 -28
  209. package/dist/services/media.service.js.map +1 -1
  210. package/dist/services/mediaStorageProviders/file-s3-storage-provider.d.ts +2 -4
  211. package/dist/services/mediaStorageProviders/file-s3-storage-provider.d.ts.map +1 -1
  212. package/dist/services/mediaStorageProviders/file-s3-storage-provider.js +2 -11
  213. package/dist/services/mediaStorageProviders/file-s3-storage-provider.js.map +1 -1
  214. package/dist/services/mediaStorageProviders/file-storage-provider.d.ts +3 -1
  215. package/dist/services/mediaStorageProviders/file-storage-provider.d.ts.map +1 -1
  216. package/dist/services/mediaStorageProviders/file-storage-provider.js +16 -12
  217. package/dist/services/mediaStorageProviders/file-storage-provider.js.map +1 -1
  218. package/dist/services/mediaStorageProviders/index.d.ts +1 -1
  219. package/dist/services/mediaStorageProviders/index.d.ts.map +1 -1
  220. package/dist/services/mediaStorageProviders/index.js +1 -1
  221. package/dist/services/mediaStorageProviders/index.js.map +1 -1
  222. package/dist/services/menu-item-metadata.service.d.ts +2 -13
  223. package/dist/services/menu-item-metadata.service.d.ts.map +1 -1
  224. package/dist/services/menu-item-metadata.service.js +4 -22
  225. package/dist/services/menu-item-metadata.service.js.map +1 -1
  226. package/dist/services/model-metadata.service.d.ts +11 -0
  227. package/dist/services/model-metadata.service.d.ts.map +1 -1
  228. package/dist/services/model-metadata.service.js +3 -0
  229. package/dist/services/model-metadata.service.js.map +1 -1
  230. package/dist/services/model-sequence.service.d.ts +2 -13
  231. package/dist/services/model-sequence.service.d.ts.map +1 -1
  232. package/dist/services/model-sequence.service.js +4 -21
  233. package/dist/services/model-sequence.service.js.map +1 -1
  234. package/dist/services/module-metadata.service.d.ts +14 -1
  235. package/dist/services/module-metadata.service.d.ts.map +1 -1
  236. package/dist/services/module-metadata.service.js +13 -6
  237. package/dist/services/module-metadata.service.js.map +1 -1
  238. package/dist/services/mq-message-queue.service.d.ts +2 -13
  239. package/dist/services/mq-message-queue.service.d.ts.map +1 -1
  240. package/dist/services/mq-message-queue.service.js +4 -22
  241. package/dist/services/mq-message-queue.service.js.map +1 -1
  242. package/dist/services/mq-message.service.d.ts +2 -13
  243. package/dist/services/mq-message.service.d.ts.map +1 -1
  244. package/dist/services/mq-message.service.js +4 -22
  245. package/dist/services/mq-message.service.js.map +1 -1
  246. package/dist/services/permission-metadata.service.d.ts +2 -13
  247. package/dist/services/permission-metadata.service.d.ts.map +1 -1
  248. package/dist/services/permission-metadata.service.js +4 -22
  249. package/dist/services/permission-metadata.service.js.map +1 -1
  250. package/dist/services/role-metadata.service.d.ts +2 -13
  251. package/dist/services/role-metadata.service.d.ts.map +1 -1
  252. package/dist/services/role-metadata.service.js +4 -23
  253. package/dist/services/role-metadata.service.js.map +1 -1
  254. package/dist/services/saved-filters.service.d.ts +2 -13
  255. package/dist/services/saved-filters.service.d.ts.map +1 -1
  256. package/dist/services/saved-filters.service.js +4 -21
  257. package/dist/services/saved-filters.service.js.map +1 -1
  258. package/dist/services/scheduled-job.service.d.ts +2 -13
  259. package/dist/services/scheduled-job.service.d.ts.map +1 -1
  260. package/dist/services/scheduled-job.service.js +4 -22
  261. package/dist/services/scheduled-job.service.js.map +1 -1
  262. package/dist/services/security-rule.service.d.ts +2 -13
  263. package/dist/services/security-rule.service.d.ts.map +1 -1
  264. package/dist/services/security-rule.service.js +5 -23
  265. package/dist/services/security-rule.service.js.map +1 -1
  266. package/dist/services/selection-providers/list-of-roles-selectionproviders.service.d.ts +15 -0
  267. package/dist/services/selection-providers/list-of-roles-selectionproviders.service.d.ts.map +1 -0
  268. package/dist/services/selection-providers/list-of-roles-selectionproviders.service.js +59 -0
  269. package/dist/services/selection-providers/list-of-roles-selectionproviders.service.js.map +1 -0
  270. package/dist/services/setting.service.d.ts +23 -30
  271. package/dist/services/setting.service.d.ts.map +1 -1
  272. package/dist/services/setting.service.js +147 -196
  273. package/dist/services/setting.service.js.map +1 -1
  274. package/dist/services/settings/default-settings-provider.service.d.ts +1058 -0
  275. package/dist/services/settings/default-settings-provider.service.d.ts.map +1 -0
  276. package/dist/services/settings/default-settings-provider.service.js +139 -0
  277. package/dist/services/settings/default-settings-provider.service.js.map +1 -0
  278. package/dist/services/short-url/tiny-url.service.d.ts +3 -4
  279. package/dist/services/short-url/tiny-url.service.d.ts.map +1 -1
  280. package/dist/services/short-url/tiny-url.service.js +10 -13
  281. package/dist/services/short-url/tiny-url.service.js.map +1 -1
  282. package/dist/services/sms/Msg91BaseSMSService.d.ts +3 -4
  283. package/dist/services/sms/Msg91BaseSMSService.d.ts.map +1 -1
  284. package/dist/services/sms/Msg91BaseSMSService.js +3 -3
  285. package/dist/services/sms/Msg91BaseSMSService.js.map +1 -1
  286. package/dist/services/sms/Msg91OTPService.d.ts +2 -3
  287. package/dist/services/sms/Msg91OTPService.d.ts.map +1 -1
  288. package/dist/services/sms/Msg91OTPService.js +7 -13
  289. package/dist/services/sms/Msg91OTPService.js.map +1 -1
  290. package/dist/services/sms/Msg91SMSService.d.ts +2 -3
  291. package/dist/services/sms/Msg91SMSService.d.ts.map +1 -1
  292. package/dist/services/sms/Msg91SMSService.js +7 -13
  293. package/dist/services/sms/Msg91SMSService.js.map +1 -1
  294. package/dist/services/sms/TwilioSMSService.d.ts +3 -4
  295. package/dist/services/sms/TwilioSMSService.d.ts.map +1 -1
  296. package/dist/services/sms/TwilioSMSService.js +13 -16
  297. package/dist/services/sms/TwilioSMSService.js.map +1 -1
  298. package/dist/services/sms-template.service.d.ts +2 -13
  299. package/dist/services/sms-template.service.d.ts.map +1 -1
  300. package/dist/services/sms-template.service.js +4 -22
  301. package/dist/services/sms-template.service.js.map +1 -1
  302. package/dist/services/solid-introspect.service.d.ts +4 -1
  303. package/dist/services/solid-introspect.service.d.ts.map +1 -1
  304. package/dist/services/solid-introspect.service.js +33 -47
  305. package/dist/services/solid-introspect.service.js.map +1 -1
  306. package/dist/services/textract.service.d.ts +1 -4
  307. package/dist/services/textract.service.d.ts.map +1 -1
  308. package/dist/services/textract.service.js +14 -18
  309. package/dist/services/textract.service.js.map +1 -1
  310. package/dist/services/user-activity-history.service.d.ts +2 -13
  311. package/dist/services/user-activity-history.service.d.ts.map +1 -1
  312. package/dist/services/user-activity-history.service.js +4 -22
  313. package/dist/services/user-activity-history.service.js.map +1 -1
  314. package/dist/services/user-view-metadata.service.d.ts +2 -13
  315. package/dist/services/user-view-metadata.service.d.ts.map +1 -1
  316. package/dist/services/user-view-metadata.service.js +4 -22
  317. package/dist/services/user-view-metadata.service.js.map +1 -1
  318. package/dist/services/user.service.d.ts +2 -15
  319. package/dist/services/user.service.d.ts.map +1 -1
  320. package/dist/services/user.service.js +7 -28
  321. package/dist/services/user.service.js.map +1 -1
  322. package/dist/services/view-metadata.service.d.ts +2 -13
  323. package/dist/services/view-metadata.service.d.ts.map +1 -1
  324. package/dist/services/view-metadata.service.js +5 -23
  325. package/dist/services/view-metadata.service.js.map +1 -1
  326. package/dist/services/whatsapp/Msg91WhatsappService.d.ts +3 -4
  327. package/dist/services/whatsapp/Msg91WhatsappService.d.ts.map +1 -1
  328. package/dist/services/whatsapp/Msg91WhatsappService.js +12 -18
  329. package/dist/services/whatsapp/Msg91WhatsappService.js.map +1 -1
  330. package/dist/services/whatsapp/Three60WhatsappService.d.ts +1 -4
  331. package/dist/services/whatsapp/Three60WhatsappService.d.ts.map +1 -1
  332. package/dist/services/whatsapp/Three60WhatsappService.js +2 -11
  333. package/dist/services/whatsapp/Three60WhatsappService.js.map +1 -1
  334. package/dist/solid-core.module.d.ts.map +1 -1
  335. package/dist/solid-core.module.js +11 -47
  336. package/dist/solid-core.module.js.map +1 -1
  337. package/dist/transformers/typeorm/local-date-time-transformer.d.ts.map +1 -1
  338. package/dist/transformers/typeorm/local-date-time-transformer.js +4 -2
  339. package/dist/transformers/typeorm/local-date-time-transformer.js.map +1 -1
  340. package/dist/tsconfig.tsbuildinfo +1 -1
  341. package/package.json +1 -1
  342. package/src/commands/info.command.ts +101 -0
  343. package/src/commands/mcp.command.ts +3 -17
  344. package/src/commands/seed.command.ts +4 -16
  345. package/src/controllers/email-template.controller.ts +9 -4
  346. package/src/controllers/google-authentication.controller.ts +19 -12
  347. package/src/controllers/setting.controller.ts +6 -81
  348. package/src/decorators/settings-provider.decorator.ts +7 -0
  349. package/src/decorators/solid-password.decorator.ts +43 -43
  350. package/src/dtos/create-role-metadata.dto.ts +4 -81
  351. package/src/dtos/create-setting.dto.ts +14 -1
  352. package/src/dtos/update-setting.dto.ts +14 -0
  353. package/src/entities/setting.entity.ts +15 -1
  354. package/src/factories/mail.factory.ts +4 -4
  355. package/src/factories/sms.factory.ts +9 -7
  356. package/src/factories/whatsapp.factory.ts +4 -4
  357. package/src/guards/access-token.guard.ts +12 -5
  358. package/src/helpers/cors.helper.ts +3 -3
  359. package/src/helpers/error-mapper.service.ts +0 -1
  360. package/src/helpers/google-oauth.helper.ts +11 -7
  361. package/src/helpers/module.helper.ts +2 -2
  362. package/src/helpers/solid-registry.ts +45 -16
  363. package/src/index.ts +2 -4
  364. package/src/interfaces.ts +29 -0
  365. package/src/passport-strategies/google-oauth.strategy.ts +11 -8
  366. package/src/seeders/email-template-seeder.service.ts +6 -4
  367. package/src/seeders/module-metadata-seeder.service.ts +40 -28
  368. package/src/seeders/seed-data/solid-core-metadata.json +99 -5
  369. package/src/seeders/sms-template-seeder.service.ts +6 -4
  370. package/src/services/action-metadata.service.ts +4 -16
  371. package/src/services/ai-interaction.service.ts +6 -17
  372. package/src/services/authentication.service.ts +173 -111
  373. package/src/services/bcrypt.service.ts +9 -9
  374. package/src/services/chatter-message-details.service.ts +5 -17
  375. package/src/services/chatter-message.service.ts +2 -14
  376. package/src/services/crud.service.ts +36 -28
  377. package/src/services/dashboard-question-sql-dataset-config.service.ts +4 -15
  378. package/src/services/dashboard-question.service.ts +4 -17
  379. package/src/services/dashboard-variable.service.ts +4 -16
  380. package/src/services/dashboard.service.ts +2 -13
  381. package/src/services/email-template.service.ts +3 -15
  382. package/src/services/export-template.service.ts +4 -18
  383. package/src/services/export-transaction.service.ts +4 -19
  384. package/src/services/field-metadata.service.ts +5 -1
  385. package/src/services/file/file-service.interface.ts +74 -0
  386. package/src/services/file.service.ts +10 -7
  387. package/src/services/genai/r2r-helper.service.ts +10 -6
  388. package/src/services/import-transaction-error-log.service.ts +5 -17
  389. package/src/services/import-transaction.service.ts +3 -15
  390. package/src/services/list-of-values.service.ts +3 -16
  391. package/src/services/locale.service.ts +3 -15
  392. package/src/services/mail/elastic-email.service.ts +7 -7
  393. package/src/services/mail/smtp-email.service.ts +19 -11
  394. package/src/services/media-storage-provider-metadata.service.ts +4 -0
  395. package/src/services/media.service.ts +39 -22
  396. package/src/services/mediaStorageProviders/file-s3-storage-provider.ts +0 -3
  397. package/src/services/mediaStorageProviders/file-storage-provider.ts +24 -12
  398. package/src/services/mediaStorageProviders/index.ts +1 -1
  399. package/src/services/menu-item-metadata.service.ts +5 -17
  400. package/src/services/model-metadata.service.ts +4 -0
  401. package/src/services/model-sequence.service.ts +4 -15
  402. package/src/services/module-metadata.service.ts +13 -4
  403. package/src/services/mq-message-queue.service.ts +5 -17
  404. package/src/services/mq-message.service.ts +5 -17
  405. package/src/services/permission-metadata.service.ts +4 -16
  406. package/src/services/role-metadata.service.ts +3 -16
  407. package/src/services/saved-filters.service.ts +2 -13
  408. package/src/services/scheduled-job.service.ts +3 -15
  409. package/src/services/security-rule.service.ts +4 -16
  410. package/src/services/selection-providers/list-of-roles-selectionproviders.service.ts +69 -0
  411. package/src/services/setting.service.ts +223 -212
  412. package/src/services/settings/default-settings-provider.service.ts +157 -0
  413. package/src/services/short-url/tiny-url.service.ts +9 -7
  414. package/src/services/sms/Msg91BaseSMSService.ts +6 -4
  415. package/src/services/sms/Msg91OTPService.ts +7 -7
  416. package/src/services/sms/Msg91SMSService.ts +7 -6
  417. package/src/services/sms/TwilioSMSService.ts +18 -19
  418. package/src/services/sms-template.service.ts +3 -15
  419. package/src/services/solid-introspect.service.ts +45 -66
  420. package/src/services/textract.service.ts +13 -10
  421. package/src/services/user-activity-history.service.ts +5 -17
  422. package/src/services/user-view-metadata.service.ts +5 -17
  423. package/src/services/user.service.ts +7 -22
  424. package/src/services/view-metadata.service.ts +3 -15
  425. package/src/services/whatsapp/Msg91WhatsappService.ts +10 -11
  426. package/src/services/whatsapp/Three60WhatsappService.ts +0 -3
  427. package/src/solid-core.module.ts +19 -49
  428. package/src/transformers/typeorm/local-date-time-transformer.ts +10 -5
  429. package/dist/config/app-builder.config.d.ts +0 -11
  430. package/dist/config/app-builder.config.d.ts.map +0 -1
  431. package/dist/config/app-builder.config.js +0 -13
  432. package/dist/config/app-builder.config.js.map +0 -1
  433. package/dist/config/common.config.d.ts +0 -96
  434. package/dist/config/common.config.d.ts.map +0 -1
  435. package/dist/config/common.config.js +0 -51
  436. package/dist/config/common.config.js.map +0 -1
  437. package/dist/config/iam.config.d.ts +0 -56
  438. package/dist/config/iam.config.d.ts.map +0 -1
  439. package/dist/config/iam.config.js +0 -35
  440. package/dist/config/iam.config.js.map +0 -1
  441. package/dist/config/jwt.config.d.ts +0 -14
  442. package/dist/config/jwt.config.d.ts.map +0 -1
  443. package/dist/config/jwt.config.js +0 -15
  444. package/dist/config/jwt.config.js.map +0 -1
  445. package/dist/services/genai/mcp-handlers/solid-add-button-to-form-view-mcp-handler.service.d.ts +0 -16
  446. package/dist/services/genai/mcp-handlers/solid-add-button-to-form-view-mcp-handler.service.d.ts.map +0 -1
  447. package/dist/services/genai/mcp-handlers/solid-add-button-to-form-view-mcp-handler.service.js +0 -151
  448. package/dist/services/genai/mcp-handlers/solid-add-button-to-form-view-mcp-handler.service.js.map +0 -1
  449. package/dist/services/genai/mcp-handlers/solid-add-controller-handler-method-mcp-handler.service.d.ts +0 -17
  450. package/dist/services/genai/mcp-handlers/solid-add-controller-handler-method-mcp-handler.service.d.ts.map +0 -1
  451. package/dist/services/genai/mcp-handlers/solid-add-controller-handler-method-mcp-handler.service.js +0 -80
  452. package/dist/services/genai/mcp-handlers/solid-add-controller-handler-method-mcp-handler.service.js.map +0 -1
  453. package/dist/services/genai/mcp-handlers/solid-add-custom-service-method-mcp-handler.service.d.ts +0 -16
  454. package/dist/services/genai/mcp-handlers/solid-add-custom-service-method-mcp-handler.service.d.ts.map +0 -1
  455. package/dist/services/genai/mcp-handlers/solid-add-custom-service-method-mcp-handler.service.js +0 -74
  456. package/dist/services/genai/mcp-handlers/solid-add-custom-service-method-mcp-handler.service.js.map +0 -1
  457. package/dist/services/genai/mcp-handlers/solid-add-fields-to-model-mcp-handler.service.d.ts +0 -12
  458. package/dist/services/genai/mcp-handlers/solid-add-fields-to-model-mcp-handler.service.d.ts.map +0 -1
  459. package/dist/services/genai/mcp-handlers/solid-add-fields-to-model-mcp-handler.service.js +0 -47
  460. package/dist/services/genai/mcp-handlers/solid-add-fields-to-model-mcp-handler.service.js.map +0 -1
  461. package/dist/services/genai/mcp-handlers/solid-add-header-button-or-row-button-to-list-view-mcp-handler.service.d.ts +0 -16
  462. package/dist/services/genai/mcp-handlers/solid-add-header-button-or-row-button-to-list-view-mcp-handler.service.d.ts.map +0 -1
  463. package/dist/services/genai/mcp-handlers/solid-add-header-button-or-row-button-to-list-view-mcp-handler.service.js +0 -151
  464. package/dist/services/genai/mcp-handlers/solid-add-header-button-or-row-button-to-list-view-mcp-handler.service.js.map +0 -1
  465. package/dist/services/genai/mcp-handlers/solid-create-computed-provider-mcp-handler.service.d.ts +0 -16
  466. package/dist/services/genai/mcp-handlers/solid-create-computed-provider-mcp-handler.service.d.ts.map +0 -1
  467. package/dist/services/genai/mcp-handlers/solid-create-computed-provider-mcp-handler.service.js +0 -75
  468. package/dist/services/genai/mcp-handlers/solid-create-computed-provider-mcp-handler.service.js.map +0 -1
  469. package/dist/services/genai/mcp-handlers/solid-create-custom-form-view-widget-mcp-handler.service.d.ts +0 -14
  470. package/dist/services/genai/mcp-handlers/solid-create-custom-form-view-widget-mcp-handler.service.d.ts.map +0 -1
  471. package/dist/services/genai/mcp-handlers/solid-create-custom-form-view-widget-mcp-handler.service.js +0 -73
  472. package/dist/services/genai/mcp-handlers/solid-create-custom-form-view-widget-mcp-handler.service.js.map +0 -1
  473. package/dist/services/genai/mcp-handlers/solid-create-model-with-fields-mcp-handler.service.d.ts +0 -14
  474. package/dist/services/genai/mcp-handlers/solid-create-model-with-fields-mcp-handler.service.d.ts.map +0 -1
  475. package/dist/services/genai/mcp-handlers/solid-create-model-with-fields-mcp-handler.service.js +0 -45
  476. package/dist/services/genai/mcp-handlers/solid-create-model-with-fields-mcp-handler.service.js.map +0 -1
  477. package/dist/services/genai/mcp-handlers/solid-create-module-mcp-handler.service.d.ts +0 -14
  478. package/dist/services/genai/mcp-handlers/solid-create-module-mcp-handler.service.d.ts.map +0 -1
  479. package/dist/services/genai/mcp-handlers/solid-create-module-mcp-handler.service.js +0 -51
  480. package/dist/services/genai/mcp-handlers/solid-create-module-mcp-handler.service.js.map +0 -1
  481. package/dist/services/genai/mcp-handlers/solid-update-layout-mcp-handler.service.d.ts +0 -12
  482. package/dist/services/genai/mcp-handlers/solid-update-layout-mcp-handler.service.d.ts.map +0 -1
  483. package/dist/services/genai/mcp-handlers/solid-update-layout-mcp-handler.service.js +0 -38
  484. package/dist/services/genai/mcp-handlers/solid-update-layout-mcp-handler.service.js.map +0 -1
  485. package/dist/services/media-storage-provider-metadata-seeder.service.d.ts +0 -8
  486. package/dist/services/media-storage-provider-metadata-seeder.service.d.ts.map +0 -1
  487. package/dist/services/media-storage-provider-metadata-seeder.service.js +0 -43
  488. package/dist/services/media-storage-provider-metadata-seeder.service.js.map +0 -1
  489. package/src/config/app-builder.config.ts +0 -12
  490. package/src/config/common.config.ts +0 -55
  491. package/src/config/iam.config.ts +0 -32
  492. package/src/config/jwt.config.ts +0 -13
  493. package/src/services/export_issues.txt +0 -10
  494. package/src/services/genai/mcp-handlers/solid-add-button-to-form-view-mcp-handler.service.ts +0 -137
  495. package/src/services/genai/mcp-handlers/solid-add-controller-handler-method-mcp-handler.service.ts +0 -81
  496. package/src/services/genai/mcp-handlers/solid-add-custom-service-method-mcp-handler.service.ts +0 -69
  497. package/src/services/genai/mcp-handlers/solid-add-fields-to-model-mcp-handler.service.ts +0 -68
  498. package/src/services/genai/mcp-handlers/solid-add-header-button-or-row-button-to-list-view-mcp-handler.service.ts +0 -141
  499. package/src/services/genai/mcp-handlers/solid-create-computed-provider-mcp-handler.service.ts +0 -71
  500. package/src/services/genai/mcp-handlers/solid-create-custom-form-view-widget-mcp-handler.service.ts +0 -72
  501. package/src/services/genai/mcp-handlers/solid-create-model-with-fields-mcp-handler.service.ts +0 -45
  502. package/src/services/genai/mcp-handlers/solid-create-module-mcp-handler.service.ts +0 -58
  503. package/src/services/genai/mcp-handlers/solid-update-layout-mcp-handler.service.ts +0 -40
  504. package/src/services/groupBy.json +0 -92
  505. package/src/services/media-storage-provider-metadata-seeder.service.ts +0 -33
@@ -1,4 +1,5 @@
1
1
  import { HttpService } from '@nestjs/axios';
2
+ import type { SolidCoreSetting } from "src/services/settings/default-settings-provider.service";
2
3
  import {
3
4
  BadRequestException,
4
5
  ConflictException,
@@ -15,8 +16,6 @@ import { JwtService } from '@nestjs/jwt';
15
16
  import { InjectDataSource } from '@nestjs/typeorm';
16
17
  import { isEmpty, isNotEmpty } from 'class-validator';
17
18
  import { randomInt, randomUUID } from 'crypto';
18
- import commonConfig from 'src/config/common.config';
19
- import { jwtConfig } from 'src/config/jwt.config';
20
19
  import { ERROR_MESSAGES } from 'src/constants/error-messages';
21
20
  import { SUCCESS_MESSAGES } from 'src/constants/success-messages';
22
21
  import { CreateUserDto } from 'src/dtos/create-user.dto';
@@ -25,7 +24,6 @@ import { UserRepository } from 'src/repository/user.repository';
25
24
  import { Msg91OTPService } from 'src/services/sms/Msg91OTPService';
26
25
  import { DataSource, Repository } from 'typeorm';
27
26
  import { v4 as uuidv4 } from 'uuid';
28
- import { iamConfig } from '../config/iam.config';
29
27
  import {
30
28
  ForgotPasswordSendVerificationTokenOn,
31
29
  RegistrationValidationSource,
@@ -72,10 +70,6 @@ export class AuthenticationService {
72
70
  private readonly userRepository: UserRepository,
73
71
  private readonly hashingService: HashingService,
74
72
  private readonly jwtService: JwtService,
75
- @Inject(jwtConfig.KEY)
76
- private readonly jwtConfiguration: ConfigType<typeof jwtConfig>,
77
- @Inject(iamConfig.KEY)
78
- private readonly iamConfiguration: ConfigType<typeof iamConfig>,
79
73
  private readonly refreshTokenIdsStorage: RefreshTokenIdsStorageService,
80
74
  private readonly httpService: HttpService,
81
75
  // private readonly mailService: SMTPEMailService,
@@ -85,21 +79,16 @@ export class AuthenticationService {
85
79
  private readonly eventEmitter: EventEmitter2,
86
80
  private readonly settingService: SettingService,
87
81
  private readonly roleMetadataService: RoleMetadataService,
88
- @Inject(commonConfig.KEY)
89
- private readonly commonConfiguration: ConfigType<typeof commonConfig>,
90
82
  private readonly userActivityHistoryService: UserActivityHistoryService,
83
+
91
84
  @InjectDataSource()
92
85
  private readonly dataSource: DataSource,
93
86
  ) {
94
87
  // this.mailService = this.mailServiceFactory.getMailService();
95
88
  }
96
89
 
97
- private async getConfig(key: string): Promise<any> {
98
- return this.settingService.getConfigValue(key);
99
- }
100
-
101
90
  private async getCompanyLogo(): Promise<string> {
102
- return await this.settingService.getConfigValue('companylogo');
91
+ return this.settingService.getConfigValue<SolidCoreSetting>('companylogo');
103
92
  }
104
93
 
105
94
  async resolveUser(username: string, email: string) {
@@ -166,18 +155,21 @@ export class AuthenticationService {
166
155
 
167
156
  async signUp(signUpDto: SignUpDto, activeUser: ActiveUserData = null): Promise<User> {
168
157
  // If public registrations are disabled and no activeUser is present when invoking signUp then we throw an exception.
169
- if (!(await this.settingService.getConfigValue('allowPublicRegistration')) && !activeUser) {
158
+ if (!(this.settingService.getConfigValue<SolidCoreSetting>('allowPublicRegistration')) && !activeUser) {
170
159
  throw new BadRequestException(ERROR_MESSAGES.PUBLIC_REGISTRATION_DISABLED);
171
160
  }
172
161
 
173
162
  try {
174
- const onForcePasswordChange = await this.getConfig('forceChangePasswordOnFirstLogin');
175
- var { user, pwd, autoGeneratedPwd } = await this.populateForSignup(new User(), signUpDto, this.iamConfiguration.activateUserOnRegistration, onForcePasswordChange);
163
+ const onForcePasswordChange = this.settingService.getConfigValue<SolidCoreSetting>('forceChangePasswordOnFirstLogin');
164
+ const activateUserOnRegistration = this.settingService.getConfigValue<SolidCoreSetting>('activateUserOnRegistration');
165
+ const defaultRole = this.settingService.getConfigValue<SolidCoreSetting>('defaultRole');
166
+
167
+ var { user, pwd, autoGeneratedPwd } = await this.populateForSignup(new User(), signUpDto, activateUserOnRegistration, onForcePasswordChange);
176
168
  const savedUser = await this.userRepository.save(user);
177
169
  // Also assign a default role to the newly created user.
178
170
  const userRoles = signUpDto.roles ?? [];
179
- if (signUpDto.username !== 'sa' && this.iamConfiguration.defaultRole) {
180
- userRoles.push(this.iamConfiguration.defaultRole);
171
+ if (signUpDto.username !== 'sa' && defaultRole) {
172
+ userRoles.push(defaultRole);
181
173
  }
182
174
  await this.handlePostSignup(savedUser, userRoles, pwd, autoGeneratedPwd);
183
175
 
@@ -195,7 +187,7 @@ export class AuthenticationService {
195
187
 
196
188
  async signupForExtensionUser<T extends User, U extends CreateUserDto>(signUpDto: SignUpDto, extensionUserDto: U, extensionUserRepo: Repository<T>): Promise<T> {
197
189
  try {
198
- const onForcePasswordChange = await this.getConfig('forceChangePasswordOnFirstLogin');
190
+ const onForcePasswordChange = this.settingService.getConfigValue<SolidCoreSetting>('forceChangePasswordOnFirstLogin');
199
191
  // Merge the extended signUpDto attributes into the user entity
200
192
  //@ts-ignore
201
193
  const extensionUser = extensionUserRepo.merge(extensionUserRepo.create() as T, extensionUserDto);
@@ -218,7 +210,7 @@ export class AuthenticationService {
218
210
 
219
211
  private async populateForSignup<T extends User>(user: T, signUpDto: SignUpDto, isUserActive: boolean = true, onForcePasswordChange?: boolean) {
220
212
  // const user = new User();
221
- let autoGeneratedPwdPermission = await this.settingService.getConfigValue('iamAutoGeneratedPassword');
213
+ let autoGeneratedPwdPermission = this.settingService.getConfigValue<SolidCoreSetting>('iamAutoGeneratedPassword');
222
214
  if (signUpDto.roles && signUpDto.roles.length > 0) {
223
215
  for (let i = 0; i < signUpDto.roles.length; i++) {
224
216
  const roleName = signUpDto.roles[i];
@@ -254,7 +246,7 @@ export class AuthenticationService {
254
246
  else {
255
247
  // This means that most likely the system is going to be using password-less login.
256
248
  // If that is not the case then we can raise a bad request exception...
257
- if (!this.isPasswordlessRegistrationEnabled()) {
249
+ if (!await this.isPasswordlessRegistrationEnabled()) {
258
250
  this.logger.error('User being created without password, and password less login is also not enabled in the system. Is this intentional?');
259
251
  throw new BadRequestException(ERROR_MESSAGES.PASSWORDLESS_REGISTRATION_DISABLED);
260
252
  }
@@ -278,7 +270,7 @@ export class AuthenticationService {
278
270
  // if forcePasswordChange is true, then we trigger an email to the user to change the password, this needs to be done using a queue.
279
271
  // 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
280
272
  if (user.forcePasswordChange && autoGeneratedPwd) {
281
- this.notifyUserOnForcePasswordChange(user, autoGeneratedPwd);
273
+ await this.notifyUserOnForcePasswordChange(user, autoGeneratedPwd);
282
274
  }
283
275
 
284
276
  // Send welcome notifications (email/SMS) if enabled.
@@ -310,16 +302,16 @@ export class AuthenticationService {
310
302
  user.email,
311
303
  'on-force-password-change',
312
304
  {
313
- solidAppName: process.env.SOLID_APP_NAME,
314
- solidAppWebsiteUrl: process.env.SOLID_APP_WEBSITE_URL,
315
- frontendLoginPageUrl: process.env.IAM_FRONTEND_APP_LOGIN_PAGE_URL,
305
+ solidAppName: this.settingService.getConfigValue<SolidCoreSetting>('appTitle'),
306
+ solidAppWebsiteUrl: this.settingService.getConfigValue<SolidCoreSetting>('solidAppWebsiteUrl'),
307
+ frontendLoginPageUrl: this.settingService.getConfigValue<SolidCoreSetting>('frontendLoginPageUrl'),
316
308
  email: user.email,
317
309
  fullName: user.fullName,
318
310
  userName: user.username,
319
311
  password: autoGeneratedPwd,
320
312
  companyLogoUrl: companyLogo
321
313
  },
322
- this.commonConfiguration.shouldQueueEmails,
314
+ this.settingService.getConfigValue<SolidCoreSetting>('shouldQueueEmails'),
323
315
  null,
324
316
  null,
325
317
  'user',
@@ -328,32 +320,34 @@ export class AuthenticationService {
328
320
 
329
321
  }
330
322
 
331
- private isWelcomeEmailEnabled(): boolean {
332
- return this.iamConfiguration.sendWelcomeEmailOnSignup;
323
+ private async isWelcomeEmailEnabled(): Promise<boolean> {
324
+ const sendWelcomeEmailOnSignup = this.settingService.getConfigValue<SolidCoreSetting>('sendWelcomeEmailOnSignup');
325
+ return sendWelcomeEmailOnSignup;
333
326
  }
334
327
 
335
- private isWelcomeSmsEnabled(): boolean {
336
- return this.iamConfiguration.sendWelcomeSmsOnSignup;
328
+ private async isWelcomeSmsEnabled(): Promise<boolean> {
329
+ const sendWelcomeSmsOnSignup = this.settingService.getConfigValue<SolidCoreSetting>('sendWelcomeSmsOnSignup');
330
+ return sendWelcomeSmsOnSignup;
337
331
  }
338
332
 
339
333
  private async notifyUserOnSignup(user: User) {
340
334
  const companyLogo = await this.getCompanyLogo();
341
335
  // Email welcome
342
- if (this.isWelcomeEmailEnabled()) {
336
+ if (await this.isWelcomeEmailEnabled()) {
343
337
  const mailService = this.mailServiceFactory.getMailService();
344
338
  mailService.sendEmailUsingTemplate(
345
339
  user.email,
346
340
  'email-on-signup',
347
341
  {
348
- solidAppName: process.env.SOLID_APP_NAME,
349
- solidAppWebsiteUrl: process.env.SOLID_APP_WEBSITE_URL,
350
- frontendLoginPageUrl: process.env.IAM_FRONTEND_APP_LOGIN_PAGE_URL,
342
+ solidAppName: this.settingService.getConfigValue<SolidCoreSetting>('appTitle'),
343
+ solidAppWebsiteUrl: this.settingService.getConfigValue<SolidCoreSetting>('solidAppWebsiteUrl'),
344
+ frontendLoginPageUrl: this.settingService.getConfigValue<SolidCoreSetting>('frontendLoginPageUrl'),
351
345
  email: user.email,
352
346
  fullName: user.fullName,
353
347
  userName: user.username,
354
348
  companyLogoUrl: companyLogo
355
349
  },
356
- this.commonConfiguration.shouldQueueEmails,
350
+ this.settingService.getConfigValue<SolidCoreSetting>('shouldQueueEmails'),
357
351
  null,
358
352
  null,
359
353
  'user',
@@ -362,25 +356,28 @@ export class AuthenticationService {
362
356
  }
363
357
 
364
358
  // SMS welcome
365
- if (this.isWelcomeSmsEnabled() && user.mobile) {
359
+ const isWelcomeSmsEnabled = await this.isWelcomeSmsEnabled()
360
+ if (isWelcomeSmsEnabled && user.mobile) {
366
361
  const smsService = this.smsFactory.getSmsService();
367
362
  smsService.sendSMSUsingTemplate(
368
363
  user.mobile,
369
364
  'text-on-signup',
370
365
  {
371
- solidAppName: process.env.SOLID_APP_NAME,
372
- frontendLoginPageUrl: process.env.IAM_FRONTEND_APP_LOGIN_PAGE_URL,
366
+ solidAppName: this.settingService.getConfigValue<SolidCoreSetting>('appTitle'),
367
+ frontendLoginPageUrl: this.settingService.getConfigValue<SolidCoreSetting>('frontendLoginPageUrl'),
373
368
  firstName: user.username,
374
369
  fullName: user.fullName ? user.fullName : user.username
375
370
  },
376
- this.commonConfiguration.shouldQueueSms,
371
+ this.settingService.getConfigValue<SolidCoreSetting>('shouldQueueSms'),
372
+
377
373
  );
378
374
  }
379
375
  }
380
376
 
381
377
  async otpInitiateRegistration(signUpDto: OTPSignUpDto) {
382
378
  try {
383
- if (!this.isPasswordlessRegistrationEnabled()) {
379
+ const isPasswordlessRegistrationEnabled = await this.isPasswordlessRegistrationEnabled();
380
+ if (!isPasswordlessRegistrationEnabled) {
384
381
  throw new BadRequestException(ERROR_MESSAGES.PASSWORDLESS_REGISTRATION_DISABLED);
385
382
  }
386
383
  // Validate if either mobile or email is present.
@@ -405,21 +402,23 @@ export class AuthenticationService {
405
402
  if (isNotEmpty(existingUser) && existingUser.active) {
406
403
  throw new ConflictException(ERROR_MESSAGES.USER_ALREADY_EXISTS);
407
404
  }
408
- const finalRegistrationVerificationSources = this.calculateVerificationSources(this.iamConfiguration.passwordlessRegistrationValidateWhat, signUpDto);
405
+ const passwordlessRegistrationValidateWhat = this.settingService.getConfigValue<SolidCoreSetting>('passwordlessRegistrationValidateWhat');
406
+
407
+ const finalRegistrationVerificationSources = this.calculateVerificationSources(passwordlessRegistrationValidateWhat, signUpDto);
409
408
  let user = existingUser
410
409
  if (isEmpty(user)) {
411
410
  user = this.createUser(signUpDto);
412
- this.populateVerificationTokens(finalRegistrationVerificationSources, user);
411
+ await this.populateVerificationTokens(finalRegistrationVerificationSources, user);
413
412
  await this.userRepository.save(user);
414
- await this.userService.addRoleToUser(user.username, await this.settingService.getConfigValue('defaultRole'));
413
+ await this.userService.addRoleToUser(user.username, this.settingService.getConfigValue<SolidCoreSetting>('defaultRole'));
415
414
  }
416
415
  else {
417
- this.populateVerificationTokens(finalRegistrationVerificationSources, user);
416
+ await this.populateVerificationTokens(finalRegistrationVerificationSources, user);
418
417
  await this.userRepository.save(user);
419
418
  }
420
419
 
421
420
  // Send OTP to the user through email or SMS, depending on the configuration.
422
- this.notifyUserOnOtpInitiateRegistration(user, finalRegistrationVerificationSources);
421
+ await this.notifyUserOnOtpInitiateRegistration(user, finalRegistrationVerificationSources);
423
422
  return { message: SUCCESS_MESSAGES.OTP_SENT_SUCCESS_REGISTRATION }
424
423
  } catch (err) {
425
424
  const pgUniqueViolationErrorCode = '23505';
@@ -450,24 +449,28 @@ export class AuthenticationService {
450
449
  }
451
450
 
452
451
  // Generate the validation tokens for the user i.e (system configured + user provided)
453
- private populateVerificationTokens(finalRegistrationValidationSources: string[], user: User) {
452
+ private async populateVerificationTokens(finalRegistrationValidationSources: string[], user: User) {
454
453
  if (finalRegistrationValidationSources.length === 0) {
455
454
  throw new BadRequestException(ERROR_MESSAGES.VALIDATION_SOURCE_REQUIRED);
456
455
  }
457
456
  if (finalRegistrationValidationSources.includes(TransactionalRegistrationValidationSource.EMAIL)) {
458
- const { token, expiresAt } = this.otp();
457
+ const { token, expiresAt } = await this.otp();
459
458
  user.emailVerificationTokenOnRegistration = token;
460
459
  user.emailVerificationTokenOnRegistrationExpiresAt = expiresAt;
461
- if (this.iamConfiguration.autoLoginUserOnRegistration) {
460
+ const autoLoginUserOnRegistration = this.settingService.getConfigValue<SolidCoreSetting>('autoLoginUserOnRegistration');
461
+
462
+ if (autoLoginUserOnRegistration) {
462
463
  user.emailVerificationTokenOnLogin = token;
463
464
  user.emailVerificationTokenOnLoginExpiresAt = expiresAt;
464
465
  }
465
466
  }
466
467
  if (finalRegistrationValidationSources.includes(TransactionalRegistrationValidationSource.MOBILE)) {
467
- const { token, expiresAt } = this.otp();
468
+ const { token, expiresAt } = await this.otp();
468
469
  user.mobileVerificationTokenOnRegistration = token;
469
470
  user.mobileVerificationTokenOnRegistrationExpiresAt = expiresAt;
470
- if (this.iamConfiguration.autoLoginUserOnRegistration) {
471
+
472
+ const autoLoginUserOnRegistration = this.settingService.getConfigValue<SolidCoreSetting>('autoLoginUserOnRegistration');
473
+ if (autoLoginUserOnRegistration) {
471
474
  user.mobileVerificationTokenOnLogin = token;
472
475
  user.mobileVerificationTokenOnLoginExpiresAt = expiresAt;
473
476
  }
@@ -476,7 +479,9 @@ export class AuthenticationService {
476
479
 
477
480
  private async notifyUserOnOtpInitiateRegistration(user: User, registrationValidationSources: string[]) {
478
481
  const companyLogo = await this.getCompanyLogo();
479
- if (this.iamConfiguration.dummyOtp)
482
+ const dummyOtp = this.settingService.getConfigValue<SolidCoreSetting>('dummyOtp');
483
+
484
+ if (dummyOtp)
480
485
  return; // Do nothing if dummy otp is configured.
481
486
  if (registrationValidationSources.includes(RegistrationValidationSource.EMAIL)) {
482
487
  const mailService = this.mailServiceFactory.getMailService();
@@ -484,14 +489,14 @@ export class AuthenticationService {
484
489
  user.email,
485
490
  'otp-on-register',
486
491
  {
487
- solidAppName: process.env.SOLID_APP_NAME,
488
- solidAppWebsiteUrl: process.env.SOLID_APP_WEBSITE_URL,
492
+ solidAppName: this.settingService.getConfigValue<SolidCoreSetting>('appTitle'),
493
+ solidAppWebsiteUrl: this.settingService.getConfigValue<SolidCoreSetting>('solidAppWebsiteUrl'),
489
494
  firstName: user.username,
490
495
  fullName: user.fullName ? user.fullName : user.username,
491
496
  emailVerificationTokenOnRegistration: user.emailVerificationTokenOnRegistration,
492
497
  companyLogoUrl: companyLogo
493
498
  },
494
- this.commonConfiguration.shouldQueueEmails,
499
+ this.settingService.getConfigValue<SolidCoreSetting>('shouldQueueEmails'),
495
500
  null,
496
501
  null,
497
502
  'user',
@@ -504,20 +509,23 @@ export class AuthenticationService {
504
509
  user.mobile,
505
510
  'otp-on-register',
506
511
  {
507
- solidAppName: process.env.SOLID_APP_NAME,
512
+ solidAppName: this.settingService.getConfigValue<SolidCoreSetting>('appTitle'),
508
513
  otp: user.mobileVerificationTokenOnRegistration,
509
514
  mobileVerificationTokenOnRegistration: user.mobileVerificationTokenOnRegistration,
510
515
  firstName: user.username,
511
516
  fullName: user.fullName ? user.fullName : user.username,
512
517
  companyLogoUrl: companyLogo
513
518
  },
514
- this.commonConfiguration.shouldQueueSms,
519
+ this.settingService.getConfigValue<SolidCoreSetting>('shouldQueueSms'),
520
+
515
521
  );
516
522
  }
517
523
  }
518
524
 
519
525
  async otpConfirmRegistration(confirmSignUpDto: OTPConfirmOTPDto) {
520
- if (!this.isPasswordlessRegistrationEnabled()) {
526
+ const isPasswordlessRegistrationEnabled = await this.isPasswordlessRegistrationEnabled();
527
+
528
+ if (!isPasswordlessRegistrationEnabled) {
521
529
  throw new BadRequestException(ERROR_MESSAGES.PASSWORDLESS_REGISTRATION_DISABLED);
522
530
  }
523
531
 
@@ -540,7 +548,7 @@ export class AuthenticationService {
540
548
  user.emailVerifiedOnRegistrationAt = new Date();
541
549
  user.emailVerificationTokenOnRegistration = null;
542
550
  user.emailVerificationTokenOnRegistrationExpiresAt = null;
543
- user.active = await this.settingService.getConfigValue('activateUserOnRegistration') && this.areRegistrationValidationSourcesVerified(user);
551
+ user.active = this.settingService.getConfigValue<SolidCoreSetting>('activateUserOnRegistration') && await this.areRegistrationValidationSourcesVerified(user);
544
552
  const savedUser: User = await this.userRepository.save(user);
545
553
  this.triggerRegistrationEvent(savedUser);
546
554
  return { active: savedUser.active, message: `User registration verified for ${confirmSignUpDto.type}` }
@@ -562,7 +570,7 @@ export class AuthenticationService {
562
570
  user.mobileVerifiedOnRegistrationAt = new Date();
563
571
  user.mobileVerificationTokenOnRegistration = null;
564
572
  user.mobileVerificationTokenOnRegistrationExpiresAt = null;
565
- user.active = await this.settingService.getConfigValue('activateUserOnRegistration') && this.areRegistrationValidationSourcesVerified(user);
573
+ user.active = this.settingService.getConfigValue<SolidCoreSetting>('activateUserOnRegistration') && await this.areRegistrationValidationSourcesVerified(user);
566
574
  const savedUser: User = await this.userRepository.save(user);
567
575
  this.triggerRegistrationEvent(savedUser);
568
576
  return { active: savedUser.active, message: `User registration verified for ${confirmSignUpDto.type}` }
@@ -576,8 +584,10 @@ export class AuthenticationService {
576
584
  this.eventEmitter.emit(EventType.USER_REGISTERED, event);
577
585
  }
578
586
 
579
- areRegistrationValidationSourcesVerified(user: User): boolean {
580
- const registrationValidationSources = this.iamConfiguration.passwordlessRegistrationValidateWhat;
587
+ async areRegistrationValidationSourcesVerified(user: User): Promise<boolean> {
588
+ const passwordlessRegistrationValidateWhat = this.settingService.getConfigValue<SolidCoreSetting>('passwordlessRegistrationValidateWhat');
589
+
590
+ const registrationValidationSources = passwordlessRegistrationValidateWhat;
581
591
  if (registrationValidationSources.includes(RegistrationValidationSource.EMAIL)) {
582
592
  if (!user.emailVerifiedOnRegistrationAt) {
583
593
  return false;
@@ -591,11 +601,13 @@ export class AuthenticationService {
591
601
  return true;
592
602
  }
593
603
 
594
- private otp(): otp {
604
+ private async otp(): Promise<otp> {
595
605
  const now = new Date();
596
- now.setMinutes(now.getMinutes() + this.iamConfiguration.otpExpiry);
606
+ const otpExpiry = this.settingService.getConfigValue<SolidCoreSetting>('otpExpiry');
607
+ const dummyOtp = this.settingService.getConfigValue<SolidCoreSetting>('dummyOtp');
608
+ now.setMinutes(now.getMinutes() + otpExpiry);
597
609
  return {
598
- token: this.iamConfiguration.dummyOtp ? this.iamConfiguration.dummyOtp : randomInt(100000, 999999).toString(),
610
+ token: dummyOtp ? dummyOtp : randomInt(100000, 999999).toString(),
599
611
  expiresAt: now,
600
612
  };
601
613
  }
@@ -621,8 +633,33 @@ export class AuthenticationService {
621
633
  }
622
634
  }
623
635
 
636
+ private maskEmail(email: string): string {
637
+ if (!email) return null;
638
+
639
+ const [localPart, domain] = email.split('@');
640
+ if (localPart.length <= 2) {
641
+ return `${localPart[0]}***@${domain}`;
642
+ }
643
+
644
+ const visibleStart = localPart.slice(0, 2);
645
+ const visibleEnd = localPart.slice(-1);
646
+ return `${visibleStart}***${visibleEnd}@${domain}`;
647
+ }
648
+
649
+ private maskMobile(mobile: string): string {
650
+ if (!mobile) return null;
651
+
652
+ if (mobile.length <= 4) {
653
+ return mobile;
654
+ }
655
+
656
+ const visibleEnd = mobile.slice(-4);
657
+ return `***${visibleEnd}`;
658
+ }
659
+
624
660
  async otpInitiateLogin(signInDto: OTPSignInDto) {
625
- if (!this.isPasswordlessRegistrationEnabled()) {
661
+ const isPasswordlessRegistrationEnabled = await this.isPasswordlessRegistrationEnabled();
662
+ if (!isPasswordlessRegistrationEnabled) {
626
663
  throw new BadRequestException(ERROR_MESSAGES.PASSWORDLESS_REGISTRATION_DISABLED);
627
664
  }
628
665
 
@@ -646,11 +683,17 @@ export class AuthenticationService {
646
683
  if (!user.active) {
647
684
  throw new UnauthorizedException(ERROR_MESSAGES.USER_INACTIVE);
648
685
  }
649
- const { token, expiresAt } = this.otp();
686
+ const { token, expiresAt } = await this.otp();
650
687
  user.emailVerificationTokenOnLogin = token;
651
688
  user.emailVerificationTokenOnLoginExpiresAt = expiresAt;
652
689
  await this.userRepository.save(user);
653
690
  this.notifyUserOnOtpInititateLogin(user, RegistrationValidationSource.EMAIL);
691
+ return {
692
+ message: SUCCESS_MESSAGES.OTP_SENT_SUCCESS_LOGIN,
693
+ user: {
694
+ email: this.maskEmail(user.email)
695
+ }
696
+ };
654
697
  } else if (signInDto.type === RegistrationValidationSource.MOBILE) {
655
698
  // const user = await this.userRepository.findOne({
656
699
  // where: {
@@ -668,22 +711,28 @@ export class AuthenticationService {
668
711
  throw new UnauthorizedException(ERROR_MESSAGES.USER_NOT_FOUND);
669
712
  }
670
713
 
671
- const { token, expiresAt } = this.otp();
714
+ const { token, expiresAt } = await this.otp();
672
715
  user.mobileVerificationTokenOnLogin = token;
673
716
  user.mobileVerificationTokenOnLoginExpiresAt = expiresAt;
674
717
  await this.userRepository.save(user);
675
718
  this.notifyUserOnOtpInititateLogin(user, RegistrationValidationSource.MOBILE);
719
+ return {
720
+ message: SUCCESS_MESSAGES.OTP_SENT_SUCCESS_LOGIN,
721
+ user: {
722
+ mobile: this.maskMobile(user.mobile)
723
+ }
724
+ };
676
725
  }
677
726
  else {
678
727
  throw new BadRequestException(ERROR_MESSAGES.INVALID_VERIFICATION_TYPE);
679
728
  }
680
- return { message: SUCCESS_MESSAGES.OTP_SENT_SUCCESS_LOGIN };
681
729
  }
682
730
 
683
731
  private async notifyUserOnOtpInititateLogin(user: User, loginType: RegistrationValidationSource) {
684
732
  const companyLogo = await this.getCompanyLogo();
733
+ const dummyOtp = this.settingService.getConfigValue<SolidCoreSetting>('dummyOtp');
685
734
 
686
- if (this.iamConfiguration.dummyOtp)
735
+ if (dummyOtp)
687
736
  return; // Do nothing if dummy otp is configured.
688
737
  if (loginType === RegistrationValidationSource.EMAIL) {
689
738
  const mailService = this.mailServiceFactory.getMailService();
@@ -691,14 +740,14 @@ export class AuthenticationService {
691
740
  user.email,
692
741
  'otp-on-login',
693
742
  {
694
- solidAppName: process.env.SOLID_APP_NAME,
695
- solidAppWebsiteUrl: process.env.SOLID_APP_WEBSITE_URL,
743
+ solidAppName: this.settingService.getConfigValue<SolidCoreSetting>('appTitle'),
744
+ solidAppWebsiteUrl: this.settingService.getConfigValue<SolidCoreSetting>('solidAppWebsiteUrl'),
696
745
  firstName: user.username,
697
746
  emailVerificationTokenOnLogin: user.emailVerificationTokenOnLogin,
698
747
  fullName: user.fullName ? user.fullName : user.username,
699
748
  companyLogoUrl: companyLogo
700
749
  },
701
- this.commonConfiguration.shouldQueueEmails,
750
+ this.settingService.getConfigValue<SolidCoreSetting>('shouldQueueEmails'),
702
751
  null,
703
752
  null,
704
753
  'user',
@@ -711,20 +760,22 @@ export class AuthenticationService {
711
760
  user.mobile,
712
761
  'otp-on-login',
713
762
  {
714
- solidAppName: process.env.SOLID_APP_NAME,
763
+ solidAppName: this.settingService.getConfigValue<SolidCoreSetting>('appTitle'),
715
764
  otp: user.mobileVerificationTokenOnLogin,
716
765
  mobileVerificationTokenOnLogin: user.mobileVerificationTokenOnLogin,
717
766
  firstName: user.username,
718
767
  fullName: user.fullName ? user.fullName : user.username,
719
768
  companyLogoUrl: companyLogo
720
769
  },
721
- this.commonConfiguration.shouldQueueSms,
770
+ this.settingService.getConfigValue<SolidCoreSetting>('shouldQueueSms'),
771
+
722
772
  );
723
773
  }
724
774
  }
725
775
 
726
776
  async otpConfirmLogin(confirmSignInDto: OTPConfirmOTPDto) {
727
- if (!this.isPasswordlessRegistrationEnabled()) {
777
+ const isPasswordlessRegistrationEnabled = await this.isPasswordlessRegistrationEnabled();
778
+ if (!isPasswordlessRegistrationEnabled) {
728
779
  throw new BadRequestException(ERROR_MESSAGES.PASSWORDLESS_REGISTRATION_DISABLED);
729
780
  }
730
781
  if (confirmSignInDto.type === RegistrationValidationSource.EMAIL) {
@@ -859,13 +910,15 @@ export class AuthenticationService {
859
910
  }
860
911
 
861
912
  // generate uuid token for forgot password
862
- private generateForgotPasswordToken() {
913
+ private async generateForgotPasswordToken() {
863
914
  const expiryTime = new Date();
864
- expiryTime.setMinutes(expiryTime.getMinutes() + this.iamConfiguration.forgotPasswordVerificationTokenExpiry);
915
+ const forgotPasswordVerificationTokenExpiry = this.settingService.getConfigValue<SolidCoreSetting>('forgotPasswordVerificationTokenExpiry');
916
+ const dummyOtp = this.settingService.getConfigValue<SolidCoreSetting>('dummyOtp');
917
+ expiryTime.setMinutes(expiryTime.getMinutes() + forgotPasswordVerificationTokenExpiry);
865
918
 
866
919
  return {
867
- token: this.iamConfiguration.dummyOtp
868
- ? this.iamConfiguration.dummyOtp
920
+ token: dummyOtp
921
+ ? dummyOtp
869
922
  : uuidv4(), // UUID instead of numeric OTP
870
923
  expiresAt: expiryTime,
871
924
  };
@@ -898,11 +951,11 @@ export class AuthenticationService {
898
951
  // 3. Generate a 6 digit validation token, we send this token to the user over their email & mobile number (controlled using configuration).
899
952
  // 4. Save this validation token in new fields on the user record.
900
953
  if (isValidUser) {
901
- const { token, expiresAt } = this.generateForgotPasswordToken();
954
+ const { token, expiresAt } = await this.generateForgotPasswordToken();
902
955
  user.verificationTokenOnForgotPassword = token;
903
956
  user.verificationTokenOnForgotPasswordExpiresAt = expiresAt;
904
957
  await this.userRepository.save(user);
905
- this.notifyUserOnForgotPassword(user);
958
+ await this.notifyUserOnForgotPassword(user);
906
959
  }
907
960
 
908
961
  // 5. Return.
@@ -924,7 +977,7 @@ export class AuthenticationService {
924
977
  private async notifyUserOnForgotPassword(user: User) {
925
978
  const companyLogo = await this.getCompanyLogo();
926
979
 
927
- const forgotPasswordSendVerificationTokenOn = this.iamConfiguration.forgotPasswordSendVerificationTokenOn;
980
+ const forgotPasswordSendVerificationTokenOn = this.settingService.getConfigValue<SolidCoreSetting>('forgotPasswordSendVerificationTokenOn');
928
981
 
929
982
  if (forgotPasswordSendVerificationTokenOn == ForgotPasswordSendVerificationTokenOn.EMAIL) {
930
983
  const mailService = this.mailServiceFactory.getMailService();
@@ -932,15 +985,15 @@ export class AuthenticationService {
932
985
  user.email,
933
986
  'forgot-password',
934
987
  {
935
- solidAppName: process.env.SOLID_APP_NAME,
936
- solidAppWebsiteUrl: process.env.SOLID_APP_WEBSITE_URL,
988
+ solidAppName: this.settingService.getConfigValue<SolidCoreSetting>('appTitle'),
989
+ solidAppWebsiteUrl: this.settingService.getConfigValue<SolidCoreSetting>('solidAppWebsiteUrl'),
937
990
  firstName: user.username,
938
991
  fullName: user.fullName,
939
992
  // TODO: Need to prefix this with the page url where the forgot password page will open up.
940
- passwordResetLink: `${process.env.IAM_FRONTEND_APP_FORGOT_PASSWORD_PAGE_URL}?token=${user.verificationTokenOnForgotPassword}`,
993
+ passwordResetLink: `${this.settingService.getConfigValue<SolidCoreSetting>('frontendForgotPasswordPageUrl')}?token=${user.verificationTokenOnForgotPassword}`,
941
994
  companyLogoUrl: companyLogo
942
995
  },
943
- this.commonConfiguration.shouldQueueEmails,
996
+ this.settingService.getConfigValue<SolidCoreSetting>('shouldQueueEmails'),
944
997
  null,
945
998
  null,
946
999
  'user',
@@ -954,13 +1007,13 @@ export class AuthenticationService {
954
1007
  user.mobile,
955
1008
  'forgot-password',
956
1009
  {
957
- solidAppName: process.env.SOLID_APP_NAME,
1010
+ solidAppName: this.settingService.getConfigValue<SolidCoreSetting>('appTitle'),
958
1011
  otp: user.verificationTokenOnForgotPassword,
959
1012
  verificationTokenOnForgotPassword: user.verificationTokenOnForgotPassword,
960
1013
  firstName: user.username,
961
1014
  companyLogoUrl: companyLogo
962
1015
  },
963
- this.commonConfiguration.shouldQueueSms,
1016
+ this.settingService.getConfigValue<SolidCoreSetting>('shouldQueueSms'),
964
1017
  );
965
1018
  }
966
1019
  }
@@ -999,7 +1052,7 @@ export class AuthenticationService {
999
1052
 
1000
1053
  // Check reuse with your existing method (ensure it looks at hashes).
1001
1054
  await m.getRepository(User).update({ id: user.id }, { password: pwdHash, passwordScheme: pwdScheme, passwordSchemeVersion: pwdSchemeVersion });
1002
- this.notifyUserOnPasswordChanged(user);
1055
+ await this.notifyUserOnPasswordChanged(user);
1003
1056
 
1004
1057
  return {
1005
1058
  status: 'success',
@@ -1013,8 +1066,7 @@ export class AuthenticationService {
1013
1066
 
1014
1067
  private async notifyUserOnPasswordChanged(user: User) {
1015
1068
  const companyLogo = await this.getCompanyLogo();
1016
-
1017
- const forgotPasswordSendVerificationTokenOn = this.iamConfiguration.forgotPasswordSendVerificationTokenOn;
1069
+ const forgotPasswordSendVerificationTokenOn = this.settingService.getConfigValue<SolidCoreSetting>('forgotPasswordSendVerificationTokenOn');
1018
1070
 
1019
1071
  if (forgotPasswordSendVerificationTokenOn == ForgotPasswordSendVerificationTokenOn.EMAIL) {
1020
1072
  const mailService = this.mailServiceFactory.getMailService();
@@ -1022,16 +1074,16 @@ export class AuthenticationService {
1022
1074
  user.email,
1023
1075
  'password-changed',
1024
1076
  {
1025
- solidAppName: process.env.SOLID_APP_NAME,
1026
- solidAppWebsiteUrl: process.env.SOLID_APP_WEBSITE_URL,
1077
+ solidAppName: this.settingService.getConfigValue<SolidCoreSetting>('appTitle'),
1078
+ solidAppWebsiteUrl: this.settingService.getConfigValue<SolidCoreSetting>('solidAppWebsiteUrl'),
1027
1079
  email: user.email,
1028
1080
  firstName: user.username,
1029
1081
  fullName: user.fullName,
1030
1082
  // TODO: Need to prefix this with the page url where the forgot password page will open up.
1031
- passwordResetLink: `${process.env.IAM_FRONTEND_APP_FORGOT_PASSWORD_PAGE_URL}?token=${user.verificationTokenOnForgotPassword}`,
1083
+ passwordResetLink: `${this.settingService.getConfigValue<SolidCoreSetting>('frontendForgotPasswordPageUrl')}?token=${user.verificationTokenOnForgotPassword}`,
1032
1084
  companyLogoUrl: companyLogo
1033
1085
  },
1034
- this.commonConfiguration.shouldQueueEmails,
1086
+ this.settingService.getConfigValue<SolidCoreSetting>('shouldQueueEmails'),
1035
1087
  null,
1036
1088
  null,
1037
1089
  'user',
@@ -1045,13 +1097,13 @@ export class AuthenticationService {
1045
1097
  user.mobile,
1046
1098
  'forgot-password',
1047
1099
  {
1048
- solidAppName: process.env.SOLID_APP_NAME,
1100
+ solidAppName: this.settingService.getConfigValue<SolidCoreSetting>('appTitle'),
1049
1101
  otp: user.verificationTokenOnForgotPassword,
1050
1102
  verificationTokenOnForgotPassword: user.verificationTokenOnForgotPassword,
1051
1103
  firstName: user.username,
1052
1104
  companyLogoUrl: companyLogo
1053
1105
  },
1054
- this.commonConfiguration.shouldQueueSms,
1106
+ this.settingService.getConfigValue<SolidCoreSetting>('shouldQueueSms'),
1055
1107
  );
1056
1108
  }
1057
1109
  }
@@ -1059,8 +1111,8 @@ export class AuthenticationService {
1059
1111
  async generateTokens(user: User) {
1060
1112
 
1061
1113
  const [accessToken, refreshToken] = await Promise.all([
1062
- this.generateAccessToken(user),
1063
- this.generateRefreshToken(user),
1114
+ await this.generateAccessToken(user),
1115
+ await this.generateRefreshToken(user),
1064
1116
  ]);
1065
1117
 
1066
1118
  return {
@@ -1074,9 +1126,10 @@ export class AuthenticationService {
1074
1126
  // const userRoleNames = user.roles.map((role) => role.name).join(';')
1075
1127
  const userRoleNames = user.roles.map((role) => role.name);
1076
1128
 
1129
+ const accessTokenTtl = this.settingService.getConfigValue<SolidCoreSetting>("accessTokenTtl");
1077
1130
  const accessToken = await this.signToken<Partial<ActiveUserData>>(
1078
1131
  user.id,
1079
- this.jwtConfiguration.accessTokenTtl,
1132
+ accessTokenTtl,
1080
1133
  { username: user.username, email: user.email, roles: userRoleNames },
1081
1134
  );
1082
1135
 
@@ -1085,8 +1138,8 @@ export class AuthenticationService {
1085
1138
 
1086
1139
  async generateRefreshToken(user: User, previousRefreshToken?: string) {
1087
1140
  const refreshTokenId = randomUUID();
1088
-
1089
- const refreshToken = await this.signToken(user.id, this.jwtConfiguration.refreshTokenTtl, {
1141
+ const refreshTokenTtl = this.settingService.getConfigValue<SolidCoreSetting>("refreshTokenTtl");
1142
+ const refreshToken = await this.signToken(user.id, refreshTokenTtl, {
1090
1143
  refreshTokenId,
1091
1144
  })
1092
1145
 
@@ -1098,10 +1151,14 @@ export class AuthenticationService {
1098
1151
 
1099
1152
  async refreshTokens(refreshTokenDto: RefreshTokenDto) {
1100
1153
  try {
1154
+ const secret = this.settingService.getConfigValue<SolidCoreSetting>("secret");
1155
+ const audience = this.settingService.getConfigValue<SolidCoreSetting>("audience");
1156
+ const issuer = this.settingService.getConfigValue<SolidCoreSetting>("issuer");
1157
+
1101
1158
  const { sub } = await this.jwtService.verifyAsync<Pick<ActiveUserData, 'sub'> & { refreshTokenId: string }>(refreshTokenDto.refreshToken, {
1102
- secret: this.jwtConfiguration.secret,
1103
- audience: this.jwtConfiguration.audience,
1104
- issuer: this.jwtConfiguration.issuer,
1159
+ secret,
1160
+ audience,
1161
+ issuer,
1105
1162
  });
1106
1163
  // const user = await this.userRepository.findOneByOrFail({ id: sub });
1107
1164
  const user = await this.userRepository.findOne({
@@ -1144,15 +1201,20 @@ export class AuthenticationService {
1144
1201
  }
1145
1202
 
1146
1203
  private async signToken<T>(userId: number, expiresIn: number, payload?: T) {
1204
+ const audience = this.settingService.getConfigValue<SolidCoreSetting>("audience");
1205
+ const issuer = this.settingService.getConfigValue<SolidCoreSetting>("issuer");
1206
+ const secret = this.settingService.getConfigValue<SolidCoreSetting>("secret");
1207
+
1208
+
1147
1209
  return await this.jwtService.signAsync(
1148
1210
  {
1149
1211
  sub: userId,
1150
1212
  ...payload,
1151
1213
  },
1152
1214
  {
1153
- audience: this.jwtConfiguration.audience,
1154
- issuer: this.jwtConfiguration.issuer,
1155
- secret: this.jwtConfiguration.secret,
1215
+ audience,
1216
+ issuer,
1217
+ secret,
1156
1218
  expiresIn,
1157
1219
  },
1158
1220
  );
@@ -1204,11 +1266,11 @@ export class AuthenticationService {
1204
1266
  },
1205
1267
  ...tokens
1206
1268
  }
1207
-
1208
1269
  }
1209
1270
 
1210
1271
  private async isPasswordlessRegistrationEnabled() {
1211
- return this.settingService.getConfigValue('passwordlessRegistration');
1272
+ // return this.settingService.getConfigValue<SolidCoreSetting>('passwordlessRegistration');
1273
+ return this.settingService.getConfigValue<SolidCoreSetting>('passwordLessAuth');
1212
1274
  }
1213
1275
 
1214
1276
  //FIXME - Pending implementation