@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.
- 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 +2 -11
- 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/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-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-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/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/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/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/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/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 +23 -23
- package/dist/seeders/module-metadata-seeder.service.js.map +1 -1
- package/dist/seeders/seed-data/solid-core-metadata.json +98 -4
- 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/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 +159 -114
- 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/file-service.interface.d.ts +22 -0
- package/dist/services/file/file-service.interface.d.ts.map +1 -0
- package/dist/services/file/file-service.interface.js +5 -0
- package/dist/services/file/file-service.interface.js.map +1 -0
- 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 +11 -12
- 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/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/selection-providers/list-of-roles-selectionproviders.service.d.ts +15 -0
- package/dist/services/selection-providers/list-of-roles-selectionproviders.service.d.ts.map +1 -0
- package/dist/services/selection-providers/list-of-roles-selectionproviders.service.js +59 -0
- package/dist/services/selection-providers/list-of-roles-selectionproviders.service.js.map +1 -0
- 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 +11 -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/package.json +1 -1
- package/src/commands/info.command.ts +101 -0
- package/src/commands/mcp.command.ts +3 -17
- package/src/commands/seed.command.ts +4 -16
- 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/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-setting.dto.ts +14 -1
- package/src/dtos/update-setting.dto.ts +14 -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/cors.helper.ts +3 -3
- package/src/helpers/error-mapper.service.ts +0 -1
- package/src/helpers/google-oauth.helper.ts +11 -7
- package/src/helpers/module.helper.ts +2 -2
- 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/seeders/email-template-seeder.service.ts +6 -4
- package/src/seeders/module-metadata-seeder.service.ts +40 -28
- package/src/seeders/seed-data/solid-core-metadata.json +99 -5
- package/src/seeders/sms-template-seeder.service.ts +6 -4
- package/src/services/action-metadata.service.ts +4 -16
- package/src/services/ai-interaction.service.ts +6 -17
- package/src/services/authentication.service.ts +173 -111
- 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/file-service.interface.ts +74 -0
- package/src/services/file.service.ts +10 -7
- 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/security-rule.service.ts +4 -16
- package/src/services/selection-providers/list-of-roles-selectionproviders.service.ts +69 -0
- 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 +19 -49
- package/src/transformers/typeorm/local-date-time-transformer.ts +10 -5
- 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/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,18 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
124
112
|
return user;
|
|
125
113
|
}
|
|
126
114
|
async signUp(signUpDto, activeUser = null) {
|
|
127
|
-
if (!(
|
|
115
|
+
if (!(this.settingService.getConfigValue('allowPublicRegistration')) && !activeUser) {
|
|
128
116
|
throw new common_1.BadRequestException(error_messages_1.ERROR_MESSAGES.PUBLIC_REGISTRATION_DISABLED);
|
|
129
117
|
}
|
|
130
118
|
try {
|
|
131
|
-
const onForcePasswordChange =
|
|
132
|
-
|
|
119
|
+
const onForcePasswordChange = this.settingService.getConfigValue('forceChangePasswordOnFirstLogin');
|
|
120
|
+
const activateUserOnRegistration = this.settingService.getConfigValue('activateUserOnRegistration');
|
|
121
|
+
const defaultRole = this.settingService.getConfigValue('defaultRole');
|
|
122
|
+
var { user, pwd, autoGeneratedPwd } = await this.populateForSignup(new user_entity_1.User(), signUpDto, activateUserOnRegistration, onForcePasswordChange);
|
|
133
123
|
const savedUser = await this.userRepository.save(user);
|
|
134
124
|
const userRoles = signUpDto.roles ?? [];
|
|
135
|
-
if (signUpDto.username !== 'sa' &&
|
|
136
|
-
userRoles.push(
|
|
125
|
+
if (signUpDto.username !== 'sa' && defaultRole) {
|
|
126
|
+
userRoles.push(defaultRole);
|
|
137
127
|
}
|
|
138
128
|
await this.handlePostSignup(savedUser, userRoles, pwd, autoGeneratedPwd);
|
|
139
129
|
return savedUser;
|
|
@@ -148,7 +138,7 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
148
138
|
}
|
|
149
139
|
async signupForExtensionUser(signUpDto, extensionUserDto, extensionUserRepo) {
|
|
150
140
|
try {
|
|
151
|
-
const onForcePasswordChange =
|
|
141
|
+
const onForcePasswordChange = this.settingService.getConfigValue('forceChangePasswordOnFirstLogin');
|
|
152
142
|
const extensionUser = extensionUserRepo.merge(extensionUserRepo.create(), extensionUserDto);
|
|
153
143
|
var { user, pwd, autoGeneratedPwd } = await this.populateForSignup(extensionUser, signUpDto, extensionUserDto.active ?? true, onForcePasswordChange);
|
|
154
144
|
const savedUser = await extensionUserRepo.save(user);
|
|
@@ -164,7 +154,7 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
164
154
|
}
|
|
165
155
|
}
|
|
166
156
|
async populateForSignup(user, signUpDto, isUserActive = true, onForcePasswordChange) {
|
|
167
|
-
let autoGeneratedPwdPermission =
|
|
157
|
+
let autoGeneratedPwdPermission = this.settingService.getConfigValue('iamAutoGeneratedPassword');
|
|
168
158
|
if (signUpDto.roles && signUpDto.roles.length > 0) {
|
|
169
159
|
for (let i = 0; i < signUpDto.roles.length; i++) {
|
|
170
160
|
const roleName = signUpDto.roles[i];
|
|
@@ -190,7 +180,7 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
190
180
|
user.forcePasswordChange = true;
|
|
191
181
|
}
|
|
192
182
|
else {
|
|
193
|
-
if (!this.isPasswordlessRegistrationEnabled()) {
|
|
183
|
+
if (!await this.isPasswordlessRegistrationEnabled()) {
|
|
194
184
|
this.logger.error('User being created without password, and password less login is also not enabled in the system. Is this intentional?');
|
|
195
185
|
throw new common_1.BadRequestException(error_messages_1.ERROR_MESSAGES.PASSWORDLESS_REGISTRATION_DISABLED);
|
|
196
186
|
}
|
|
@@ -206,7 +196,7 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
206
196
|
async handlePostSignup(user, roles = [], pwd, autoGeneratedPwd) {
|
|
207
197
|
await this.userService.initializeRolesForNewUser(roles, user);
|
|
208
198
|
if (user.forcePasswordChange && autoGeneratedPwd) {
|
|
209
|
-
this.notifyUserOnForcePasswordChange(user, autoGeneratedPwd);
|
|
199
|
+
await this.notifyUserOnForcePasswordChange(user, autoGeneratedPwd);
|
|
210
200
|
}
|
|
211
201
|
await this.notifyUserOnSignup(user);
|
|
212
202
|
}
|
|
@@ -227,49 +217,53 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
227
217
|
const companyLogo = await this.getCompanyLogo();
|
|
228
218
|
const mailService = this.mailServiceFactory.getMailService();
|
|
229
219
|
mailService.sendEmailUsingTemplate(user.email, 'on-force-password-change', {
|
|
230
|
-
solidAppName:
|
|
231
|
-
solidAppWebsiteUrl:
|
|
232
|
-
frontendLoginPageUrl:
|
|
220
|
+
solidAppName: this.settingService.getConfigValue('appTitle'),
|
|
221
|
+
solidAppWebsiteUrl: this.settingService.getConfigValue('solidAppWebsiteUrl'),
|
|
222
|
+
frontendLoginPageUrl: this.settingService.getConfigValue('frontendLoginPageUrl'),
|
|
233
223
|
email: user.email,
|
|
234
224
|
fullName: user.fullName,
|
|
235
225
|
userName: user.username,
|
|
236
226
|
password: autoGeneratedPwd,
|
|
237
227
|
companyLogoUrl: companyLogo
|
|
238
|
-
}, this.
|
|
228
|
+
}, this.settingService.getConfigValue('shouldQueueEmails'), null, null, 'user', user.id);
|
|
239
229
|
}
|
|
240
|
-
isWelcomeEmailEnabled() {
|
|
241
|
-
|
|
230
|
+
async isWelcomeEmailEnabled() {
|
|
231
|
+
const sendWelcomeEmailOnSignup = this.settingService.getConfigValue('sendWelcomeEmailOnSignup');
|
|
232
|
+
return sendWelcomeEmailOnSignup;
|
|
242
233
|
}
|
|
243
|
-
isWelcomeSmsEnabled() {
|
|
244
|
-
|
|
234
|
+
async isWelcomeSmsEnabled() {
|
|
235
|
+
const sendWelcomeSmsOnSignup = this.settingService.getConfigValue('sendWelcomeSmsOnSignup');
|
|
236
|
+
return sendWelcomeSmsOnSignup;
|
|
245
237
|
}
|
|
246
238
|
async notifyUserOnSignup(user) {
|
|
247
239
|
const companyLogo = await this.getCompanyLogo();
|
|
248
|
-
if (this.isWelcomeEmailEnabled()) {
|
|
240
|
+
if (await this.isWelcomeEmailEnabled()) {
|
|
249
241
|
const mailService = this.mailServiceFactory.getMailService();
|
|
250
242
|
mailService.sendEmailUsingTemplate(user.email, 'email-on-signup', {
|
|
251
|
-
solidAppName:
|
|
252
|
-
solidAppWebsiteUrl:
|
|
253
|
-
frontendLoginPageUrl:
|
|
243
|
+
solidAppName: this.settingService.getConfigValue('appTitle'),
|
|
244
|
+
solidAppWebsiteUrl: this.settingService.getConfigValue('solidAppWebsiteUrl'),
|
|
245
|
+
frontendLoginPageUrl: this.settingService.getConfigValue('frontendLoginPageUrl'),
|
|
254
246
|
email: user.email,
|
|
255
247
|
fullName: user.fullName,
|
|
256
248
|
userName: user.username,
|
|
257
249
|
companyLogoUrl: companyLogo
|
|
258
|
-
}, this.
|
|
250
|
+
}, this.settingService.getConfigValue('shouldQueueEmails'), null, null, 'user', user.id);
|
|
259
251
|
}
|
|
260
|
-
|
|
252
|
+
const isWelcomeSmsEnabled = await this.isWelcomeSmsEnabled();
|
|
253
|
+
if (isWelcomeSmsEnabled && user.mobile) {
|
|
261
254
|
const smsService = this.smsFactory.getSmsService();
|
|
262
255
|
smsService.sendSMSUsingTemplate(user.mobile, 'text-on-signup', {
|
|
263
|
-
solidAppName:
|
|
264
|
-
frontendLoginPageUrl:
|
|
256
|
+
solidAppName: this.settingService.getConfigValue('appTitle'),
|
|
257
|
+
frontendLoginPageUrl: this.settingService.getConfigValue('frontendLoginPageUrl'),
|
|
265
258
|
firstName: user.username,
|
|
266
259
|
fullName: user.fullName ? user.fullName : user.username
|
|
267
|
-
}, this.
|
|
260
|
+
}, this.settingService.getConfigValue('shouldQueueSms'));
|
|
268
261
|
}
|
|
269
262
|
}
|
|
270
263
|
async otpInitiateRegistration(signUpDto) {
|
|
271
264
|
try {
|
|
272
|
-
|
|
265
|
+
const isPasswordlessRegistrationEnabled = await this.isPasswordlessRegistrationEnabled();
|
|
266
|
+
if (!isPasswordlessRegistrationEnabled) {
|
|
273
267
|
throw new common_1.BadRequestException(error_messages_1.ERROR_MESSAGES.PASSWORDLESS_REGISTRATION_DISABLED);
|
|
274
268
|
}
|
|
275
269
|
if ((0, class_validator_1.isEmpty)(signUpDto.mobile) && (0, class_validator_1.isEmpty)(signUpDto.email)) {
|
|
@@ -291,19 +285,20 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
291
285
|
if ((0, class_validator_1.isNotEmpty)(existingUser) && existingUser.active) {
|
|
292
286
|
throw new common_1.ConflictException(error_messages_1.ERROR_MESSAGES.USER_ALREADY_EXISTS);
|
|
293
287
|
}
|
|
294
|
-
const
|
|
288
|
+
const passwordlessRegistrationValidateWhat = this.settingService.getConfigValue('passwordlessRegistrationValidateWhat');
|
|
289
|
+
const finalRegistrationVerificationSources = this.calculateVerificationSources(passwordlessRegistrationValidateWhat, signUpDto);
|
|
295
290
|
let user = existingUser;
|
|
296
291
|
if ((0, class_validator_1.isEmpty)(user)) {
|
|
297
292
|
user = this.createUser(signUpDto);
|
|
298
|
-
this.populateVerificationTokens(finalRegistrationVerificationSources, user);
|
|
293
|
+
await this.populateVerificationTokens(finalRegistrationVerificationSources, user);
|
|
299
294
|
await this.userRepository.save(user);
|
|
300
|
-
await this.userService.addRoleToUser(user.username,
|
|
295
|
+
await this.userService.addRoleToUser(user.username, this.settingService.getConfigValue('defaultRole'));
|
|
301
296
|
}
|
|
302
297
|
else {
|
|
303
|
-
this.populateVerificationTokens(finalRegistrationVerificationSources, user);
|
|
298
|
+
await this.populateVerificationTokens(finalRegistrationVerificationSources, user);
|
|
304
299
|
await this.userRepository.save(user);
|
|
305
300
|
}
|
|
306
|
-
this.notifyUserOnOtpInitiateRegistration(user, finalRegistrationVerificationSources);
|
|
301
|
+
await this.notifyUserOnOtpInitiateRegistration(user, finalRegistrationVerificationSources);
|
|
307
302
|
return { message: success_messages_1.SUCCESS_MESSAGES.OTP_SENT_SUCCESS_REGISTRATION };
|
|
308
303
|
}
|
|
309
304
|
catch (err) {
|
|
@@ -330,24 +325,26 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
330
325
|
}
|
|
331
326
|
return finalRegistrationValidationSources;
|
|
332
327
|
}
|
|
333
|
-
populateVerificationTokens(finalRegistrationValidationSources, user) {
|
|
328
|
+
async populateVerificationTokens(finalRegistrationValidationSources, user) {
|
|
334
329
|
if (finalRegistrationValidationSources.length === 0) {
|
|
335
330
|
throw new common_1.BadRequestException(error_messages_1.ERROR_MESSAGES.VALIDATION_SOURCE_REQUIRED);
|
|
336
331
|
}
|
|
337
332
|
if (finalRegistrationValidationSources.includes(constants_1.TransactionalRegistrationValidationSource.EMAIL)) {
|
|
338
|
-
const { token, expiresAt } = this.otp();
|
|
333
|
+
const { token, expiresAt } = await this.otp();
|
|
339
334
|
user.emailVerificationTokenOnRegistration = token;
|
|
340
335
|
user.emailVerificationTokenOnRegistrationExpiresAt = expiresAt;
|
|
341
|
-
|
|
336
|
+
const autoLoginUserOnRegistration = this.settingService.getConfigValue('autoLoginUserOnRegistration');
|
|
337
|
+
if (autoLoginUserOnRegistration) {
|
|
342
338
|
user.emailVerificationTokenOnLogin = token;
|
|
343
339
|
user.emailVerificationTokenOnLoginExpiresAt = expiresAt;
|
|
344
340
|
}
|
|
345
341
|
}
|
|
346
342
|
if (finalRegistrationValidationSources.includes(constants_1.TransactionalRegistrationValidationSource.MOBILE)) {
|
|
347
|
-
const { token, expiresAt } = this.otp();
|
|
343
|
+
const { token, expiresAt } = await this.otp();
|
|
348
344
|
user.mobileVerificationTokenOnRegistration = token;
|
|
349
345
|
user.mobileVerificationTokenOnRegistrationExpiresAt = expiresAt;
|
|
350
|
-
|
|
346
|
+
const autoLoginUserOnRegistration = this.settingService.getConfigValue('autoLoginUserOnRegistration');
|
|
347
|
+
if (autoLoginUserOnRegistration) {
|
|
351
348
|
user.mobileVerificationTokenOnLogin = token;
|
|
352
349
|
user.mobileVerificationTokenOnLoginExpiresAt = expiresAt;
|
|
353
350
|
}
|
|
@@ -355,33 +352,35 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
355
352
|
}
|
|
356
353
|
async notifyUserOnOtpInitiateRegistration(user, registrationValidationSources) {
|
|
357
354
|
const companyLogo = await this.getCompanyLogo();
|
|
358
|
-
|
|
355
|
+
const dummyOtp = this.settingService.getConfigValue('dummyOtp');
|
|
356
|
+
if (dummyOtp)
|
|
359
357
|
return;
|
|
360
358
|
if (registrationValidationSources.includes(constants_1.RegistrationValidationSource.EMAIL)) {
|
|
361
359
|
const mailService = this.mailServiceFactory.getMailService();
|
|
362
360
|
mailService.sendEmailUsingTemplate(user.email, 'otp-on-register', {
|
|
363
|
-
solidAppName:
|
|
364
|
-
solidAppWebsiteUrl:
|
|
361
|
+
solidAppName: this.settingService.getConfigValue('appTitle'),
|
|
362
|
+
solidAppWebsiteUrl: this.settingService.getConfigValue('solidAppWebsiteUrl'),
|
|
365
363
|
firstName: user.username,
|
|
366
364
|
fullName: user.fullName ? user.fullName : user.username,
|
|
367
365
|
emailVerificationTokenOnRegistration: user.emailVerificationTokenOnRegistration,
|
|
368
366
|
companyLogoUrl: companyLogo
|
|
369
|
-
}, this.
|
|
367
|
+
}, this.settingService.getConfigValue('shouldQueueEmails'), null, null, 'user', user.id);
|
|
370
368
|
}
|
|
371
369
|
if (registrationValidationSources.includes(constants_1.RegistrationValidationSource.MOBILE)) {
|
|
372
370
|
const smsService = this.smsFactory.getSmsService();
|
|
373
371
|
smsService.sendSMSUsingTemplate(user.mobile, 'otp-on-register', {
|
|
374
|
-
solidAppName:
|
|
372
|
+
solidAppName: this.settingService.getConfigValue('appTitle'),
|
|
375
373
|
otp: user.mobileVerificationTokenOnRegistration,
|
|
376
374
|
mobileVerificationTokenOnRegistration: user.mobileVerificationTokenOnRegistration,
|
|
377
375
|
firstName: user.username,
|
|
378
376
|
fullName: user.fullName ? user.fullName : user.username,
|
|
379
377
|
companyLogoUrl: companyLogo
|
|
380
|
-
}, this.
|
|
378
|
+
}, this.settingService.getConfigValue('shouldQueueSms'));
|
|
381
379
|
}
|
|
382
380
|
}
|
|
383
381
|
async otpConfirmRegistration(confirmSignUpDto) {
|
|
384
|
-
|
|
382
|
+
const isPasswordlessRegistrationEnabled = await this.isPasswordlessRegistrationEnabled();
|
|
383
|
+
if (!isPasswordlessRegistrationEnabled) {
|
|
385
384
|
throw new common_1.BadRequestException(error_messages_1.ERROR_MESSAGES.PASSWORDLESS_REGISTRATION_DISABLED);
|
|
386
385
|
}
|
|
387
386
|
if (confirmSignUpDto.type === constants_1.RegistrationValidationSource.EMAIL) {
|
|
@@ -402,7 +401,7 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
402
401
|
user.emailVerifiedOnRegistrationAt = new Date();
|
|
403
402
|
user.emailVerificationTokenOnRegistration = null;
|
|
404
403
|
user.emailVerificationTokenOnRegistrationExpiresAt = null;
|
|
405
|
-
user.active =
|
|
404
|
+
user.active = this.settingService.getConfigValue('activateUserOnRegistration') && await this.areRegistrationValidationSourcesVerified(user);
|
|
406
405
|
const savedUser = await this.userRepository.save(user);
|
|
407
406
|
this.triggerRegistrationEvent(savedUser);
|
|
408
407
|
return { active: savedUser.active, message: `User registration verified for ${confirmSignUpDto.type}` };
|
|
@@ -425,7 +424,7 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
425
424
|
user.mobileVerifiedOnRegistrationAt = new Date();
|
|
426
425
|
user.mobileVerificationTokenOnRegistration = null;
|
|
427
426
|
user.mobileVerificationTokenOnRegistrationExpiresAt = null;
|
|
428
|
-
user.active =
|
|
427
|
+
user.active = this.settingService.getConfigValue('activateUserOnRegistration') && await this.areRegistrationValidationSourcesVerified(user);
|
|
429
428
|
const savedUser = await this.userRepository.save(user);
|
|
430
429
|
this.triggerRegistrationEvent(savedUser);
|
|
431
430
|
return { active: savedUser.active, message: `User registration verified for ${confirmSignUpDto.type}` };
|
|
@@ -436,8 +435,9 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
436
435
|
const event = new interfaces_1.EventDetails(interfaces_1.EventType.USER_REGISTERED, savedUser);
|
|
437
436
|
this.eventEmitter.emit(interfaces_1.EventType.USER_REGISTERED, event);
|
|
438
437
|
}
|
|
439
|
-
areRegistrationValidationSourcesVerified(user) {
|
|
440
|
-
const
|
|
438
|
+
async areRegistrationValidationSourcesVerified(user) {
|
|
439
|
+
const passwordlessRegistrationValidateWhat = this.settingService.getConfigValue('passwordlessRegistrationValidateWhat');
|
|
440
|
+
const registrationValidationSources = passwordlessRegistrationValidateWhat;
|
|
441
441
|
if (registrationValidationSources.includes(constants_1.RegistrationValidationSource.EMAIL)) {
|
|
442
442
|
if (!user.emailVerifiedOnRegistrationAt) {
|
|
443
443
|
return false;
|
|
@@ -450,11 +450,13 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
450
450
|
}
|
|
451
451
|
return true;
|
|
452
452
|
}
|
|
453
|
-
otp() {
|
|
453
|
+
async otp() {
|
|
454
454
|
const now = new Date();
|
|
455
|
-
|
|
455
|
+
const otpExpiry = this.settingService.getConfigValue('otpExpiry');
|
|
456
|
+
const dummyOtp = this.settingService.getConfigValue('dummyOtp');
|
|
457
|
+
now.setMinutes(now.getMinutes() + otpExpiry);
|
|
456
458
|
return {
|
|
457
|
-
token:
|
|
459
|
+
token: dummyOtp ? dummyOtp : (0, crypto_1.randomInt)(100000, 999999).toString(),
|
|
458
460
|
expiresAt: now,
|
|
459
461
|
};
|
|
460
462
|
}
|
|
@@ -474,8 +476,29 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
474
476
|
...tokens
|
|
475
477
|
};
|
|
476
478
|
}
|
|
479
|
+
maskEmail(email) {
|
|
480
|
+
if (!email)
|
|
481
|
+
return null;
|
|
482
|
+
const [localPart, domain] = email.split('@');
|
|
483
|
+
if (localPart.length <= 2) {
|
|
484
|
+
return `${localPart[0]}***@${domain}`;
|
|
485
|
+
}
|
|
486
|
+
const visibleStart = localPart.slice(0, 2);
|
|
487
|
+
const visibleEnd = localPart.slice(-1);
|
|
488
|
+
return `${visibleStart}***${visibleEnd}@${domain}`;
|
|
489
|
+
}
|
|
490
|
+
maskMobile(mobile) {
|
|
491
|
+
if (!mobile)
|
|
492
|
+
return null;
|
|
493
|
+
if (mobile.length <= 4) {
|
|
494
|
+
return mobile;
|
|
495
|
+
}
|
|
496
|
+
const visibleEnd = mobile.slice(-4);
|
|
497
|
+
return `***${visibleEnd}`;
|
|
498
|
+
}
|
|
477
499
|
async otpInitiateLogin(signInDto) {
|
|
478
|
-
|
|
500
|
+
const isPasswordlessRegistrationEnabled = await this.isPasswordlessRegistrationEnabled();
|
|
501
|
+
if (!isPasswordlessRegistrationEnabled) {
|
|
479
502
|
throw new common_1.BadRequestException(error_messages_1.ERROR_MESSAGES.PASSWORDLESS_REGISTRATION_DISABLED);
|
|
480
503
|
}
|
|
481
504
|
if (signInDto.type === constants_1.RegistrationValidationSource.EMAIL) {
|
|
@@ -491,11 +514,17 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
491
514
|
if (!user.active) {
|
|
492
515
|
throw new common_1.UnauthorizedException(error_messages_1.ERROR_MESSAGES.USER_INACTIVE);
|
|
493
516
|
}
|
|
494
|
-
const { token, expiresAt } = this.otp();
|
|
517
|
+
const { token, expiresAt } = await this.otp();
|
|
495
518
|
user.emailVerificationTokenOnLogin = token;
|
|
496
519
|
user.emailVerificationTokenOnLoginExpiresAt = expiresAt;
|
|
497
520
|
await this.userRepository.save(user);
|
|
498
521
|
this.notifyUserOnOtpInititateLogin(user, constants_1.RegistrationValidationSource.EMAIL);
|
|
522
|
+
return {
|
|
523
|
+
message: success_messages_1.SUCCESS_MESSAGES.OTP_SENT_SUCCESS_LOGIN,
|
|
524
|
+
user: {
|
|
525
|
+
email: this.maskEmail(user.email)
|
|
526
|
+
}
|
|
527
|
+
};
|
|
499
528
|
}
|
|
500
529
|
else if (signInDto.type === constants_1.RegistrationValidationSource.MOBILE) {
|
|
501
530
|
const user = await this.userRepository.findOne({
|
|
@@ -507,46 +536,53 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
507
536
|
if (!user) {
|
|
508
537
|
throw new common_1.UnauthorizedException(error_messages_1.ERROR_MESSAGES.USER_NOT_FOUND);
|
|
509
538
|
}
|
|
510
|
-
const { token, expiresAt } = this.otp();
|
|
539
|
+
const { token, expiresAt } = await this.otp();
|
|
511
540
|
user.mobileVerificationTokenOnLogin = token;
|
|
512
541
|
user.mobileVerificationTokenOnLoginExpiresAt = expiresAt;
|
|
513
542
|
await this.userRepository.save(user);
|
|
514
543
|
this.notifyUserOnOtpInititateLogin(user, constants_1.RegistrationValidationSource.MOBILE);
|
|
544
|
+
return {
|
|
545
|
+
message: success_messages_1.SUCCESS_MESSAGES.OTP_SENT_SUCCESS_LOGIN,
|
|
546
|
+
user: {
|
|
547
|
+
mobile: this.maskMobile(user.mobile)
|
|
548
|
+
}
|
|
549
|
+
};
|
|
515
550
|
}
|
|
516
551
|
else {
|
|
517
552
|
throw new common_1.BadRequestException(error_messages_1.ERROR_MESSAGES.INVALID_VERIFICATION_TYPE);
|
|
518
553
|
}
|
|
519
|
-
return { message: success_messages_1.SUCCESS_MESSAGES.OTP_SENT_SUCCESS_LOGIN };
|
|
520
554
|
}
|
|
521
555
|
async notifyUserOnOtpInititateLogin(user, loginType) {
|
|
522
556
|
const companyLogo = await this.getCompanyLogo();
|
|
523
|
-
|
|
557
|
+
const dummyOtp = this.settingService.getConfigValue('dummyOtp');
|
|
558
|
+
if (dummyOtp)
|
|
524
559
|
return;
|
|
525
560
|
if (loginType === constants_1.RegistrationValidationSource.EMAIL) {
|
|
526
561
|
const mailService = this.mailServiceFactory.getMailService();
|
|
527
562
|
mailService.sendEmailUsingTemplate(user.email, 'otp-on-login', {
|
|
528
|
-
solidAppName:
|
|
529
|
-
solidAppWebsiteUrl:
|
|
563
|
+
solidAppName: this.settingService.getConfigValue('appTitle'),
|
|
564
|
+
solidAppWebsiteUrl: this.settingService.getConfigValue('solidAppWebsiteUrl'),
|
|
530
565
|
firstName: user.username,
|
|
531
566
|
emailVerificationTokenOnLogin: user.emailVerificationTokenOnLogin,
|
|
532
567
|
fullName: user.fullName ? user.fullName : user.username,
|
|
533
568
|
companyLogoUrl: companyLogo
|
|
534
|
-
}, this.
|
|
569
|
+
}, this.settingService.getConfigValue('shouldQueueEmails'), null, null, 'user', user.id);
|
|
535
570
|
}
|
|
536
571
|
if (loginType === constants_1.RegistrationValidationSource.MOBILE) {
|
|
537
572
|
const smsService = this.smsFactory.getSmsService();
|
|
538
573
|
smsService.sendSMSUsingTemplate(user.mobile, 'otp-on-login', {
|
|
539
|
-
solidAppName:
|
|
574
|
+
solidAppName: this.settingService.getConfigValue('appTitle'),
|
|
540
575
|
otp: user.mobileVerificationTokenOnLogin,
|
|
541
576
|
mobileVerificationTokenOnLogin: user.mobileVerificationTokenOnLogin,
|
|
542
577
|
firstName: user.username,
|
|
543
578
|
fullName: user.fullName ? user.fullName : user.username,
|
|
544
579
|
companyLogoUrl: companyLogo
|
|
545
|
-
}, this.
|
|
580
|
+
}, this.settingService.getConfigValue('shouldQueueSms'));
|
|
546
581
|
}
|
|
547
582
|
}
|
|
548
583
|
async otpConfirmLogin(confirmSignInDto) {
|
|
549
|
-
|
|
584
|
+
const isPasswordlessRegistrationEnabled = await this.isPasswordlessRegistrationEnabled();
|
|
585
|
+
if (!isPasswordlessRegistrationEnabled) {
|
|
550
586
|
throw new common_1.BadRequestException(error_messages_1.ERROR_MESSAGES.PASSWORDLESS_REGISTRATION_DISABLED);
|
|
551
587
|
}
|
|
552
588
|
if (confirmSignInDto.type === constants_1.RegistrationValidationSource.EMAIL) {
|
|
@@ -645,12 +681,14 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
645
681
|
await this.userRepository.save(user);
|
|
646
682
|
return true;
|
|
647
683
|
}
|
|
648
|
-
generateForgotPasswordToken() {
|
|
684
|
+
async generateForgotPasswordToken() {
|
|
649
685
|
const expiryTime = new Date();
|
|
650
|
-
|
|
686
|
+
const forgotPasswordVerificationTokenExpiry = this.settingService.getConfigValue('forgotPasswordVerificationTokenExpiry');
|
|
687
|
+
const dummyOtp = this.settingService.getConfigValue('dummyOtp');
|
|
688
|
+
expiryTime.setMinutes(expiryTime.getMinutes() + forgotPasswordVerificationTokenExpiry);
|
|
651
689
|
return {
|
|
652
|
-
token:
|
|
653
|
-
?
|
|
690
|
+
token: dummyOtp
|
|
691
|
+
? dummyOtp
|
|
654
692
|
: (0, uuid_1.v4)(),
|
|
655
693
|
expiresAt: expiryTime,
|
|
656
694
|
};
|
|
@@ -668,11 +706,11 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
668
706
|
isValidUser = false;
|
|
669
707
|
}
|
|
670
708
|
if (isValidUser) {
|
|
671
|
-
const { token, expiresAt } = this.generateForgotPasswordToken();
|
|
709
|
+
const { token, expiresAt } = await this.generateForgotPasswordToken();
|
|
672
710
|
user.verificationTokenOnForgotPassword = token;
|
|
673
711
|
user.verificationTokenOnForgotPasswordExpiresAt = expiresAt;
|
|
674
712
|
await this.userRepository.save(user);
|
|
675
|
-
this.notifyUserOnForgotPassword(user);
|
|
713
|
+
await this.notifyUserOnForgotPassword(user);
|
|
676
714
|
}
|
|
677
715
|
return {
|
|
678
716
|
status: 'success',
|
|
@@ -688,27 +726,27 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
688
726
|
}
|
|
689
727
|
async notifyUserOnForgotPassword(user) {
|
|
690
728
|
const companyLogo = await this.getCompanyLogo();
|
|
691
|
-
const forgotPasswordSendVerificationTokenOn = this.
|
|
729
|
+
const forgotPasswordSendVerificationTokenOn = this.settingService.getConfigValue('forgotPasswordSendVerificationTokenOn');
|
|
692
730
|
if (forgotPasswordSendVerificationTokenOn == constants_1.ForgotPasswordSendVerificationTokenOn.EMAIL) {
|
|
693
731
|
const mailService = this.mailServiceFactory.getMailService();
|
|
694
732
|
mailService.sendEmailUsingTemplate(user.email, 'forgot-password', {
|
|
695
|
-
solidAppName:
|
|
696
|
-
solidAppWebsiteUrl:
|
|
733
|
+
solidAppName: this.settingService.getConfigValue('appTitle'),
|
|
734
|
+
solidAppWebsiteUrl: this.settingService.getConfigValue('solidAppWebsiteUrl'),
|
|
697
735
|
firstName: user.username,
|
|
698
736
|
fullName: user.fullName,
|
|
699
|
-
passwordResetLink: `${
|
|
737
|
+
passwordResetLink: `${this.settingService.getConfigValue('frontendForgotPasswordPageUrl')}?token=${user.verificationTokenOnForgotPassword}`,
|
|
700
738
|
companyLogoUrl: companyLogo
|
|
701
|
-
}, this.
|
|
739
|
+
}, this.settingService.getConfigValue('shouldQueueEmails'), null, null, 'user', user.id);
|
|
702
740
|
}
|
|
703
741
|
if (forgotPasswordSendVerificationTokenOn == constants_1.ForgotPasswordSendVerificationTokenOn.MOBILE && user.mobile) {
|
|
704
742
|
const smsService = this.smsFactory.getSmsService();
|
|
705
743
|
smsService.sendSMSUsingTemplate(user.mobile, 'forgot-password', {
|
|
706
|
-
solidAppName:
|
|
744
|
+
solidAppName: this.settingService.getConfigValue('appTitle'),
|
|
707
745
|
otp: user.verificationTokenOnForgotPassword,
|
|
708
746
|
verificationTokenOnForgotPassword: user.verificationTokenOnForgotPassword,
|
|
709
747
|
firstName: user.username,
|
|
710
748
|
companyLogoUrl: companyLogo
|
|
711
|
-
}, this.
|
|
749
|
+
}, this.settingService.getConfigValue('shouldQueueSms'));
|
|
712
750
|
}
|
|
713
751
|
}
|
|
714
752
|
async confirmForgotPassword(confirmForgotPasswordDto) {
|
|
@@ -739,7 +777,7 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
739
777
|
const pwdScheme = this.hashingService.name();
|
|
740
778
|
const pwdSchemeVersion = this.hashingService.currentVersion();
|
|
741
779
|
await m.getRepository(user_entity_1.User).update({ id: user.id }, { password: pwdHash, passwordScheme: pwdScheme, passwordSchemeVersion: pwdSchemeVersion });
|
|
742
|
-
this.notifyUserOnPasswordChanged(user);
|
|
780
|
+
await this.notifyUserOnPasswordChanged(user);
|
|
743
781
|
return {
|
|
744
782
|
status: 'success',
|
|
745
783
|
message: success_messages_1.SUCCESS_MESSAGES.FORGOT_PASSWORD_CONFIRMED,
|
|
@@ -751,34 +789,34 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
751
789
|
}
|
|
752
790
|
async notifyUserOnPasswordChanged(user) {
|
|
753
791
|
const companyLogo = await this.getCompanyLogo();
|
|
754
|
-
const forgotPasswordSendVerificationTokenOn = this.
|
|
792
|
+
const forgotPasswordSendVerificationTokenOn = this.settingService.getConfigValue('forgotPasswordSendVerificationTokenOn');
|
|
755
793
|
if (forgotPasswordSendVerificationTokenOn == constants_1.ForgotPasswordSendVerificationTokenOn.EMAIL) {
|
|
756
794
|
const mailService = this.mailServiceFactory.getMailService();
|
|
757
795
|
mailService.sendEmailUsingTemplate(user.email, 'password-changed', {
|
|
758
|
-
solidAppName:
|
|
759
|
-
solidAppWebsiteUrl:
|
|
796
|
+
solidAppName: this.settingService.getConfigValue('appTitle'),
|
|
797
|
+
solidAppWebsiteUrl: this.settingService.getConfigValue('solidAppWebsiteUrl'),
|
|
760
798
|
email: user.email,
|
|
761
799
|
firstName: user.username,
|
|
762
800
|
fullName: user.fullName,
|
|
763
|
-
passwordResetLink: `${
|
|
801
|
+
passwordResetLink: `${this.settingService.getConfigValue('frontendForgotPasswordPageUrl')}?token=${user.verificationTokenOnForgotPassword}`,
|
|
764
802
|
companyLogoUrl: companyLogo
|
|
765
|
-
}, this.
|
|
803
|
+
}, this.settingService.getConfigValue('shouldQueueEmails'), null, null, 'user', user.id);
|
|
766
804
|
}
|
|
767
805
|
if (forgotPasswordSendVerificationTokenOn == constants_1.ForgotPasswordSendVerificationTokenOn.MOBILE && user.mobile) {
|
|
768
806
|
const smsService = this.smsFactory.getSmsService();
|
|
769
807
|
smsService.sendSMSUsingTemplate(user.mobile, 'forgot-password', {
|
|
770
|
-
solidAppName:
|
|
808
|
+
solidAppName: this.settingService.getConfigValue('appTitle'),
|
|
771
809
|
otp: user.verificationTokenOnForgotPassword,
|
|
772
810
|
verificationTokenOnForgotPassword: user.verificationTokenOnForgotPassword,
|
|
773
811
|
firstName: user.username,
|
|
774
812
|
companyLogoUrl: companyLogo
|
|
775
|
-
}, this.
|
|
813
|
+
}, this.settingService.getConfigValue('shouldQueueSms'));
|
|
776
814
|
}
|
|
777
815
|
}
|
|
778
816
|
async generateTokens(user) {
|
|
779
817
|
const [accessToken, refreshToken] = await Promise.all([
|
|
780
|
-
this.generateAccessToken(user),
|
|
781
|
-
this.generateRefreshToken(user),
|
|
818
|
+
await this.generateAccessToken(user),
|
|
819
|
+
await this.generateRefreshToken(user),
|
|
782
820
|
]);
|
|
783
821
|
return {
|
|
784
822
|
accessToken,
|
|
@@ -787,12 +825,14 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
787
825
|
}
|
|
788
826
|
async generateAccessToken(user) {
|
|
789
827
|
const userRoleNames = user.roles.map((role) => role.name);
|
|
790
|
-
const
|
|
828
|
+
const accessTokenTtl = this.settingService.getConfigValue("accessTokenTtl");
|
|
829
|
+
const accessToken = await this.signToken(user.id, accessTokenTtl, { username: user.username, email: user.email, roles: userRoleNames });
|
|
791
830
|
return accessToken;
|
|
792
831
|
}
|
|
793
832
|
async generateRefreshToken(user, previousRefreshToken) {
|
|
794
833
|
const refreshTokenId = (0, crypto_1.randomUUID)();
|
|
795
|
-
const
|
|
834
|
+
const refreshTokenTtl = this.settingService.getConfigValue("refreshTokenTtl");
|
|
835
|
+
const refreshToken = await this.signToken(user.id, refreshTokenTtl, {
|
|
796
836
|
refreshTokenId,
|
|
797
837
|
});
|
|
798
838
|
await this.refreshTokenIdsStorage.insert(user.id, refreshToken, previousRefreshToken);
|
|
@@ -800,10 +840,13 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
800
840
|
}
|
|
801
841
|
async refreshTokens(refreshTokenDto) {
|
|
802
842
|
try {
|
|
843
|
+
const secret = this.settingService.getConfigValue("secret");
|
|
844
|
+
const audience = this.settingService.getConfigValue("audience");
|
|
845
|
+
const issuer = this.settingService.getConfigValue("issuer");
|
|
803
846
|
const { sub } = await this.jwtService.verifyAsync(refreshTokenDto.refreshToken, {
|
|
804
|
-
secret
|
|
805
|
-
audience
|
|
806
|
-
issuer
|
|
847
|
+
secret,
|
|
848
|
+
audience,
|
|
849
|
+
issuer,
|
|
807
850
|
});
|
|
808
851
|
const user = await this.userRepository.findOne({
|
|
809
852
|
where: {
|
|
@@ -831,13 +874,16 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
831
874
|
}
|
|
832
875
|
}
|
|
833
876
|
async signToken(userId, expiresIn, payload) {
|
|
877
|
+
const audience = this.settingService.getConfigValue("audience");
|
|
878
|
+
const issuer = this.settingService.getConfigValue("issuer");
|
|
879
|
+
const secret = this.settingService.getConfigValue("secret");
|
|
834
880
|
return await this.jwtService.signAsync({
|
|
835
881
|
sub: userId,
|
|
836
882
|
...payload,
|
|
837
883
|
}, {
|
|
838
|
-
audience
|
|
839
|
-
issuer
|
|
840
|
-
secret
|
|
884
|
+
audience,
|
|
885
|
+
issuer,
|
|
886
|
+
secret,
|
|
841
887
|
expiresIn,
|
|
842
888
|
});
|
|
843
889
|
}
|
|
@@ -879,7 +925,7 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
879
925
|
};
|
|
880
926
|
}
|
|
881
927
|
async isPasswordlessRegistrationEnabled() {
|
|
882
|
-
return this.settingService.getConfigValue('
|
|
928
|
+
return this.settingService.getConfigValue('passwordLessAuth');
|
|
883
929
|
}
|
|
884
930
|
async logout(refreshToken) {
|
|
885
931
|
try {
|
|
@@ -937,20 +983,19 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
937
983
|
exports.AuthenticationService = AuthenticationService;
|
|
938
984
|
exports.AuthenticationService = AuthenticationService = AuthenticationService_1 = __decorate([
|
|
939
985
|
(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)()),
|
|
986
|
+
__param(12, (0, typeorm_1.InjectDataSource)()),
|
|
944
987
|
__metadata("design:paramtypes", [user_service_1.UserService,
|
|
945
988
|
user_repository_1.UserRepository,
|
|
946
989
|
hashing_service_1.HashingService,
|
|
947
|
-
jwt_1.JwtService,
|
|
990
|
+
jwt_1.JwtService,
|
|
991
|
+
refresh_token_ids_storage_service_1.RefreshTokenIdsStorageService,
|
|
948
992
|
axios_1.HttpService,
|
|
949
993
|
mail_factory_1.MailFactory,
|
|
950
994
|
sms_factory_1.SmsFactory,
|
|
951
995
|
event_emitter_1.EventEmitter2,
|
|
952
996
|
setting_service_1.SettingService,
|
|
953
|
-
role_metadata_service_1.RoleMetadataService,
|
|
997
|
+
role_metadata_service_1.RoleMetadataService,
|
|
998
|
+
user_activity_history_service_1.UserActivityHistoryService,
|
|
954
999
|
typeorm_2.DataSource])
|
|
955
1000
|
], AuthenticationService);
|
|
956
1001
|
function parseUniqueConstraintError(detail) {
|