@solidstarters/solid-core 1.2.204 → 1.2.207
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.
- package/dist/commands/info.command.d.ts +19 -0
- package/dist/commands/info.command.d.ts.map +1 -0
- package/dist/commands/info.command.js +98 -0
- package/dist/commands/info.command.js.map +1 -0
- package/dist/commands/mcp.command.d.ts.map +1 -1
- package/dist/commands/mcp.command.js +2 -10
- package/dist/commands/mcp.command.js.map +1 -1
- package/dist/commands/seed.command.d.ts.map +1 -1
- package/dist/commands/seed.command.js +3 -12
- package/dist/commands/seed.command.js.map +1 -1
- package/dist/controllers/email-template.controller.d.ts +3 -1
- package/dist/controllers/email-template.controller.d.ts.map +1 -1
- package/dist/controllers/email-template.controller.js +7 -4
- package/dist/controllers/email-template.controller.js.map +1 -1
- package/dist/controllers/google-authentication.controller.d.ts +4 -5
- package/dist/controllers/google-authentication.controller.d.ts.map +1 -1
- package/dist/controllers/google-authentication.controller.js +21 -14
- package/dist/controllers/google-authentication.controller.js.map +1 -1
- package/dist/controllers/otp-authentication.controller.d.ts +10 -0
- package/dist/controllers/otp-authentication.controller.d.ts.map +1 -1
- package/dist/controllers/otp-authentication.controller.js +1 -1
- package/dist/controllers/setting.controller.d.ts +2 -34
- package/dist/controllers/setting.controller.d.ts.map +1 -1
- package/dist/controllers/setting.controller.js +4 -130
- package/dist/controllers/setting.controller.js.map +1 -1
- package/dist/controllers/test.controller.d.ts.map +1 -1
- package/dist/controllers/test.controller.js.map +1 -1
- package/dist/decorators/settings-provider.decorator.d.ts +3 -0
- package/dist/decorators/settings-provider.decorator.d.ts.map +1 -0
- package/dist/decorators/settings-provider.decorator.js +8 -0
- package/dist/decorators/settings-provider.decorator.js.map +1 -0
- package/dist/decorators/solid-password.decorator.d.ts.map +1 -1
- package/dist/decorators/solid-password.decorator.js +3 -3
- package/dist/decorators/solid-password.decorator.js.map +1 -1
- package/dist/dtos/create-role-metadata.dto.d.ts +3 -4
- package/dist/dtos/create-role-metadata.dto.d.ts.map +1 -1
- package/dist/dtos/create-role-metadata.dto.js +4 -51
- package/dist/dtos/create-role-metadata.dto.js.map +1 -1
- package/dist/dtos/create-scheduled-job.dto.d.ts +1 -0
- package/dist/dtos/create-scheduled-job.dto.d.ts.map +1 -1
- package/dist/dtos/create-scheduled-job.dto.js +7 -1
- package/dist/dtos/create-scheduled-job.dto.js.map +1 -1
- package/dist/dtos/create-setting.dto.d.ts +3 -0
- package/dist/dtos/create-setting.dto.d.ts.map +1 -1
- package/dist/dtos/create-setting.dto.js +20 -2
- package/dist/dtos/create-setting.dto.js.map +1 -1
- package/dist/dtos/update-scheduled-job.dto.d.ts +1 -0
- package/dist/dtos/update-scheduled-job.dto.d.ts.map +1 -1
- package/dist/dtos/update-scheduled-job.dto.js +7 -1
- package/dist/dtos/update-scheduled-job.dto.js.map +1 -1
- package/dist/dtos/update-setting.dto.d.ts +3 -0
- package/dist/dtos/update-setting.dto.d.ts.map +1 -1
- package/dist/dtos/update-setting.dto.js +19 -1
- package/dist/dtos/update-setting.dto.js.map +1 -1
- package/dist/entities/scheduled-job.entity.d.ts +1 -0
- package/dist/entities/scheduled-job.entity.d.ts.map +1 -1
- package/dist/entities/scheduled-job.entity.js +5 -1
- package/dist/entities/scheduled-job.entity.js.map +1 -1
- package/dist/entities/setting.entity.d.ts +3 -0
- package/dist/entities/setting.entity.d.ts.map +1 -1
- package/dist/entities/setting.entity.js +13 -1
- package/dist/entities/setting.entity.js.map +1 -1
- package/dist/factories/mail.factory.d.ts +3 -4
- package/dist/factories/mail.factory.d.ts.map +1 -1
- package/dist/factories/mail.factory.js +6 -12
- package/dist/factories/mail.factory.js.map +1 -1
- package/dist/factories/sms.factory.d.ts +3 -4
- package/dist/factories/sms.factory.d.ts.map +1 -1
- package/dist/factories/sms.factory.js +6 -12
- package/dist/factories/sms.factory.js.map +1 -1
- package/dist/factories/whatsapp.factory.d.ts +3 -4
- package/dist/factories/whatsapp.factory.d.ts.map +1 -1
- package/dist/factories/whatsapp.factory.js +6 -12
- package/dist/factories/whatsapp.factory.js.map +1 -1
- package/dist/guards/access-token.guard.d.ts +3 -4
- package/dist/guards/access-token.guard.d.ts.map +1 -1
- package/dist/guards/access-token.guard.js +14 -9
- package/dist/guards/access-token.guard.js.map +1 -1
- package/dist/helpers/command.service.d.ts +5 -1
- package/dist/helpers/command.service.d.ts.map +1 -1
- package/dist/helpers/command.service.js +26 -11
- package/dist/helpers/command.service.js.map +1 -1
- package/dist/helpers/cors.helper.d.ts +1 -2
- package/dist/helpers/cors.helper.d.ts.map +1 -1
- package/dist/helpers/cors.helper.js +2 -2
- package/dist/helpers/cors.helper.js.map +1 -1
- package/dist/helpers/error-mapper.service.d.ts.map +1 -1
- package/dist/helpers/error-mapper.service.js.map +1 -1
- package/dist/helpers/field-crud-managers/ManyToOneRelationFieldCrudManager.js +2 -2
- package/dist/helpers/field-crud-managers/ManyToOneRelationFieldCrudManager.js.map +1 -1
- package/dist/helpers/google-oauth.helper.d.ts +7 -3
- package/dist/helpers/google-oauth.helper.d.ts.map +1 -1
- package/dist/helpers/google-oauth.helper.js +1 -2
- package/dist/helpers/google-oauth.helper.js.map +1 -1
- package/dist/helpers/module.helper.js +0 -2
- package/dist/helpers/module.helper.js.map +1 -1
- package/dist/helpers/schematic.service.d.ts +3 -2
- package/dist/helpers/schematic.service.d.ts.map +1 -1
- package/dist/helpers/schematic.service.js +32 -27
- package/dist/helpers/schematic.service.js.map +1 -1
- package/dist/helpers/solid-registry.d.ts +8 -3
- package/dist/helpers/solid-registry.d.ts.map +1 -1
- package/dist/helpers/solid-registry.js +32 -9
- package/dist/helpers/solid-registry.js.map +1 -1
- package/dist/index.d.ts +2 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -6
- package/dist/index.js.map +1 -1
- package/dist/interfaces.d.ts +21 -0
- package/dist/interfaces.d.ts.map +1 -1
- package/dist/interfaces.js +8 -1
- package/dist/interfaces.js.map +1 -1
- package/dist/passport-strategies/google-oauth.strategy.d.ts +1 -4
- package/dist/passport-strategies/google-oauth.strategy.d.ts.map +1 -1
- package/dist/passport-strategies/google-oauth.strategy.js +12 -12
- package/dist/passport-strategies/google-oauth.strategy.js.map +1 -1
- package/dist/repository/scheduled-job.repository.d.ts.map +1 -1
- package/dist/repository/scheduled-job.repository.js +1 -0
- package/dist/repository/scheduled-job.repository.js.map +1 -1
- package/dist/seeders/email-template-seeder.service.d.ts +3 -4
- package/dist/seeders/email-template-seeder.service.d.ts.map +1 -1
- package/dist/seeders/email-template-seeder.service.js +7 -12
- package/dist/seeders/email-template-seeder.service.js.map +1 -1
- package/dist/seeders/module-metadata-seeder.service.d.ts +1 -5
- package/dist/seeders/module-metadata-seeder.service.d.ts.map +1 -1
- package/dist/seeders/module-metadata-seeder.service.js +24 -24
- package/dist/seeders/module-metadata-seeder.service.js.map +1 -1
- package/dist/seeders/seed-data/solid-core-metadata.json +119 -5
- package/dist/seeders/sms-template-seeder.service.d.ts +3 -4
- package/dist/seeders/sms-template-seeder.service.d.ts.map +1 -1
- package/dist/seeders/sms-template-seeder.service.js +7 -12
- package/dist/seeders/sms-template-seeder.service.js.map +1 -1
- package/dist/seeders/system-fields-seeder.service.d.ts.map +1 -1
- package/dist/seeders/system-fields-seeder.service.js +3 -0
- package/dist/seeders/system-fields-seeder.service.js.map +1 -1
- package/dist/services/action-metadata.service.d.ts +2 -13
- package/dist/services/action-metadata.service.d.ts.map +1 -1
- package/dist/services/action-metadata.service.js +4 -22
- package/dist/services/action-metadata.service.js.map +1 -1
- package/dist/services/ai-interaction.service.d.ts +2 -13
- package/dist/services/ai-interaction.service.d.ts.map +1 -1
- package/dist/services/ai-interaction.service.js +6 -24
- package/dist/services/ai-interaction.service.js.map +1 -1
- package/dist/services/authentication.service.d.ts +14 -10
- package/dist/services/authentication.service.d.ts.map +1 -1
- package/dist/services/authentication.service.js +158 -116
- package/dist/services/authentication.service.js.map +1 -1
- package/dist/services/bcrypt.service.d.ts +3 -5
- package/dist/services/bcrypt.service.d.ts.map +1 -1
- package/dist/services/bcrypt.service.js +10 -14
- package/dist/services/bcrypt.service.js.map +1 -1
- package/dist/services/chatter-message-details.service.d.ts +2 -13
- package/dist/services/chatter-message-details.service.d.ts.map +1 -1
- package/dist/services/chatter-message-details.service.js +4 -22
- package/dist/services/chatter-message-details.service.js.map +1 -1
- package/dist/services/chatter-message.service.d.ts +2 -13
- package/dist/services/chatter-message.service.d.ts.map +1 -1
- package/dist/services/chatter-message.service.js +5 -23
- package/dist/services/chatter-message.service.js.map +1 -1
- package/dist/services/crud.service.d.ts +12 -12
- package/dist/services/crud.service.d.ts.map +1 -1
- package/dist/services/crud.service.js +25 -17
- package/dist/services/crud.service.js.map +1 -1
- package/dist/services/dashboard-question-sql-dataset-config.service.d.ts +2 -13
- package/dist/services/dashboard-question-sql-dataset-config.service.d.ts.map +1 -1
- package/dist/services/dashboard-question-sql-dataset-config.service.js +4 -21
- package/dist/services/dashboard-question-sql-dataset-config.service.js.map +1 -1
- package/dist/services/dashboard-question.service.d.ts +2 -13
- package/dist/services/dashboard-question.service.d.ts.map +1 -1
- package/dist/services/dashboard-question.service.js +4 -21
- package/dist/services/dashboard-question.service.js.map +1 -1
- package/dist/services/dashboard-variable.service.d.ts +2 -13
- package/dist/services/dashboard-variable.service.d.ts.map +1 -1
- package/dist/services/dashboard-variable.service.js +4 -21
- package/dist/services/dashboard-variable.service.js.map +1 -1
- package/dist/services/dashboard.service.d.ts +2 -13
- package/dist/services/dashboard.service.d.ts.map +1 -1
- package/dist/services/dashboard.service.js +4 -21
- package/dist/services/dashboard.service.js.map +1 -1
- package/dist/services/email-template.service.d.ts +2 -13
- package/dist/services/email-template.service.d.ts.map +1 -1
- package/dist/services/email-template.service.js +4 -22
- package/dist/services/email-template.service.js.map +1 -1
- package/dist/services/export-template.service.d.ts +2 -13
- package/dist/services/export-template.service.d.ts.map +1 -1
- package/dist/services/export-template.service.js +4 -21
- package/dist/services/export-template.service.js.map +1 -1
- package/dist/services/export-transaction.service.d.ts +2 -13
- package/dist/services/export-transaction.service.d.ts.map +1 -1
- package/dist/services/export-transaction.service.js +4 -21
- package/dist/services/export-transaction.service.js.map +1 -1
- package/dist/services/field-metadata.service.d.ts +11 -0
- package/dist/services/field-metadata.service.d.ts.map +1 -1
- package/dist/services/field-metadata.service.js +3 -0
- package/dist/services/field-metadata.service.js.map +1 -1
- package/dist/services/file.service.d.ts +1 -4
- package/dist/services/file.service.d.ts.map +1 -1
- package/dist/services/file.service.js +12 -13
- package/dist/services/file.service.js.map +1 -1
- package/dist/services/genai/r2r-helper.service.d.ts +3 -1
- package/dist/services/genai/r2r-helper.service.d.ts.map +1 -1
- package/dist/services/genai/r2r-helper.service.js +11 -7
- package/dist/services/genai/r2r-helper.service.js.map +1 -1
- package/dist/services/import-transaction-error-log.service.d.ts +2 -13
- package/dist/services/import-transaction-error-log.service.d.ts.map +1 -1
- package/dist/services/import-transaction-error-log.service.js +4 -22
- package/dist/services/import-transaction-error-log.service.js.map +1 -1
- package/dist/services/import-transaction.service.d.ts +2 -13
- package/dist/services/import-transaction.service.d.ts.map +1 -1
- package/dist/services/import-transaction.service.js +4 -22
- package/dist/services/import-transaction.service.js.map +1 -1
- package/dist/services/list-of-values.service.d.ts +2 -13
- package/dist/services/list-of-values.service.d.ts.map +1 -1
- package/dist/services/list-of-values.service.js +4 -22
- package/dist/services/list-of-values.service.js.map +1 -1
- package/dist/services/locale.service.d.ts +2 -13
- package/dist/services/locale.service.d.ts.map +1 -1
- package/dist/services/locale.service.js +4 -22
- package/dist/services/locale.service.js.map +1 -1
- package/dist/services/mail/elastic-email.service.d.ts +4 -5
- package/dist/services/mail/elastic-email.service.d.ts.map +1 -1
- package/dist/services/mail/elastic-email.service.js +10 -13
- package/dist/services/mail/elastic-email.service.js.map +1 -1
- package/dist/services/mail/smtp-email.service.d.ts +3 -4
- package/dist/services/mail/smtp-email.service.d.ts.map +1 -1
- package/dist/services/mail/smtp-email.service.js +19 -17
- package/dist/services/mail/smtp-email.service.js.map +1 -1
- package/dist/services/media-storage-provider-metadata.service.d.ts +11 -0
- package/dist/services/media-storage-provider-metadata.service.d.ts.map +1 -1
- package/dist/services/media-storage-provider-metadata.service.js +3 -0
- package/dist/services/media-storage-provider-metadata.service.js.map +1 -1
- package/dist/services/media.service.d.ts +2 -9
- package/dist/services/media.service.d.ts.map +1 -1
- package/dist/services/media.service.js +17 -28
- package/dist/services/media.service.js.map +1 -1
- package/dist/services/mediaStorageProviders/file-s3-storage-provider.d.ts +2 -4
- package/dist/services/mediaStorageProviders/file-s3-storage-provider.d.ts.map +1 -1
- package/dist/services/mediaStorageProviders/file-s3-storage-provider.js +2 -11
- package/dist/services/mediaStorageProviders/file-s3-storage-provider.js.map +1 -1
- package/dist/services/mediaStorageProviders/file-storage-provider.d.ts +3 -1
- package/dist/services/mediaStorageProviders/file-storage-provider.d.ts.map +1 -1
- package/dist/services/mediaStorageProviders/file-storage-provider.js +16 -12
- package/dist/services/mediaStorageProviders/file-storage-provider.js.map +1 -1
- package/dist/services/mediaStorageProviders/index.d.ts +1 -1
- package/dist/services/mediaStorageProviders/index.d.ts.map +1 -1
- package/dist/services/mediaStorageProviders/index.js +1 -1
- package/dist/services/mediaStorageProviders/index.js.map +1 -1
- package/dist/services/menu-item-metadata.service.d.ts +2 -13
- package/dist/services/menu-item-metadata.service.d.ts.map +1 -1
- package/dist/services/menu-item-metadata.service.js +4 -22
- package/dist/services/menu-item-metadata.service.js.map +1 -1
- package/dist/services/model-metadata.service.d.ts +11 -0
- package/dist/services/model-metadata.service.d.ts.map +1 -1
- package/dist/services/model-metadata.service.js +3 -0
- package/dist/services/model-metadata.service.js.map +1 -1
- package/dist/services/model-sequence.service.d.ts +2 -13
- package/dist/services/model-sequence.service.d.ts.map +1 -1
- package/dist/services/model-sequence.service.js +4 -21
- package/dist/services/model-sequence.service.js.map +1 -1
- package/dist/services/module-metadata.service.d.ts +14 -1
- package/dist/services/module-metadata.service.d.ts.map +1 -1
- package/dist/services/module-metadata.service.js +13 -6
- package/dist/services/module-metadata.service.js.map +1 -1
- package/dist/services/mq-message-queue.service.d.ts +2 -13
- package/dist/services/mq-message-queue.service.d.ts.map +1 -1
- package/dist/services/mq-message-queue.service.js +4 -22
- package/dist/services/mq-message-queue.service.js.map +1 -1
- package/dist/services/mq-message.service.d.ts +2 -13
- package/dist/services/mq-message.service.d.ts.map +1 -1
- package/dist/services/mq-message.service.js +4 -22
- package/dist/services/mq-message.service.js.map +1 -1
- package/dist/services/permission-metadata.service.d.ts +2 -13
- package/dist/services/permission-metadata.service.d.ts.map +1 -1
- package/dist/services/permission-metadata.service.js +4 -22
- package/dist/services/permission-metadata.service.js.map +1 -1
- package/dist/services/role-metadata.service.d.ts +2 -13
- package/dist/services/role-metadata.service.d.ts.map +1 -1
- package/dist/services/role-metadata.service.js +4 -23
- package/dist/services/role-metadata.service.js.map +1 -1
- package/dist/services/saved-filters.service.d.ts +2 -13
- package/dist/services/saved-filters.service.d.ts.map +1 -1
- package/dist/services/saved-filters.service.js +4 -21
- package/dist/services/saved-filters.service.js.map +1 -1
- package/dist/services/scheduled-job.service.d.ts +2 -13
- package/dist/services/scheduled-job.service.d.ts.map +1 -1
- package/dist/services/scheduled-job.service.js +4 -22
- package/dist/services/scheduled-job.service.js.map +1 -1
- package/dist/services/scheduled-jobs/scheduler.service.d.ts +1 -0
- package/dist/services/scheduled-jobs/scheduler.service.d.ts.map +1 -1
- package/dist/services/scheduled-jobs/scheduler.service.js +29 -0
- package/dist/services/scheduled-jobs/scheduler.service.js.map +1 -1
- package/dist/services/security-rule.service.d.ts +2 -13
- package/dist/services/security-rule.service.d.ts.map +1 -1
- package/dist/services/security-rule.service.js +5 -23
- package/dist/services/security-rule.service.js.map +1 -1
- package/dist/services/setting.service.d.ts +23 -30
- package/dist/services/setting.service.d.ts.map +1 -1
- package/dist/services/setting.service.js +147 -196
- package/dist/services/setting.service.js.map +1 -1
- package/dist/services/settings/default-settings-provider.service.d.ts +1058 -0
- package/dist/services/settings/default-settings-provider.service.d.ts.map +1 -0
- package/dist/services/settings/default-settings-provider.service.js +139 -0
- package/dist/services/settings/default-settings-provider.service.js.map +1 -0
- package/dist/services/short-url/tiny-url.service.d.ts +3 -4
- package/dist/services/short-url/tiny-url.service.d.ts.map +1 -1
- package/dist/services/short-url/tiny-url.service.js +10 -13
- package/dist/services/short-url/tiny-url.service.js.map +1 -1
- package/dist/services/sms/Msg91BaseSMSService.d.ts +3 -4
- package/dist/services/sms/Msg91BaseSMSService.d.ts.map +1 -1
- package/dist/services/sms/Msg91BaseSMSService.js +3 -3
- package/dist/services/sms/Msg91BaseSMSService.js.map +1 -1
- package/dist/services/sms/Msg91OTPService.d.ts +2 -3
- package/dist/services/sms/Msg91OTPService.d.ts.map +1 -1
- package/dist/services/sms/Msg91OTPService.js +7 -13
- package/dist/services/sms/Msg91OTPService.js.map +1 -1
- package/dist/services/sms/Msg91SMSService.d.ts +2 -3
- package/dist/services/sms/Msg91SMSService.d.ts.map +1 -1
- package/dist/services/sms/Msg91SMSService.js +7 -13
- package/dist/services/sms/Msg91SMSService.js.map +1 -1
- package/dist/services/sms/TwilioSMSService.d.ts +3 -4
- package/dist/services/sms/TwilioSMSService.d.ts.map +1 -1
- package/dist/services/sms/TwilioSMSService.js +13 -16
- package/dist/services/sms/TwilioSMSService.js.map +1 -1
- package/dist/services/sms-template.service.d.ts +2 -13
- package/dist/services/sms-template.service.d.ts.map +1 -1
- package/dist/services/sms-template.service.js +4 -22
- package/dist/services/sms-template.service.js.map +1 -1
- package/dist/services/solid-introspect.service.d.ts +4 -1
- package/dist/services/solid-introspect.service.d.ts.map +1 -1
- package/dist/services/solid-introspect.service.js +33 -47
- package/dist/services/solid-introspect.service.js.map +1 -1
- package/dist/services/textract.service.d.ts +1 -4
- package/dist/services/textract.service.d.ts.map +1 -1
- package/dist/services/textract.service.js +14 -18
- package/dist/services/textract.service.js.map +1 -1
- package/dist/services/user-activity-history.service.d.ts +2 -13
- package/dist/services/user-activity-history.service.d.ts.map +1 -1
- package/dist/services/user-activity-history.service.js +4 -22
- package/dist/services/user-activity-history.service.js.map +1 -1
- package/dist/services/user-view-metadata.service.d.ts +2 -13
- package/dist/services/user-view-metadata.service.d.ts.map +1 -1
- package/dist/services/user-view-metadata.service.js +4 -22
- package/dist/services/user-view-metadata.service.js.map +1 -1
- package/dist/services/user.service.d.ts +2 -15
- package/dist/services/user.service.d.ts.map +1 -1
- package/dist/services/user.service.js +7 -28
- package/dist/services/user.service.js.map +1 -1
- package/dist/services/view-metadata.service.d.ts +2 -13
- package/dist/services/view-metadata.service.d.ts.map +1 -1
- package/dist/services/view-metadata.service.js +5 -23
- package/dist/services/view-metadata.service.js.map +1 -1
- package/dist/services/whatsapp/Msg91WhatsappService.d.ts +3 -4
- package/dist/services/whatsapp/Msg91WhatsappService.d.ts.map +1 -1
- package/dist/services/whatsapp/Msg91WhatsappService.js +12 -18
- package/dist/services/whatsapp/Msg91WhatsappService.js.map +1 -1
- package/dist/services/whatsapp/Three60WhatsappService.d.ts +1 -4
- package/dist/services/whatsapp/Three60WhatsappService.d.ts.map +1 -1
- package/dist/services/whatsapp/Three60WhatsappService.js +2 -11
- package/dist/services/whatsapp/Three60WhatsappService.js.map +1 -1
- package/dist/solid-core.module.d.ts.map +1 -1
- package/dist/solid-core.module.js +9 -47
- package/dist/solid-core.module.js.map +1 -1
- package/dist/transformers/typeorm/local-date-time-transformer.d.ts.map +1 -1
- package/dist/transformers/typeorm/local-date-time-transformer.js +4 -2
- package/dist/transformers/typeorm/local-date-time-transformer.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/docs/type-declaration-import-issue.md +24 -0
- package/package.json +2 -1
- package/src/commands/info.command.ts +101 -0
- package/src/commands/mcp.command.ts +3 -17
- package/src/commands/seed.command.ts +5 -17
- package/src/controllers/email-template.controller.ts +9 -4
- package/src/controllers/google-authentication.controller.ts +19 -12
- package/src/controllers/setting.controller.ts +6 -81
- package/src/controllers/test.controller.ts +0 -18
- package/src/decorators/settings-provider.decorator.ts +7 -0
- package/src/decorators/solid-password.decorator.ts +43 -43
- package/src/dtos/create-role-metadata.dto.ts +4 -81
- package/src/dtos/create-scheduled-job.dto.ts +4 -0
- package/src/dtos/create-setting.dto.ts +14 -1
- package/src/dtos/update-scheduled-job.dto.ts +4 -0
- package/src/dtos/update-setting.dto.ts +14 -0
- package/src/entities/scheduled-job.entity.ts +2 -0
- package/src/entities/setting.entity.ts +15 -1
- package/src/factories/mail.factory.ts +4 -4
- package/src/factories/sms.factory.ts +9 -7
- package/src/factories/whatsapp.factory.ts +4 -4
- package/src/guards/access-token.guard.ts +12 -5
- package/src/helpers/command.service.ts +44 -12
- package/src/helpers/cors.helper.ts +3 -3
- package/src/helpers/error-mapper.service.ts +0 -1
- package/src/helpers/field-crud-managers/ManyToOneRelationFieldCrudManager.ts +2 -2
- package/src/helpers/google-oauth.helper.ts +11 -7
- package/src/helpers/module.helper.ts +2 -2
- package/src/helpers/schematic.service.ts +41 -35
- package/src/helpers/solid-registry.ts +45 -16
- package/src/index.ts +2 -4
- package/src/interfaces.ts +29 -0
- package/src/passport-strategies/google-oauth.strategy.ts +11 -8
- package/src/repository/scheduled-job.repository.ts +1 -0
- package/src/seeders/email-template-seeder.service.ts +6 -4
- package/src/seeders/module-metadata-seeder.service.ts +41 -29
- package/src/seeders/seed-data/solid-core-metadata.json +120 -6
- package/src/seeders/sms-template-seeder.service.ts +6 -4
- package/src/seeders/system-fields-seeder.service.ts +3 -0
- package/src/services/action-metadata.service.ts +4 -16
- package/src/services/ai-interaction.service.ts +6 -17
- package/src/services/authentication.service.ts +175 -113
- package/src/services/bcrypt.service.ts +9 -9
- package/src/services/chatter-message-details.service.ts +5 -17
- package/src/services/chatter-message.service.ts +2 -14
- package/src/services/crud.service.ts +36 -28
- package/src/services/dashboard-question-sql-dataset-config.service.ts +4 -15
- package/src/services/dashboard-question.service.ts +4 -17
- package/src/services/dashboard-variable.service.ts +4 -16
- package/src/services/dashboard.service.ts +2 -13
- package/src/services/email-template.service.ts +3 -15
- package/src/services/export-template.service.ts +4 -18
- package/src/services/export-transaction.service.ts +4 -19
- package/src/services/field-metadata.service.ts +5 -1
- package/src/services/file.service.ts +14 -12
- package/src/services/genai/r2r-helper.service.ts +10 -6
- package/src/services/import-transaction-error-log.service.ts +5 -17
- package/src/services/import-transaction.service.ts +3 -15
- package/src/services/list-of-values.service.ts +3 -16
- package/src/services/locale.service.ts +3 -15
- package/src/services/mail/elastic-email.service.ts +7 -7
- package/src/services/mail/smtp-email.service.ts +19 -11
- package/src/services/media-storage-provider-metadata.service.ts +4 -0
- package/src/services/media.service.ts +39 -22
- package/src/services/mediaStorageProviders/file-s3-storage-provider.ts +0 -3
- package/src/services/mediaStorageProviders/file-storage-provider.ts +24 -12
- package/src/services/mediaStorageProviders/index.ts +1 -1
- package/src/services/menu-item-metadata.service.ts +5 -17
- package/src/services/model-metadata.service.ts +4 -0
- package/src/services/model-sequence.service.ts +4 -15
- package/src/services/module-metadata.service.ts +13 -4
- package/src/services/mq-message-queue.service.ts +5 -17
- package/src/services/mq-message.service.ts +5 -17
- package/src/services/permission-metadata.service.ts +4 -16
- package/src/services/role-metadata.service.ts +3 -16
- package/src/services/saved-filters.service.ts +2 -13
- package/src/services/scheduled-job.service.ts +3 -15
- package/src/services/scheduled-jobs/scheduler.service.ts +40 -3
- package/src/services/security-rule.service.ts +4 -16
- package/src/services/setting.service.ts +223 -212
- package/src/services/settings/default-settings-provider.service.ts +157 -0
- package/src/services/short-url/tiny-url.service.ts +9 -7
- package/src/services/sms/Msg91BaseSMSService.ts +6 -4
- package/src/services/sms/Msg91OTPService.ts +7 -7
- package/src/services/sms/Msg91SMSService.ts +7 -6
- package/src/services/sms/TwilioSMSService.ts +18 -19
- package/src/services/sms-template.service.ts +3 -15
- package/src/services/solid-introspect.service.ts +45 -66
- package/src/services/textract.service.ts +13 -10
- package/src/services/user-activity-history.service.ts +5 -17
- package/src/services/user-view-metadata.service.ts +5 -17
- package/src/services/user.service.ts +7 -22
- package/src/services/view-metadata.service.ts +3 -15
- package/src/services/whatsapp/Msg91WhatsappService.ts +10 -11
- package/src/services/whatsapp/Three60WhatsappService.ts +0 -3
- package/src/solid-core.module.ts +17 -49
- package/src/transformers/typeorm/local-date-time-transformer.ts +10 -5
- package/# Password field.md +0 -8
- package/dist/config/app-builder.config.d.ts +0 -11
- package/dist/config/app-builder.config.d.ts.map +0 -1
- package/dist/config/app-builder.config.js +0 -13
- package/dist/config/app-builder.config.js.map +0 -1
- package/dist/config/common.config.d.ts +0 -96
- package/dist/config/common.config.d.ts.map +0 -1
- package/dist/config/common.config.js +0 -51
- package/dist/config/common.config.js.map +0 -1
- package/dist/config/iam.config.d.ts +0 -56
- package/dist/config/iam.config.d.ts.map +0 -1
- package/dist/config/iam.config.js +0 -35
- package/dist/config/iam.config.js.map +0 -1
- package/dist/config/jwt.config.d.ts +0 -14
- package/dist/config/jwt.config.d.ts.map +0 -1
- package/dist/config/jwt.config.js +0 -15
- package/dist/config/jwt.config.js.map +0 -1
- package/dist/services/genai/mcp-handlers/solid-add-button-to-form-view-mcp-handler.service.d.ts +0 -16
- package/dist/services/genai/mcp-handlers/solid-add-button-to-form-view-mcp-handler.service.d.ts.map +0 -1
- package/dist/services/genai/mcp-handlers/solid-add-button-to-form-view-mcp-handler.service.js +0 -151
- package/dist/services/genai/mcp-handlers/solid-add-button-to-form-view-mcp-handler.service.js.map +0 -1
- package/dist/services/genai/mcp-handlers/solid-add-controller-handler-method-mcp-handler.service.d.ts +0 -17
- package/dist/services/genai/mcp-handlers/solid-add-controller-handler-method-mcp-handler.service.d.ts.map +0 -1
- package/dist/services/genai/mcp-handlers/solid-add-controller-handler-method-mcp-handler.service.js +0 -80
- package/dist/services/genai/mcp-handlers/solid-add-controller-handler-method-mcp-handler.service.js.map +0 -1
- package/dist/services/genai/mcp-handlers/solid-add-custom-service-method-mcp-handler.service.d.ts +0 -16
- package/dist/services/genai/mcp-handlers/solid-add-custom-service-method-mcp-handler.service.d.ts.map +0 -1
- package/dist/services/genai/mcp-handlers/solid-add-custom-service-method-mcp-handler.service.js +0 -74
- package/dist/services/genai/mcp-handlers/solid-add-custom-service-method-mcp-handler.service.js.map +0 -1
- package/dist/services/genai/mcp-handlers/solid-add-fields-to-model-mcp-handler.service.d.ts +0 -12
- package/dist/services/genai/mcp-handlers/solid-add-fields-to-model-mcp-handler.service.d.ts.map +0 -1
- package/dist/services/genai/mcp-handlers/solid-add-fields-to-model-mcp-handler.service.js +0 -47
- package/dist/services/genai/mcp-handlers/solid-add-fields-to-model-mcp-handler.service.js.map +0 -1
- package/dist/services/genai/mcp-handlers/solid-add-header-button-or-row-button-to-list-view-mcp-handler.service.d.ts +0 -16
- package/dist/services/genai/mcp-handlers/solid-add-header-button-or-row-button-to-list-view-mcp-handler.service.d.ts.map +0 -1
- package/dist/services/genai/mcp-handlers/solid-add-header-button-or-row-button-to-list-view-mcp-handler.service.js +0 -151
- package/dist/services/genai/mcp-handlers/solid-add-header-button-or-row-button-to-list-view-mcp-handler.service.js.map +0 -1
- package/dist/services/genai/mcp-handlers/solid-create-computed-provider-mcp-handler.service.d.ts +0 -16
- package/dist/services/genai/mcp-handlers/solid-create-computed-provider-mcp-handler.service.d.ts.map +0 -1
- package/dist/services/genai/mcp-handlers/solid-create-computed-provider-mcp-handler.service.js +0 -75
- package/dist/services/genai/mcp-handlers/solid-create-computed-provider-mcp-handler.service.js.map +0 -1
- package/dist/services/genai/mcp-handlers/solid-create-custom-form-view-widget-mcp-handler.service.d.ts +0 -14
- package/dist/services/genai/mcp-handlers/solid-create-custom-form-view-widget-mcp-handler.service.d.ts.map +0 -1
- package/dist/services/genai/mcp-handlers/solid-create-custom-form-view-widget-mcp-handler.service.js +0 -73
- package/dist/services/genai/mcp-handlers/solid-create-custom-form-view-widget-mcp-handler.service.js.map +0 -1
- package/dist/services/genai/mcp-handlers/solid-create-model-with-fields-mcp-handler.service.d.ts +0 -14
- package/dist/services/genai/mcp-handlers/solid-create-model-with-fields-mcp-handler.service.d.ts.map +0 -1
- package/dist/services/genai/mcp-handlers/solid-create-model-with-fields-mcp-handler.service.js +0 -45
- package/dist/services/genai/mcp-handlers/solid-create-model-with-fields-mcp-handler.service.js.map +0 -1
- package/dist/services/genai/mcp-handlers/solid-create-module-mcp-handler.service.d.ts +0 -14
- package/dist/services/genai/mcp-handlers/solid-create-module-mcp-handler.service.d.ts.map +0 -1
- package/dist/services/genai/mcp-handlers/solid-create-module-mcp-handler.service.js +0 -51
- package/dist/services/genai/mcp-handlers/solid-create-module-mcp-handler.service.js.map +0 -1
- package/dist/services/genai/mcp-handlers/solid-update-layout-mcp-handler.service.d.ts +0 -12
- package/dist/services/genai/mcp-handlers/solid-update-layout-mcp-handler.service.d.ts.map +0 -1
- package/dist/services/genai/mcp-handlers/solid-update-layout-mcp-handler.service.js +0 -38
- package/dist/services/genai/mcp-handlers/solid-update-layout-mcp-handler.service.js.map +0 -1
- package/dist/services/media-storage-provider-metadata-seeder.service.d.ts +0 -8
- package/dist/services/media-storage-provider-metadata-seeder.service.d.ts.map +0 -1
- package/dist/services/media-storage-provider-metadata-seeder.service.js +0 -43
- package/dist/services/media-storage-provider-metadata-seeder.service.js.map +0 -1
- package/sql-server-changes.txt +0 -88
- package/src/config/app-builder.config.ts +0 -12
- package/src/config/common.config.ts +0 -55
- package/src/config/iam.config.ts +0 -32
- package/src/config/jwt.config.ts +0 -13
- package/src/services/export_issues.txt +0 -10
- package/src/services/genai/mcp-handlers/solid-add-button-to-form-view-mcp-handler.service.ts +0 -137
- package/src/services/genai/mcp-handlers/solid-add-controller-handler-method-mcp-handler.service.ts +0 -81
- package/src/services/genai/mcp-handlers/solid-add-custom-service-method-mcp-handler.service.ts +0 -69
- package/src/services/genai/mcp-handlers/solid-add-fields-to-model-mcp-handler.service.ts +0 -68
- package/src/services/genai/mcp-handlers/solid-add-header-button-or-row-button-to-list-view-mcp-handler.service.ts +0 -141
- package/src/services/genai/mcp-handlers/solid-create-computed-provider-mcp-handler.service.ts +0 -71
- package/src/services/genai/mcp-handlers/solid-create-custom-form-view-widget-mcp-handler.service.ts +0 -72
- package/src/services/genai/mcp-handlers/solid-create-model-with-fields-mcp-handler.service.ts +0 -45
- package/src/services/genai/mcp-handlers/solid-create-module-mcp-handler.service.ts +0 -58
- package/src/services/genai/mcp-handlers/solid-update-layout-mcp-handler.service.ts +0 -40
- package/src/services/groupBy.json +0 -92
- package/src/services/media-storage-provider-metadata-seeder.service.ts +0 -33
|
@@ -11,9 +11,6 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
11
11
|
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
12
|
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
13
|
};
|
|
14
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
15
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
16
|
-
};
|
|
17
14
|
var AuthenticationService_1;
|
|
18
15
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
16
|
exports.AuthenticationService = void 0;
|
|
@@ -24,15 +21,12 @@ const jwt_1 = require("@nestjs/jwt");
|
|
|
24
21
|
const typeorm_1 = require("@nestjs/typeorm");
|
|
25
22
|
const class_validator_1 = require("class-validator");
|
|
26
23
|
const crypto_1 = require("crypto");
|
|
27
|
-
const common_config_1 = __importDefault(require("../config/common.config"));
|
|
28
|
-
const jwt_config_1 = require("../config/jwt.config");
|
|
29
24
|
const error_messages_1 = require("../constants/error-messages");
|
|
30
25
|
const success_messages_1 = require("../constants/success-messages");
|
|
31
26
|
const mail_factory_1 = require("../factories/mail.factory");
|
|
32
27
|
const user_repository_1 = require("../repository/user.repository");
|
|
33
28
|
const typeorm_2 = require("typeorm");
|
|
34
29
|
const uuid_1 = require("uuid");
|
|
35
|
-
const iam_config_1 = require("../config/iam.config");
|
|
36
30
|
const constants_1 = require("../constants");
|
|
37
31
|
const user_entity_1 = require("../entities/user.entity");
|
|
38
32
|
const interfaces_1 = require("../interfaces");
|
|
@@ -50,13 +44,11 @@ var LoginProvider;
|
|
|
50
44
|
LoginProvider["OTP"] = "otp";
|
|
51
45
|
})(LoginProvider || (LoginProvider = {}));
|
|
52
46
|
let AuthenticationService = AuthenticationService_1 = class AuthenticationService {
|
|
53
|
-
constructor(userService, userRepository, hashingService, jwtService,
|
|
47
|
+
constructor(userService, userRepository, hashingService, jwtService, refreshTokenIdsStorage, httpService, mailServiceFactory, smsFactory, eventEmitter, settingService, roleMetadataService, userActivityHistoryService, dataSource) {
|
|
54
48
|
this.userService = userService;
|
|
55
49
|
this.userRepository = userRepository;
|
|
56
50
|
this.hashingService = hashingService;
|
|
57
51
|
this.jwtService = jwtService;
|
|
58
|
-
this.jwtConfiguration = jwtConfiguration;
|
|
59
|
-
this.iamConfiguration = iamConfiguration;
|
|
60
52
|
this.refreshTokenIdsStorage = refreshTokenIdsStorage;
|
|
61
53
|
this.httpService = httpService;
|
|
62
54
|
this.mailServiceFactory = mailServiceFactory;
|
|
@@ -64,16 +56,12 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
64
56
|
this.eventEmitter = eventEmitter;
|
|
65
57
|
this.settingService = settingService;
|
|
66
58
|
this.roleMetadataService = roleMetadataService;
|
|
67
|
-
this.commonConfiguration = commonConfiguration;
|
|
68
59
|
this.userActivityHistoryService = userActivityHistoryService;
|
|
69
60
|
this.dataSource = dataSource;
|
|
70
61
|
this.logger = new common_1.Logger(AuthenticationService_1.name);
|
|
71
62
|
}
|
|
72
|
-
async getConfig(key) {
|
|
73
|
-
return this.settingService.getConfigValue(key);
|
|
74
|
-
}
|
|
75
63
|
async getCompanyLogo() {
|
|
76
|
-
return
|
|
64
|
+
return this.settingService.getConfigValue('companylogo');
|
|
77
65
|
}
|
|
78
66
|
async resolveUser(username, email) {
|
|
79
67
|
return await this.userRepository.findOne({
|
|
@@ -124,16 +112,15 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
124
112
|
return user;
|
|
125
113
|
}
|
|
126
114
|
async signUp(signUpDto, activeUser = null) {
|
|
127
|
-
if (!(await this.settingService.getConfigValue('allowPublicRegistration')) && !activeUser) {
|
|
128
|
-
throw new common_1.BadRequestException(error_messages_1.ERROR_MESSAGES.PUBLIC_REGISTRATION_DISABLED);
|
|
129
|
-
}
|
|
130
115
|
try {
|
|
131
|
-
const onForcePasswordChange =
|
|
132
|
-
|
|
116
|
+
const onForcePasswordChange = this.settingService.getConfigValue('forceChangePasswordOnFirstLogin');
|
|
117
|
+
const activateUserOnRegistration = this.settingService.getConfigValue('activateUserOnRegistration');
|
|
118
|
+
const defaultRole = this.settingService.getConfigValue('defaultRole');
|
|
119
|
+
var { user, pwd, autoGeneratedPwd } = await this.populateForSignup(new user_entity_1.User(), signUpDto, activateUserOnRegistration, onForcePasswordChange);
|
|
133
120
|
const savedUser = await this.userRepository.save(user);
|
|
134
121
|
const userRoles = signUpDto.roles ?? [];
|
|
135
|
-
if (signUpDto.username !== 'sa' &&
|
|
136
|
-
userRoles.push(
|
|
122
|
+
if (signUpDto.username !== 'sa' && defaultRole) {
|
|
123
|
+
userRoles.push(defaultRole);
|
|
137
124
|
}
|
|
138
125
|
await this.handlePostSignup(savedUser, userRoles, pwd, autoGeneratedPwd);
|
|
139
126
|
return savedUser;
|
|
@@ -148,7 +135,7 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
148
135
|
}
|
|
149
136
|
async signupForExtensionUser(signUpDto, extensionUserDto, extensionUserRepo) {
|
|
150
137
|
try {
|
|
151
|
-
const onForcePasswordChange =
|
|
138
|
+
const onForcePasswordChange = this.settingService.getConfigValue('forceChangePasswordOnFirstLogin');
|
|
152
139
|
const extensionUser = extensionUserRepo.merge(extensionUserRepo.create(), extensionUserDto);
|
|
153
140
|
var { user, pwd, autoGeneratedPwd } = await this.populateForSignup(extensionUser, signUpDto, extensionUserDto.active ?? true, onForcePasswordChange);
|
|
154
141
|
const savedUser = await extensionUserRepo.save(user);
|
|
@@ -164,7 +151,7 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
164
151
|
}
|
|
165
152
|
}
|
|
166
153
|
async populateForSignup(user, signUpDto, isUserActive = true, onForcePasswordChange) {
|
|
167
|
-
let autoGeneratedPwdPermission =
|
|
154
|
+
let autoGeneratedPwdPermission = this.settingService.getConfigValue('iamAutoGeneratedPassword');
|
|
168
155
|
if (signUpDto.roles && signUpDto.roles.length > 0) {
|
|
169
156
|
for (let i = 0; i < signUpDto.roles.length; i++) {
|
|
170
157
|
const roleName = signUpDto.roles[i];
|
|
@@ -190,7 +177,7 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
190
177
|
user.forcePasswordChange = true;
|
|
191
178
|
}
|
|
192
179
|
else {
|
|
193
|
-
if (!this.isPasswordlessRegistrationEnabled()) {
|
|
180
|
+
if (!await this.isPasswordlessRegistrationEnabled()) {
|
|
194
181
|
this.logger.error('User being created without password, and password less login is also not enabled in the system. Is this intentional?');
|
|
195
182
|
throw new common_1.BadRequestException(error_messages_1.ERROR_MESSAGES.PASSWORDLESS_REGISTRATION_DISABLED);
|
|
196
183
|
}
|
|
@@ -206,7 +193,7 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
206
193
|
async handlePostSignup(user, roles = [], pwd, autoGeneratedPwd) {
|
|
207
194
|
await this.userService.initializeRolesForNewUser(roles, user);
|
|
208
195
|
if (user.forcePasswordChange && autoGeneratedPwd) {
|
|
209
|
-
this.notifyUserOnForcePasswordChange(user, autoGeneratedPwd);
|
|
196
|
+
await this.notifyUserOnForcePasswordChange(user, autoGeneratedPwd);
|
|
210
197
|
}
|
|
211
198
|
await this.notifyUserOnSignup(user);
|
|
212
199
|
}
|
|
@@ -227,49 +214,53 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
227
214
|
const companyLogo = await this.getCompanyLogo();
|
|
228
215
|
const mailService = this.mailServiceFactory.getMailService();
|
|
229
216
|
mailService.sendEmailUsingTemplate(user.email, 'on-force-password-change', {
|
|
230
|
-
solidAppName:
|
|
231
|
-
solidAppWebsiteUrl:
|
|
232
|
-
frontendLoginPageUrl:
|
|
217
|
+
solidAppName: this.settingService.getConfigValue('appTitle'),
|
|
218
|
+
solidAppWebsiteUrl: this.settingService.getConfigValue('solidAppWebsiteUrl'),
|
|
219
|
+
frontendLoginPageUrl: this.settingService.getConfigValue('frontendLoginPageUrl'),
|
|
233
220
|
email: user.email,
|
|
234
221
|
fullName: user.fullName,
|
|
235
222
|
userName: user.username,
|
|
236
223
|
password: autoGeneratedPwd,
|
|
237
224
|
companyLogoUrl: companyLogo
|
|
238
|
-
}, this.
|
|
225
|
+
}, this.settingService.getConfigValue('shouldQueueEmails'), null, null, 'user', user.id);
|
|
239
226
|
}
|
|
240
|
-
isWelcomeEmailEnabled() {
|
|
241
|
-
|
|
227
|
+
async isWelcomeEmailEnabled() {
|
|
228
|
+
const sendWelcomeEmailOnSignup = this.settingService.getConfigValue('sendWelcomeEmailOnSignup');
|
|
229
|
+
return sendWelcomeEmailOnSignup;
|
|
242
230
|
}
|
|
243
|
-
isWelcomeSmsEnabled() {
|
|
244
|
-
|
|
231
|
+
async isWelcomeSmsEnabled() {
|
|
232
|
+
const sendWelcomeSmsOnSignup = this.settingService.getConfigValue('sendWelcomeSmsOnSignup');
|
|
233
|
+
return sendWelcomeSmsOnSignup;
|
|
245
234
|
}
|
|
246
235
|
async notifyUserOnSignup(user) {
|
|
247
236
|
const companyLogo = await this.getCompanyLogo();
|
|
248
|
-
if (this.isWelcomeEmailEnabled()) {
|
|
237
|
+
if (await this.isWelcomeEmailEnabled()) {
|
|
249
238
|
const mailService = this.mailServiceFactory.getMailService();
|
|
250
239
|
mailService.sendEmailUsingTemplate(user.email, 'email-on-signup', {
|
|
251
|
-
solidAppName:
|
|
252
|
-
solidAppWebsiteUrl:
|
|
253
|
-
frontendLoginPageUrl:
|
|
240
|
+
solidAppName: this.settingService.getConfigValue('appTitle'),
|
|
241
|
+
solidAppWebsiteUrl: this.settingService.getConfigValue('solidAppWebsiteUrl'),
|
|
242
|
+
frontendLoginPageUrl: this.settingService.getConfigValue('frontendLoginPageUrl'),
|
|
254
243
|
email: user.email,
|
|
255
244
|
fullName: user.fullName,
|
|
256
245
|
userName: user.username,
|
|
257
246
|
companyLogoUrl: companyLogo
|
|
258
|
-
}, this.
|
|
247
|
+
}, this.settingService.getConfigValue('shouldQueueEmails'), null, null, 'user', user.id);
|
|
259
248
|
}
|
|
260
|
-
|
|
249
|
+
const isWelcomeSmsEnabled = await this.isWelcomeSmsEnabled();
|
|
250
|
+
if (isWelcomeSmsEnabled && user.mobile) {
|
|
261
251
|
const smsService = this.smsFactory.getSmsService();
|
|
262
252
|
smsService.sendSMSUsingTemplate(user.mobile, 'text-on-signup', {
|
|
263
|
-
solidAppName:
|
|
264
|
-
frontendLoginPageUrl:
|
|
253
|
+
solidAppName: this.settingService.getConfigValue('appTitle'),
|
|
254
|
+
frontendLoginPageUrl: this.settingService.getConfigValue('frontendLoginPageUrl'),
|
|
265
255
|
firstName: user.username,
|
|
266
256
|
fullName: user.fullName ? user.fullName : user.username
|
|
267
|
-
}, this.
|
|
257
|
+
}, this.settingService.getConfigValue('shouldQueueSms'));
|
|
268
258
|
}
|
|
269
259
|
}
|
|
270
260
|
async otpInitiateRegistration(signUpDto) {
|
|
271
261
|
try {
|
|
272
|
-
|
|
262
|
+
const isPasswordlessRegistrationEnabled = await this.isPasswordlessRegistrationEnabled();
|
|
263
|
+
if (!isPasswordlessRegistrationEnabled) {
|
|
273
264
|
throw new common_1.BadRequestException(error_messages_1.ERROR_MESSAGES.PASSWORDLESS_REGISTRATION_DISABLED);
|
|
274
265
|
}
|
|
275
266
|
if ((0, class_validator_1.isEmpty)(signUpDto.mobile) && (0, class_validator_1.isEmpty)(signUpDto.email)) {
|
|
@@ -291,19 +282,20 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
291
282
|
if ((0, class_validator_1.isNotEmpty)(existingUser) && existingUser.active) {
|
|
292
283
|
throw new common_1.ConflictException(error_messages_1.ERROR_MESSAGES.USER_ALREADY_EXISTS);
|
|
293
284
|
}
|
|
294
|
-
const
|
|
285
|
+
const passwordlessRegistrationValidateWhat = this.settingService.getConfigValue('passwordlessRegistrationValidateWhat');
|
|
286
|
+
const finalRegistrationVerificationSources = this.calculateVerificationSources(passwordlessRegistrationValidateWhat, signUpDto);
|
|
295
287
|
let user = existingUser;
|
|
296
288
|
if ((0, class_validator_1.isEmpty)(user)) {
|
|
297
289
|
user = this.createUser(signUpDto);
|
|
298
|
-
this.populateVerificationTokens(finalRegistrationVerificationSources, user);
|
|
290
|
+
await this.populateVerificationTokens(finalRegistrationVerificationSources, user);
|
|
299
291
|
await this.userRepository.save(user);
|
|
300
|
-
await this.userService.addRoleToUser(user.username,
|
|
292
|
+
await this.userService.addRoleToUser(user.username, this.settingService.getConfigValue('defaultRole'));
|
|
301
293
|
}
|
|
302
294
|
else {
|
|
303
|
-
this.populateVerificationTokens(finalRegistrationVerificationSources, user);
|
|
295
|
+
await this.populateVerificationTokens(finalRegistrationVerificationSources, user);
|
|
304
296
|
await this.userRepository.save(user);
|
|
305
297
|
}
|
|
306
|
-
this.notifyUserOnOtpInitiateRegistration(user, finalRegistrationVerificationSources);
|
|
298
|
+
await this.notifyUserOnOtpInitiateRegistration(user, finalRegistrationVerificationSources);
|
|
307
299
|
return { message: success_messages_1.SUCCESS_MESSAGES.OTP_SENT_SUCCESS_REGISTRATION };
|
|
308
300
|
}
|
|
309
301
|
catch (err) {
|
|
@@ -330,24 +322,26 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
330
322
|
}
|
|
331
323
|
return finalRegistrationValidationSources;
|
|
332
324
|
}
|
|
333
|
-
populateVerificationTokens(finalRegistrationValidationSources, user) {
|
|
325
|
+
async populateVerificationTokens(finalRegistrationValidationSources, user) {
|
|
334
326
|
if (finalRegistrationValidationSources.length === 0) {
|
|
335
327
|
throw new common_1.BadRequestException(error_messages_1.ERROR_MESSAGES.VALIDATION_SOURCE_REQUIRED);
|
|
336
328
|
}
|
|
337
329
|
if (finalRegistrationValidationSources.includes(constants_1.TransactionalRegistrationValidationSource.EMAIL)) {
|
|
338
|
-
const { token, expiresAt } = this.otp();
|
|
330
|
+
const { token, expiresAt } = await this.otp();
|
|
339
331
|
user.emailVerificationTokenOnRegistration = token;
|
|
340
332
|
user.emailVerificationTokenOnRegistrationExpiresAt = expiresAt;
|
|
341
|
-
|
|
333
|
+
const autoLoginUserOnRegistration = this.settingService.getConfigValue('autoLoginUserOnRegistration');
|
|
334
|
+
if (autoLoginUserOnRegistration) {
|
|
342
335
|
user.emailVerificationTokenOnLogin = token;
|
|
343
336
|
user.emailVerificationTokenOnLoginExpiresAt = expiresAt;
|
|
344
337
|
}
|
|
345
338
|
}
|
|
346
339
|
if (finalRegistrationValidationSources.includes(constants_1.TransactionalRegistrationValidationSource.MOBILE)) {
|
|
347
|
-
const { token, expiresAt } = this.otp();
|
|
340
|
+
const { token, expiresAt } = await this.otp();
|
|
348
341
|
user.mobileVerificationTokenOnRegistration = token;
|
|
349
342
|
user.mobileVerificationTokenOnRegistrationExpiresAt = expiresAt;
|
|
350
|
-
|
|
343
|
+
const autoLoginUserOnRegistration = this.settingService.getConfigValue('autoLoginUserOnRegistration');
|
|
344
|
+
if (autoLoginUserOnRegistration) {
|
|
351
345
|
user.mobileVerificationTokenOnLogin = token;
|
|
352
346
|
user.mobileVerificationTokenOnLoginExpiresAt = expiresAt;
|
|
353
347
|
}
|
|
@@ -355,33 +349,35 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
355
349
|
}
|
|
356
350
|
async notifyUserOnOtpInitiateRegistration(user, registrationValidationSources) {
|
|
357
351
|
const companyLogo = await this.getCompanyLogo();
|
|
358
|
-
|
|
352
|
+
const dummyOtp = this.settingService.getConfigValue('dummyOtp');
|
|
353
|
+
if (dummyOtp)
|
|
359
354
|
return;
|
|
360
355
|
if (registrationValidationSources.includes(constants_1.RegistrationValidationSource.EMAIL)) {
|
|
361
356
|
const mailService = this.mailServiceFactory.getMailService();
|
|
362
357
|
mailService.sendEmailUsingTemplate(user.email, 'otp-on-register', {
|
|
363
|
-
solidAppName:
|
|
364
|
-
solidAppWebsiteUrl:
|
|
358
|
+
solidAppName: this.settingService.getConfigValue('appTitle'),
|
|
359
|
+
solidAppWebsiteUrl: this.settingService.getConfigValue('solidAppWebsiteUrl'),
|
|
365
360
|
firstName: user.username,
|
|
366
361
|
fullName: user.fullName ? user.fullName : user.username,
|
|
367
362
|
emailVerificationTokenOnRegistration: user.emailVerificationTokenOnRegistration,
|
|
368
363
|
companyLogoUrl: companyLogo
|
|
369
|
-
}, this.
|
|
364
|
+
}, this.settingService.getConfigValue('shouldQueueEmails'), null, null, 'user', user.id);
|
|
370
365
|
}
|
|
371
366
|
if (registrationValidationSources.includes(constants_1.RegistrationValidationSource.MOBILE)) {
|
|
372
367
|
const smsService = this.smsFactory.getSmsService();
|
|
373
368
|
smsService.sendSMSUsingTemplate(user.mobile, 'otp-on-register', {
|
|
374
|
-
solidAppName:
|
|
369
|
+
solidAppName: this.settingService.getConfigValue('appTitle'),
|
|
375
370
|
otp: user.mobileVerificationTokenOnRegistration,
|
|
376
371
|
mobileVerificationTokenOnRegistration: user.mobileVerificationTokenOnRegistration,
|
|
377
372
|
firstName: user.username,
|
|
378
373
|
fullName: user.fullName ? user.fullName : user.username,
|
|
379
374
|
companyLogoUrl: companyLogo
|
|
380
|
-
}, this.
|
|
375
|
+
}, this.settingService.getConfigValue('shouldQueueSms'));
|
|
381
376
|
}
|
|
382
377
|
}
|
|
383
378
|
async otpConfirmRegistration(confirmSignUpDto) {
|
|
384
|
-
|
|
379
|
+
const isPasswordlessRegistrationEnabled = await this.isPasswordlessRegistrationEnabled();
|
|
380
|
+
if (!isPasswordlessRegistrationEnabled) {
|
|
385
381
|
throw new common_1.BadRequestException(error_messages_1.ERROR_MESSAGES.PASSWORDLESS_REGISTRATION_DISABLED);
|
|
386
382
|
}
|
|
387
383
|
if (confirmSignUpDto.type === constants_1.RegistrationValidationSource.EMAIL) {
|
|
@@ -402,7 +398,7 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
402
398
|
user.emailVerifiedOnRegistrationAt = new Date();
|
|
403
399
|
user.emailVerificationTokenOnRegistration = null;
|
|
404
400
|
user.emailVerificationTokenOnRegistrationExpiresAt = null;
|
|
405
|
-
user.active =
|
|
401
|
+
user.active = this.settingService.getConfigValue('activateUserOnRegistration') && await this.areRegistrationValidationSourcesVerified(user);
|
|
406
402
|
const savedUser = await this.userRepository.save(user);
|
|
407
403
|
this.triggerRegistrationEvent(savedUser);
|
|
408
404
|
return { active: savedUser.active, message: `User registration verified for ${confirmSignUpDto.type}` };
|
|
@@ -425,7 +421,7 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
425
421
|
user.mobileVerifiedOnRegistrationAt = new Date();
|
|
426
422
|
user.mobileVerificationTokenOnRegistration = null;
|
|
427
423
|
user.mobileVerificationTokenOnRegistrationExpiresAt = null;
|
|
428
|
-
user.active =
|
|
424
|
+
user.active = this.settingService.getConfigValue('activateUserOnRegistration') && await this.areRegistrationValidationSourcesVerified(user);
|
|
429
425
|
const savedUser = await this.userRepository.save(user);
|
|
430
426
|
this.triggerRegistrationEvent(savedUser);
|
|
431
427
|
return { active: savedUser.active, message: `User registration verified for ${confirmSignUpDto.type}` };
|
|
@@ -436,8 +432,9 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
436
432
|
const event = new interfaces_1.EventDetails(interfaces_1.EventType.USER_REGISTERED, savedUser);
|
|
437
433
|
this.eventEmitter.emit(interfaces_1.EventType.USER_REGISTERED, event);
|
|
438
434
|
}
|
|
439
|
-
areRegistrationValidationSourcesVerified(user) {
|
|
440
|
-
const
|
|
435
|
+
async areRegistrationValidationSourcesVerified(user) {
|
|
436
|
+
const passwordlessRegistrationValidateWhat = this.settingService.getConfigValue('passwordlessRegistrationValidateWhat');
|
|
437
|
+
const registrationValidationSources = passwordlessRegistrationValidateWhat;
|
|
441
438
|
if (registrationValidationSources.includes(constants_1.RegistrationValidationSource.EMAIL)) {
|
|
442
439
|
if (!user.emailVerifiedOnRegistrationAt) {
|
|
443
440
|
return false;
|
|
@@ -450,11 +447,13 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
450
447
|
}
|
|
451
448
|
return true;
|
|
452
449
|
}
|
|
453
|
-
otp() {
|
|
450
|
+
async otp() {
|
|
454
451
|
const now = new Date();
|
|
455
|
-
|
|
452
|
+
const otpExpiry = this.settingService.getConfigValue('otpExpiry');
|
|
453
|
+
const dummyOtp = this.settingService.getConfigValue('dummyOtp');
|
|
454
|
+
now.setMinutes(now.getMinutes() + otpExpiry);
|
|
456
455
|
return {
|
|
457
|
-
token:
|
|
456
|
+
token: dummyOtp ? dummyOtp : (0, crypto_1.randomInt)(100000, 999999).toString(),
|
|
458
457
|
expiresAt: now,
|
|
459
458
|
};
|
|
460
459
|
}
|
|
@@ -474,8 +473,29 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
474
473
|
...tokens
|
|
475
474
|
};
|
|
476
475
|
}
|
|
476
|
+
maskEmail(email) {
|
|
477
|
+
if (!email)
|
|
478
|
+
return null;
|
|
479
|
+
const [localPart, domain] = email.split('@');
|
|
480
|
+
if (localPart.length <= 2) {
|
|
481
|
+
return `${localPart[0]}***@${domain}`;
|
|
482
|
+
}
|
|
483
|
+
const visibleStart = localPart.slice(0, 2);
|
|
484
|
+
const visibleEnd = localPart.slice(-1);
|
|
485
|
+
return `${visibleStart}***${visibleEnd}@${domain}`;
|
|
486
|
+
}
|
|
487
|
+
maskMobile(mobile) {
|
|
488
|
+
if (!mobile)
|
|
489
|
+
return null;
|
|
490
|
+
if (mobile.length <= 4) {
|
|
491
|
+
return mobile;
|
|
492
|
+
}
|
|
493
|
+
const visibleEnd = mobile.slice(-4);
|
|
494
|
+
return `***${visibleEnd}`;
|
|
495
|
+
}
|
|
477
496
|
async otpInitiateLogin(signInDto) {
|
|
478
|
-
|
|
497
|
+
const isPasswordlessRegistrationEnabled = await this.isPasswordlessRegistrationEnabled();
|
|
498
|
+
if (!isPasswordlessRegistrationEnabled) {
|
|
479
499
|
throw new common_1.BadRequestException(error_messages_1.ERROR_MESSAGES.PASSWORDLESS_REGISTRATION_DISABLED);
|
|
480
500
|
}
|
|
481
501
|
if (signInDto.type === constants_1.RegistrationValidationSource.EMAIL) {
|
|
@@ -491,11 +511,17 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
491
511
|
if (!user.active) {
|
|
492
512
|
throw new common_1.UnauthorizedException(error_messages_1.ERROR_MESSAGES.USER_INACTIVE);
|
|
493
513
|
}
|
|
494
|
-
const { token, expiresAt } = this.otp();
|
|
514
|
+
const { token, expiresAt } = await this.otp();
|
|
495
515
|
user.emailVerificationTokenOnLogin = token;
|
|
496
516
|
user.emailVerificationTokenOnLoginExpiresAt = expiresAt;
|
|
497
517
|
await this.userRepository.save(user);
|
|
498
518
|
this.notifyUserOnOtpInititateLogin(user, constants_1.RegistrationValidationSource.EMAIL);
|
|
519
|
+
return {
|
|
520
|
+
message: success_messages_1.SUCCESS_MESSAGES.OTP_SENT_SUCCESS_LOGIN,
|
|
521
|
+
user: {
|
|
522
|
+
email: this.maskEmail(user.email)
|
|
523
|
+
}
|
|
524
|
+
};
|
|
499
525
|
}
|
|
500
526
|
else if (signInDto.type === constants_1.RegistrationValidationSource.MOBILE) {
|
|
501
527
|
const user = await this.userRepository.findOne({
|
|
@@ -507,46 +533,53 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
507
533
|
if (!user) {
|
|
508
534
|
throw new common_1.UnauthorizedException(error_messages_1.ERROR_MESSAGES.USER_NOT_FOUND);
|
|
509
535
|
}
|
|
510
|
-
const { token, expiresAt } = this.otp();
|
|
536
|
+
const { token, expiresAt } = await this.otp();
|
|
511
537
|
user.mobileVerificationTokenOnLogin = token;
|
|
512
538
|
user.mobileVerificationTokenOnLoginExpiresAt = expiresAt;
|
|
513
539
|
await this.userRepository.save(user);
|
|
514
540
|
this.notifyUserOnOtpInititateLogin(user, constants_1.RegistrationValidationSource.MOBILE);
|
|
541
|
+
return {
|
|
542
|
+
message: success_messages_1.SUCCESS_MESSAGES.OTP_SENT_SUCCESS_LOGIN,
|
|
543
|
+
user: {
|
|
544
|
+
mobile: this.maskMobile(user.mobile)
|
|
545
|
+
}
|
|
546
|
+
};
|
|
515
547
|
}
|
|
516
548
|
else {
|
|
517
549
|
throw new common_1.BadRequestException(error_messages_1.ERROR_MESSAGES.INVALID_VERIFICATION_TYPE);
|
|
518
550
|
}
|
|
519
|
-
return { message: success_messages_1.SUCCESS_MESSAGES.OTP_SENT_SUCCESS_LOGIN };
|
|
520
551
|
}
|
|
521
552
|
async notifyUserOnOtpInititateLogin(user, loginType) {
|
|
522
553
|
const companyLogo = await this.getCompanyLogo();
|
|
523
|
-
|
|
554
|
+
const dummyOtp = this.settingService.getConfigValue('dummyOtp');
|
|
555
|
+
if (dummyOtp)
|
|
524
556
|
return;
|
|
525
557
|
if (loginType === constants_1.RegistrationValidationSource.EMAIL) {
|
|
526
558
|
const mailService = this.mailServiceFactory.getMailService();
|
|
527
559
|
mailService.sendEmailUsingTemplate(user.email, 'otp-on-login', {
|
|
528
|
-
solidAppName:
|
|
529
|
-
solidAppWebsiteUrl:
|
|
560
|
+
solidAppName: this.settingService.getConfigValue('appTitle'),
|
|
561
|
+
solidAppWebsiteUrl: this.settingService.getConfigValue('solidAppWebsiteUrl'),
|
|
530
562
|
firstName: user.username,
|
|
531
563
|
emailVerificationTokenOnLogin: user.emailVerificationTokenOnLogin,
|
|
532
564
|
fullName: user.fullName ? user.fullName : user.username,
|
|
533
565
|
companyLogoUrl: companyLogo
|
|
534
|
-
}, this.
|
|
566
|
+
}, this.settingService.getConfigValue('shouldQueueEmails'), null, null, 'user', user.id);
|
|
535
567
|
}
|
|
536
568
|
if (loginType === constants_1.RegistrationValidationSource.MOBILE) {
|
|
537
569
|
const smsService = this.smsFactory.getSmsService();
|
|
538
570
|
smsService.sendSMSUsingTemplate(user.mobile, 'otp-on-login', {
|
|
539
|
-
solidAppName:
|
|
571
|
+
solidAppName: this.settingService.getConfigValue('appTitle'),
|
|
540
572
|
otp: user.mobileVerificationTokenOnLogin,
|
|
541
573
|
mobileVerificationTokenOnLogin: user.mobileVerificationTokenOnLogin,
|
|
542
574
|
firstName: user.username,
|
|
543
575
|
fullName: user.fullName ? user.fullName : user.username,
|
|
544
576
|
companyLogoUrl: companyLogo
|
|
545
|
-
}, this.
|
|
577
|
+
}, this.settingService.getConfigValue('shouldQueueSms'));
|
|
546
578
|
}
|
|
547
579
|
}
|
|
548
580
|
async otpConfirmLogin(confirmSignInDto) {
|
|
549
|
-
|
|
581
|
+
const isPasswordlessRegistrationEnabled = await this.isPasswordlessRegistrationEnabled();
|
|
582
|
+
if (!isPasswordlessRegistrationEnabled) {
|
|
550
583
|
throw new common_1.BadRequestException(error_messages_1.ERROR_MESSAGES.PASSWORDLESS_REGISTRATION_DISABLED);
|
|
551
584
|
}
|
|
552
585
|
if (confirmSignInDto.type === constants_1.RegistrationValidationSource.EMAIL) {
|
|
@@ -645,12 +678,14 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
645
678
|
await this.userRepository.save(user);
|
|
646
679
|
return true;
|
|
647
680
|
}
|
|
648
|
-
generateForgotPasswordToken() {
|
|
681
|
+
async generateForgotPasswordToken() {
|
|
649
682
|
const expiryTime = new Date();
|
|
650
|
-
|
|
683
|
+
const forgotPasswordVerificationTokenExpiry = this.settingService.getConfigValue('forgotPasswordVerificationTokenExpiry');
|
|
684
|
+
const dummyOtp = this.settingService.getConfigValue('dummyOtp');
|
|
685
|
+
expiryTime.setMinutes(expiryTime.getMinutes() + forgotPasswordVerificationTokenExpiry);
|
|
651
686
|
return {
|
|
652
|
-
token:
|
|
653
|
-
?
|
|
687
|
+
token: dummyOtp
|
|
688
|
+
? dummyOtp
|
|
654
689
|
: (0, uuid_1.v4)(),
|
|
655
690
|
expiresAt: expiryTime,
|
|
656
691
|
};
|
|
@@ -668,11 +703,11 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
668
703
|
isValidUser = false;
|
|
669
704
|
}
|
|
670
705
|
if (isValidUser) {
|
|
671
|
-
const { token, expiresAt } = this.generateForgotPasswordToken();
|
|
706
|
+
const { token, expiresAt } = await this.generateForgotPasswordToken();
|
|
672
707
|
user.verificationTokenOnForgotPassword = token;
|
|
673
708
|
user.verificationTokenOnForgotPasswordExpiresAt = expiresAt;
|
|
674
709
|
await this.userRepository.save(user);
|
|
675
|
-
this.notifyUserOnForgotPassword(user);
|
|
710
|
+
await this.notifyUserOnForgotPassword(user);
|
|
676
711
|
}
|
|
677
712
|
return {
|
|
678
713
|
status: 'success',
|
|
@@ -688,27 +723,27 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
688
723
|
}
|
|
689
724
|
async notifyUserOnForgotPassword(user) {
|
|
690
725
|
const companyLogo = await this.getCompanyLogo();
|
|
691
|
-
const forgotPasswordSendVerificationTokenOn = this.
|
|
726
|
+
const forgotPasswordSendVerificationTokenOn = this.settingService.getConfigValue('forgotPasswordSendVerificationTokenOn');
|
|
692
727
|
if (forgotPasswordSendVerificationTokenOn == constants_1.ForgotPasswordSendVerificationTokenOn.EMAIL) {
|
|
693
728
|
const mailService = this.mailServiceFactory.getMailService();
|
|
694
729
|
mailService.sendEmailUsingTemplate(user.email, 'forgot-password', {
|
|
695
|
-
solidAppName:
|
|
696
|
-
solidAppWebsiteUrl:
|
|
730
|
+
solidAppName: this.settingService.getConfigValue('appTitle'),
|
|
731
|
+
solidAppWebsiteUrl: this.settingService.getConfigValue('solidAppWebsiteUrl'),
|
|
697
732
|
firstName: user.username,
|
|
698
733
|
fullName: user.fullName,
|
|
699
|
-
passwordResetLink: `${
|
|
734
|
+
passwordResetLink: `${this.settingService.getConfigValue('frontendForgotPasswordPageUrl')}?token=${user.verificationTokenOnForgotPassword}`,
|
|
700
735
|
companyLogoUrl: companyLogo
|
|
701
|
-
}, this.
|
|
736
|
+
}, this.settingService.getConfigValue('shouldQueueEmails'), null, null, 'user', user.id);
|
|
702
737
|
}
|
|
703
738
|
if (forgotPasswordSendVerificationTokenOn == constants_1.ForgotPasswordSendVerificationTokenOn.MOBILE && user.mobile) {
|
|
704
739
|
const smsService = this.smsFactory.getSmsService();
|
|
705
740
|
smsService.sendSMSUsingTemplate(user.mobile, 'forgot-password', {
|
|
706
|
-
solidAppName:
|
|
741
|
+
solidAppName: this.settingService.getConfigValue('appTitle'),
|
|
707
742
|
otp: user.verificationTokenOnForgotPassword,
|
|
708
743
|
verificationTokenOnForgotPassword: user.verificationTokenOnForgotPassword,
|
|
709
744
|
firstName: user.username,
|
|
710
745
|
companyLogoUrl: companyLogo
|
|
711
|
-
}, this.
|
|
746
|
+
}, this.settingService.getConfigValue('shouldQueueSms'));
|
|
712
747
|
}
|
|
713
748
|
}
|
|
714
749
|
async confirmForgotPassword(confirmForgotPasswordDto) {
|
|
@@ -739,7 +774,7 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
739
774
|
const pwdScheme = this.hashingService.name();
|
|
740
775
|
const pwdSchemeVersion = this.hashingService.currentVersion();
|
|
741
776
|
await m.getRepository(user_entity_1.User).update({ id: user.id }, { password: pwdHash, passwordScheme: pwdScheme, passwordSchemeVersion: pwdSchemeVersion });
|
|
742
|
-
this.notifyUserOnPasswordChanged(user);
|
|
777
|
+
await this.notifyUserOnPasswordChanged(user);
|
|
743
778
|
return {
|
|
744
779
|
status: 'success',
|
|
745
780
|
message: success_messages_1.SUCCESS_MESSAGES.FORGOT_PASSWORD_CONFIRMED,
|
|
@@ -751,34 +786,34 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
751
786
|
}
|
|
752
787
|
async notifyUserOnPasswordChanged(user) {
|
|
753
788
|
const companyLogo = await this.getCompanyLogo();
|
|
754
|
-
const forgotPasswordSendVerificationTokenOn = this.
|
|
789
|
+
const forgotPasswordSendVerificationTokenOn = this.settingService.getConfigValue('forgotPasswordSendVerificationTokenOn');
|
|
755
790
|
if (forgotPasswordSendVerificationTokenOn == constants_1.ForgotPasswordSendVerificationTokenOn.EMAIL) {
|
|
756
791
|
const mailService = this.mailServiceFactory.getMailService();
|
|
757
792
|
mailService.sendEmailUsingTemplate(user.email, 'password-changed', {
|
|
758
|
-
solidAppName:
|
|
759
|
-
solidAppWebsiteUrl:
|
|
793
|
+
solidAppName: this.settingService.getConfigValue('appTitle'),
|
|
794
|
+
solidAppWebsiteUrl: this.settingService.getConfigValue('solidAppWebsiteUrl'),
|
|
760
795
|
email: user.email,
|
|
761
796
|
firstName: user.username,
|
|
762
797
|
fullName: user.fullName,
|
|
763
|
-
passwordResetLink: `${
|
|
798
|
+
passwordResetLink: `${this.settingService.getConfigValue('frontendForgotPasswordPageUrl')}?token=${user.verificationTokenOnForgotPassword}`,
|
|
764
799
|
companyLogoUrl: companyLogo
|
|
765
|
-
}, this.
|
|
800
|
+
}, this.settingService.getConfigValue('shouldQueueEmails'), null, null, 'user', user.id);
|
|
766
801
|
}
|
|
767
802
|
if (forgotPasswordSendVerificationTokenOn == constants_1.ForgotPasswordSendVerificationTokenOn.MOBILE && user.mobile) {
|
|
768
803
|
const smsService = this.smsFactory.getSmsService();
|
|
769
804
|
smsService.sendSMSUsingTemplate(user.mobile, 'forgot-password', {
|
|
770
|
-
solidAppName:
|
|
805
|
+
solidAppName: this.settingService.getConfigValue('appTitle'),
|
|
771
806
|
otp: user.verificationTokenOnForgotPassword,
|
|
772
807
|
verificationTokenOnForgotPassword: user.verificationTokenOnForgotPassword,
|
|
773
808
|
firstName: user.username,
|
|
774
809
|
companyLogoUrl: companyLogo
|
|
775
|
-
}, this.
|
|
810
|
+
}, this.settingService.getConfigValue('shouldQueueSms'));
|
|
776
811
|
}
|
|
777
812
|
}
|
|
778
813
|
async generateTokens(user) {
|
|
779
814
|
const [accessToken, refreshToken] = await Promise.all([
|
|
780
|
-
this.generateAccessToken(user),
|
|
781
|
-
this.generateRefreshToken(user),
|
|
815
|
+
await this.generateAccessToken(user),
|
|
816
|
+
await this.generateRefreshToken(user),
|
|
782
817
|
]);
|
|
783
818
|
return {
|
|
784
819
|
accessToken,
|
|
@@ -787,12 +822,14 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
787
822
|
}
|
|
788
823
|
async generateAccessToken(user) {
|
|
789
824
|
const userRoleNames = user.roles.map((role) => role.name);
|
|
790
|
-
const
|
|
825
|
+
const accessTokenTtl = this.settingService.getConfigValue("accessTokenTtl");
|
|
826
|
+
const accessToken = await this.signToken(user.id, accessTokenTtl, { username: user.username, email: user.email, roles: userRoleNames });
|
|
791
827
|
return accessToken;
|
|
792
828
|
}
|
|
793
829
|
async generateRefreshToken(user, previousRefreshToken) {
|
|
794
830
|
const refreshTokenId = (0, crypto_1.randomUUID)();
|
|
795
|
-
const
|
|
831
|
+
const refreshTokenTtl = this.settingService.getConfigValue("refreshTokenTtl");
|
|
832
|
+
const refreshToken = await this.signToken(user.id, refreshTokenTtl, {
|
|
796
833
|
refreshTokenId,
|
|
797
834
|
});
|
|
798
835
|
await this.refreshTokenIdsStorage.insert(user.id, refreshToken, previousRefreshToken);
|
|
@@ -800,10 +837,13 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
800
837
|
}
|
|
801
838
|
async refreshTokens(refreshTokenDto) {
|
|
802
839
|
try {
|
|
840
|
+
const secret = this.settingService.getConfigValue("secret");
|
|
841
|
+
const audience = this.settingService.getConfigValue("audience");
|
|
842
|
+
const issuer = this.settingService.getConfigValue("issuer");
|
|
803
843
|
const { sub } = await this.jwtService.verifyAsync(refreshTokenDto.refreshToken, {
|
|
804
|
-
secret
|
|
805
|
-
audience
|
|
806
|
-
issuer
|
|
844
|
+
secret,
|
|
845
|
+
audience,
|
|
846
|
+
issuer,
|
|
807
847
|
});
|
|
808
848
|
const user = await this.userRepository.findOne({
|
|
809
849
|
where: {
|
|
@@ -831,13 +871,16 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
831
871
|
}
|
|
832
872
|
}
|
|
833
873
|
async signToken(userId, expiresIn, payload) {
|
|
874
|
+
const audience = this.settingService.getConfigValue("audience");
|
|
875
|
+
const issuer = this.settingService.getConfigValue("issuer");
|
|
876
|
+
const secret = this.settingService.getConfigValue("secret");
|
|
834
877
|
return await this.jwtService.signAsync({
|
|
835
878
|
sub: userId,
|
|
836
879
|
...payload,
|
|
837
880
|
}, {
|
|
838
|
-
audience
|
|
839
|
-
issuer
|
|
840
|
-
secret
|
|
881
|
+
audience,
|
|
882
|
+
issuer,
|
|
883
|
+
secret,
|
|
841
884
|
expiresIn,
|
|
842
885
|
});
|
|
843
886
|
}
|
|
@@ -879,7 +922,7 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
879
922
|
};
|
|
880
923
|
}
|
|
881
924
|
async isPasswordlessRegistrationEnabled() {
|
|
882
|
-
return this.settingService.getConfigValue('
|
|
925
|
+
return this.settingService.getConfigValue('passwordLessAuth');
|
|
883
926
|
}
|
|
884
927
|
async logout(refreshToken) {
|
|
885
928
|
try {
|
|
@@ -937,20 +980,19 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
937
980
|
exports.AuthenticationService = AuthenticationService;
|
|
938
981
|
exports.AuthenticationService = AuthenticationService = AuthenticationService_1 = __decorate([
|
|
939
982
|
(0, common_1.Injectable)(),
|
|
940
|
-
__param(
|
|
941
|
-
__param(5, (0, common_1.Inject)(iam_config_1.iamConfig.KEY)),
|
|
942
|
-
__param(13, (0, common_1.Inject)(common_config_1.default.KEY)),
|
|
943
|
-
__param(15, (0, typeorm_1.InjectDataSource)()),
|
|
983
|
+
__param(12, (0, typeorm_1.InjectDataSource)()),
|
|
944
984
|
__metadata("design:paramtypes", [user_service_1.UserService,
|
|
945
985
|
user_repository_1.UserRepository,
|
|
946
986
|
hashing_service_1.HashingService,
|
|
947
|
-
jwt_1.JwtService,
|
|
987
|
+
jwt_1.JwtService,
|
|
988
|
+
refresh_token_ids_storage_service_1.RefreshTokenIdsStorageService,
|
|
948
989
|
axios_1.HttpService,
|
|
949
990
|
mail_factory_1.MailFactory,
|
|
950
991
|
sms_factory_1.SmsFactory,
|
|
951
992
|
event_emitter_1.EventEmitter2,
|
|
952
993
|
setting_service_1.SettingService,
|
|
953
|
-
role_metadata_service_1.RoleMetadataService,
|
|
994
|
+
role_metadata_service_1.RoleMetadataService,
|
|
995
|
+
user_activity_history_service_1.UserActivityHistoryService,
|
|
954
996
|
typeorm_2.DataSource])
|
|
955
997
|
], AuthenticationService);
|
|
956
998
|
function parseUniqueConstraintError(detail) {
|