@solidxai/core 0.1.9-beta.0 → 0.1.9-beta.10
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/fixtures/fixtures-setup.command.d.ts +1 -1
- package/dist/commands/fixtures/fixtures-tear-down.command.d.ts +1 -1
- package/dist/commands/info.command.d.ts +3 -3
- package/dist/commands/ingest.command.d.ts +2 -2
- package/dist/commands/mcp.command.d.ts +1 -1
- package/dist/commands/refresh-model.command.d.ts +1 -1
- package/dist/commands/remove-fields.command.d.ts +1 -1
- package/dist/commands/run-tests.command.d.ts +1 -1
- package/dist/commands/seed.command.d.ts +1 -1
- package/dist/commands/test-data.command.d.ts +1 -1
- package/dist/constants/chatter-message.constants.d.ts +6 -0
- package/dist/constants/chatter-message.constants.d.ts.map +1 -1
- package/dist/constants/chatter-message.constants.js +7 -1
- package/dist/constants/chatter-message.constants.js.map +1 -1
- package/dist/controllers/action-metadata.controller.d.ts +1 -1
- package/dist/controllers/agent-event.controller.d.ts +3 -3
- package/dist/controllers/agent-session.controller.d.ts +3 -3
- package/dist/controllers/ai-interaction.controller.d.ts +1 -1
- package/dist/controllers/authentication.controller.d.ts +12 -0
- package/dist/controllers/authentication.controller.d.ts.map +1 -1
- package/dist/controllers/authentication.controller.js +13 -0
- package/dist/controllers/authentication.controller.js.map +1 -1
- package/dist/controllers/chatter-message.controller.d.ts +1 -0
- package/dist/controllers/chatter-message.controller.d.ts.map +1 -1
- package/dist/controllers/chatter-message.controller.js +12 -0
- package/dist/controllers/chatter-message.controller.js.map +1 -1
- package/dist/controllers/dashboard-layout.controller.d.ts +3 -3
- package/dist/controllers/dashboard-question.controller.d.ts +1 -1
- package/dist/controllers/dashboard.controller.d.ts +1 -1
- package/dist/controllers/export-template.controller.d.ts +2 -2
- package/dist/controllers/facebook-authentication.controller.d.ts +27 -0
- package/dist/controllers/facebook-authentication.controller.d.ts.map +1 -0
- package/dist/controllers/facebook-authentication.controller.js +117 -0
- package/dist/controllers/facebook-authentication.controller.js.map +1 -0
- package/dist/controllers/field-metadata.controller.d.ts +1 -1
- package/dist/controllers/google-authentication.controller.d.ts +1 -1
- package/dist/controllers/import-transaction.controller.d.ts +1 -1
- package/dist/controllers/locale.controller.d.ts +3 -3
- package/dist/controllers/media.controller.d.ts +3 -3
- package/dist/controllers/menu-item-metadata.controller.d.ts +3 -2
- package/dist/controllers/menu-item-metadata.controller.d.ts.map +1 -1
- package/dist/controllers/menu-item-metadata.controller.js +15 -0
- package/dist/controllers/menu-item-metadata.controller.js.map +1 -1
- package/dist/controllers/microsoft-authentication.controller.d.ts +27 -0
- package/dist/controllers/microsoft-authentication.controller.d.ts.map +1 -0
- package/dist/controllers/microsoft-authentication.controller.js +118 -0
- package/dist/controllers/microsoft-authentication.controller.js.map +1 -0
- package/dist/controllers/model-metadata.controller.d.ts +1 -1
- package/dist/controllers/mq-message-queue.controller.d.ts +1 -1
- package/dist/controllers/mq-message.controller.d.ts +1 -1
- package/dist/controllers/otp-authentication.controller.js.map +1 -1
- package/dist/controllers/permission-metadata.controller.d.ts +1 -1
- package/dist/controllers/role-metadata.controller.d.ts +1 -1
- package/dist/controllers/scheduled-job.controller.d.ts +3 -3
- package/dist/controllers/service.controller.d.ts +4 -4
- package/dist/controllers/setting.controller.d.ts +3 -3
- package/dist/controllers/setting.controller.js +4 -4
- package/dist/controllers/setting.controller.js.map +1 -1
- package/dist/controllers/test-queue.controller.d.ts +1 -1
- package/dist/controllers/test.controller.d.ts +2 -2
- package/dist/controllers/user-view-metadata.controller.d.ts +2 -2
- package/dist/controllers/user.controller.d.ts +2 -2
- package/dist/controllers/view-metadata.controller.d.ts +2 -2
- package/dist/decorators/auth.decorator.d.ts.map +1 -1
- package/dist/decorators/computed-field-provider.decorator.d.ts.map +1 -1
- package/dist/decorators/dashboard-question-data-provider.decorator.d.ts.map +1 -1
- package/dist/decorators/dashboard-selection-provider.decorator.d.ts.map +1 -1
- package/dist/decorators/disallow-in-production.decorator.d.ts.map +1 -1
- package/dist/decorators/error-codes-provider.decorator.d.ts.map +1 -1
- package/dist/decorators/extension-user-creation-provider.decorator.d.ts +3 -0
- package/dist/decorators/extension-user-creation-provider.decorator.d.ts.map +1 -0
- package/dist/decorators/extension-user-creation-provider.decorator.js +7 -0
- package/dist/decorators/extension-user-creation-provider.decorator.js.map +1 -0
- package/dist/decorators/is-not-in-enum.decorator.d.ts.map +1 -1
- package/dist/decorators/mail-provider.decorator.d.ts.map +1 -1
- package/dist/decorators/roles.decorator.d.ts.map +1 -1
- package/dist/decorators/scheduled-job-provider.decorator.d.ts.map +1 -1
- package/dist/decorators/security-rule-config-provider.decorator.d.ts.map +1 -1
- package/dist/decorators/selection-provider.decorator.d.ts.map +1 -1
- package/dist/decorators/sms-provider.decorator.d.ts.map +1 -1
- package/dist/decorators/solid-database-module.decorator.d.ts.map +1 -1
- package/dist/decorators/solid-password.decorator.d.ts +1 -1
- package/dist/decorators/whatsapp-provider.decorator.d.ts.map +1 -1
- package/dist/dtos/create-chatter-message.dto.d.ts +1 -0
- package/dist/dtos/create-chatter-message.dto.d.ts.map +1 -1
- package/dist/dtos/create-chatter-message.dto.js +7 -1
- package/dist/dtos/create-chatter-message.dto.js.map +1 -1
- package/dist/dtos/create-dashboard-question.dto.d.ts +1 -1
- package/dist/dtos/create-dashboard.dto.d.ts +2 -2
- package/dist/dtos/create-field-metadata.dto.js +1 -2
- package/dist/dtos/create-field-metadata.dto.js.map +1 -1
- package/dist/dtos/create-import-transaction.dto.d.ts +1 -1
- package/dist/dtos/create-menu-item-metadata.dto.d.ts +1 -1
- package/dist/dtos/create-mq-message-queue.dto.d.ts +1 -1
- package/dist/dtos/create-permission-metadata.dto.d.ts +1 -1
- package/dist/dtos/create-role-metadata.dto.d.ts +3 -3
- package/dist/dtos/create-user.dto.d.ts +3 -2
- package/dist/dtos/create-user.dto.d.ts.map +1 -1
- package/dist/dtos/create-user.dto.js +8 -1
- package/dist/dtos/create-user.dto.js.map +1 -1
- package/dist/dtos/create-view-metadata.dto.d.ts +1 -1
- package/dist/dtos/dashboard-variable-selection-dynamic-query.dto.d.ts +1 -1
- package/dist/dtos/fetch-roles.dto.d.ts +1 -1
- package/dist/dtos/post-chatter-message.dto.d.ts +1 -0
- package/dist/dtos/post-chatter-message.dto.d.ts.map +1 -1
- package/dist/dtos/post-chatter-message.dto.js +6 -1
- package/dist/dtos/post-chatter-message.dto.js.map +1 -1
- package/dist/dtos/selection-dynamic-query.dto.d.ts +1 -1
- package/dist/dtos/solid-request-context.dto.d.ts +1 -1
- package/dist/dtos/sort-filter.dto.d.ts +1 -1
- package/dist/dtos/update-chatter-message.dto.d.ts +1 -0
- package/dist/dtos/update-chatter-message.dto.d.ts.map +1 -1
- package/dist/dtos/update-chatter-message.dto.js +7 -1
- package/dist/dtos/update-chatter-message.dto.js.map +1 -1
- package/dist/dtos/update-dashboard-question.dto.d.ts +1 -1
- package/dist/dtos/update-dashboard.dto.d.ts +2 -2
- package/dist/dtos/update-import-transaction.dto.d.ts +1 -1
- package/dist/dtos/update-menu-item-metadata.dto.d.ts +1 -1
- package/dist/dtos/update-mq-message-queue.dto.d.ts +1 -1
- package/dist/dtos/update-permission-metadata.dto.d.ts +1 -1
- package/dist/dtos/update-role-metadata.dto.d.ts +3 -3
- package/dist/dtos/update-user.dto.d.ts +3 -2
- package/dist/dtos/update-user.dto.d.ts.map +1 -1
- package/dist/dtos/update-user.dto.js +7 -1
- package/dist/dtos/update-user.dto.js.map +1 -1
- package/dist/dtos/update-view-metadata.dto.d.ts +1 -1
- package/dist/entities/action-metadata.entity.d.ts +4 -4
- package/dist/entities/agent-event.entity.d.ts +1 -1
- package/dist/entities/agent-event.entity.js +1 -1
- package/dist/entities/agent-event.entity.js.map +1 -1
- package/dist/entities/agent-session.entity.d.ts +1 -1
- package/dist/entities/ai-interaction.entity.d.ts +2 -2
- package/dist/entities/chatter-message-details.entity.d.ts +2 -2
- package/dist/entities/chatter-message.entity.d.ts +3 -2
- package/dist/entities/chatter-message.entity.d.ts.map +1 -1
- package/dist/entities/chatter-message.entity.js +5 -1
- package/dist/entities/chatter-message.entity.js.map +1 -1
- package/dist/entities/dashboard-layout.entity.d.ts +2 -2
- package/dist/entities/dashboard-question-sql-dataset-config.entity.d.ts +2 -2
- package/dist/entities/dashboard-question.entity.d.ts +3 -3
- package/dist/entities/dashboard-variable.entity.d.ts +2 -2
- package/dist/entities/dashboard.entity.d.ts +4 -4
- package/dist/entities/email-template.entity.d.ts +1 -1
- package/dist/entities/export-template.entity.d.ts +2 -2
- package/dist/entities/export-transaction.entity.d.ts +2 -2
- package/dist/entities/field-metadata.entity.d.ts +2 -2
- package/dist/entities/import-transaction-error-log.entity.d.ts +2 -2
- package/dist/entities/import-transaction.entity.d.ts +3 -3
- package/dist/entities/list-of-values.entity.d.ts +2 -2
- package/dist/entities/locale.entity.d.ts +1 -1
- package/dist/entities/media-storage-provider-metadata.entity.d.ts +1 -1
- package/dist/entities/media.entity.d.ts +4 -4
- package/dist/entities/menu-item-metadata.entity.d.ts +4 -4
- package/dist/entities/model-metadata.entity.d.ts +1 -1
- package/dist/entities/model-sequence.entity.d.ts +4 -4
- package/dist/entities/module-metadata.entity.d.ts +1 -1
- package/dist/entities/mq-message-queue.entity.d.ts +2 -2
- package/dist/entities/mq-message.entity.d.ts +2 -2
- package/dist/entities/permission-metadata.entity.d.ts +2 -2
- package/dist/entities/role-metadata.entity.d.ts +4 -4
- package/dist/entities/saved-filters.entity.d.ts +4 -4
- package/dist/entities/scheduled-job.entity.d.ts +1 -1
- package/dist/entities/security-rule.entity.d.ts +3 -3
- package/dist/entities/setting.entity.d.ts +2 -2
- package/dist/entities/sms-template.entity.d.ts +1 -1
- package/dist/entities/user-activity-history.entity.d.ts +2 -2
- package/dist/entities/user-api-key.entity.d.ts +1 -1
- package/dist/entities/user-view-metadata.entity.d.ts +3 -3
- package/dist/entities/user.entity.d.ts +12 -4
- package/dist/entities/user.entity.d.ts.map +1 -1
- package/dist/entities/user.entity.js +34 -1
- package/dist/entities/user.entity.js.map +1 -1
- package/dist/entities/view-metadata.entity.d.ts +4 -4
- package/dist/factories/mail.factory.d.ts +3 -3
- package/dist/factories/sms.factory.d.ts +3 -3
- package/dist/factories/whatsapp.factory.d.ts +3 -3
- package/dist/filters/http-exception.filter.d.ts +1 -1
- package/dist/guards/api-key.guard.d.ts +1 -1
- package/dist/helpers/bootstrap.helper.d.ts.map +1 -1
- package/dist/helpers/bootstrap.helper.js +4 -1
- package/dist/helpers/bootstrap.helper.js.map +1 -1
- package/dist/helpers/cors.helper.js +1 -1
- package/dist/helpers/cors.helper.js.map +1 -1
- package/dist/helpers/error-mapper.service.d.ts +2 -2
- package/dist/helpers/facebook-oauth.helper.d.ts +8 -0
- package/dist/helpers/facebook-oauth.helper.d.ts.map +1 -0
- package/dist/helpers/facebook-oauth.helper.js +11 -0
- package/dist/helpers/facebook-oauth.helper.js.map +1 -0
- package/dist/helpers/field-crud-managers/BigIntFieldCrudManager.d.ts +1 -1
- package/dist/helpers/field-crud-managers/BooleanFieldCrudManager.d.ts +1 -1
- package/dist/helpers/field-crud-managers/ComputedFieldCrudManager.d.ts +2 -2
- package/dist/helpers/field-crud-managers/DateFieldCrudManager.d.ts +1 -1
- package/dist/helpers/field-crud-managers/DecimalFieldCrudManager.d.ts +1 -1
- package/dist/helpers/field-crud-managers/EmailFieldCrudManager.d.ts +1 -1
- package/dist/helpers/field-crud-managers/IntFieldCrudManager.d.ts +1 -1
- package/dist/helpers/field-crud-managers/JsonFieldCrudManager.d.ts +1 -1
- package/dist/helpers/field-crud-managers/LongTextFieldCrudManager.d.ts +1 -1
- package/dist/helpers/field-crud-managers/ManyToManyRelationFieldCrudManager.d.ts +1 -1
- package/dist/helpers/field-crud-managers/ManyToManyRelationFieldCrudManager.js +5 -5
- package/dist/helpers/field-crud-managers/ManyToManyRelationFieldCrudManager.js.map +1 -1
- package/dist/helpers/field-crud-managers/ManyToOneRelationFieldCrudManager.d.ts +1 -1
- package/dist/helpers/field-crud-managers/ManyToOneRelationFieldCrudManager.d.ts.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/field-crud-managers/MediaFieldCrudManager.d.ts +1 -1
- package/dist/helpers/field-crud-managers/NoOpsFieldCrudManager.d.ts +1 -1
- package/dist/helpers/field-crud-managers/OneToManyRelationFieldCrudManager.d.ts +1 -1
- package/dist/helpers/field-crud-managers/OneToManyRelationFieldCrudManager.js +5 -5
- package/dist/helpers/field-crud-managers/OneToManyRelationFieldCrudManager.js.map +1 -1
- package/dist/helpers/field-crud-managers/PasswordFieldCrudManager.d.ts +2 -2
- package/dist/helpers/field-crud-managers/RichTextFieldCrudManager.d.ts +1 -1
- package/dist/helpers/field-crud-managers/SelectionDynamicFieldCrudManager.d.ts +2 -2
- package/dist/helpers/field-crud-managers/SelectionStaticFieldCrudManager.d.ts +2 -2
- package/dist/helpers/field-crud-managers/ShortTextFieldCrudManager.d.ts +1 -1
- package/dist/helpers/field-crud-managers/UUIDFieldCrudManager.d.ts +1 -1
- package/dist/helpers/microsoft-oauth.helper.d.ts +9 -0
- package/dist/helpers/microsoft-oauth.helper.d.ts.map +1 -0
- package/dist/helpers/microsoft-oauth.helper.js +12 -0
- package/dist/helpers/microsoft-oauth.helper.js.map +1 -0
- package/dist/helpers/model-metadata-helper.service.d.ts +1 -1
- package/dist/helpers/module-metadata-helper.service.d.ts +1 -1
- package/dist/helpers/module-metadata-helper.service.js +3 -3
- package/dist/helpers/module-metadata-helper.service.js.map +1 -1
- package/dist/helpers/module.helper.d.ts.map +1 -1
- package/dist/helpers/module.helper.js +3 -3
- package/dist/helpers/module.helper.js.map +1 -1
- package/dist/helpers/schematic.service.d.ts.map +1 -1
- package/dist/helpers/schematic.service.js +1 -1
- package/dist/helpers/schematic.service.js.map +1 -1
- package/dist/helpers/security.helper.d.ts.map +1 -1
- package/dist/helpers/solid-core-error-codes-provider.service.d.ts +1 -1
- package/dist/helpers/solid-registry.d.ts +11 -5
- package/dist/helpers/solid-registry.d.ts.map +1 -1
- package/dist/helpers/solid-registry.js +15 -2
- package/dist/helpers/solid-registry.js.map +1 -1
- package/dist/helpers/string.helper.d.ts +1 -0
- package/dist/helpers/string.helper.d.ts.map +1 -1
- package/dist/helpers/string.helper.js +4 -1
- package/dist/helpers/string.helper.js.map +1 -1
- package/dist/helpers/user-helper.d.ts.map +1 -1
- package/dist/helpers/user-helper.js +4 -0
- package/dist/helpers/user-helper.js.map +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/interfaces/mq.d.ts +1 -1
- package/dist/interfaces/mq.d.ts.map +1 -1
- package/dist/interfaces/mq.js.map +1 -1
- package/dist/interfaces.d.ts +30 -3
- package/dist/interfaces.d.ts.map +1 -1
- package/dist/interfaces.js.map +1 -1
- package/dist/jobs/database/api-email-publisher-database.service.d.ts +4 -4
- package/dist/jobs/database/api-email-queue-options-database.d.ts +1 -1
- package/dist/jobs/database/api-email-subscriber-database.service.d.ts +8 -8
- package/dist/jobs/database/api-email-subscriber-database.service.js +1 -1
- package/dist/jobs/database/api-email-subscriber-database.service.js.map +1 -1
- package/dist/jobs/database/chatter-queue-publisher-database.service.d.ts +1 -1
- package/dist/jobs/database/chatter-queue-subscriber-database.service.d.ts +4 -4
- package/dist/jobs/database/computed-field-evaluation-publisher-database.service.d.ts +5 -5
- package/dist/jobs/database/computed-field-evaluation-subscriber-database.service.d.ts +8 -8
- package/dist/jobs/database/generate-code-publisher-database.service.d.ts +1 -1
- package/dist/jobs/database/generate-code-subscriber-database.service.d.ts +4 -4
- package/dist/jobs/database/msg91-sms-publisher-database.service.d.ts +4 -4
- package/dist/jobs/database/msg91-sms-queue-database-options.d.ts +1 -1
- package/dist/jobs/database/msg91-sms-subscriber-database.service.d.ts +7 -7
- package/dist/jobs/database/msg91-whatsapp-publisher-database.service.d.ts +4 -4
- package/dist/jobs/database/msg91-whatsapp-queue-options-database.d.ts +1 -1
- package/dist/jobs/database/msg91-whatsapp-subscriber-database.service.d.ts +8 -8
- package/dist/jobs/database/msg91-whatsapp-subscriber-database.service.js +1 -1
- package/dist/jobs/database/msg91-whatsapp-subscriber-database.service.js.map +1 -1
- package/dist/jobs/database/otp-publisher-database.service.d.ts +4 -4
- package/dist/jobs/database/otp-queue-options-database.d.ts +1 -1
- package/dist/jobs/database/otp-subscriber-database.service.d.ts +7 -7
- package/dist/jobs/database/smtp-email-publisher-database.service.d.ts +4 -4
- package/dist/jobs/database/smtp-email-queue-options-database.d.ts +1 -1
- package/dist/jobs/database/smtp-email-subscriber-database.service.d.ts +7 -7
- package/dist/jobs/database/test-queue-publisher-database.service.d.ts +1 -1
- package/dist/jobs/database/test-queue-subscriber-database.service.d.ts +3 -3
- package/dist/jobs/database/three60-whatsapp-publisher-database.service.d.ts +4 -4
- package/dist/jobs/database/three60-whatsapp-queue-options-database.d.ts +1 -1
- package/dist/jobs/database/three60-whatsapp-subscriber-database.service.d.ts +8 -8
- package/dist/jobs/database/three60-whatsapp-subscriber-database.service.js +1 -1
- package/dist/jobs/database/three60-whatsapp-subscriber-database.service.js.map +1 -1
- package/dist/jobs/database/trigger-mcp-client-publisher-database.service.d.ts +4 -4
- package/dist/jobs/database/trigger-mcp-client-queue-options.d.ts +1 -1
- package/dist/jobs/database/trigger-mcp-client-subscriber-database.service.d.ts +8 -8
- package/dist/jobs/database/trigger-mcp-client-subscriber-database.service.d.ts.map +1 -1
- package/dist/jobs/database/trigger-mcp-client-subscriber-database.service.js +2 -2
- package/dist/jobs/database/trigger-mcp-client-subscriber-database.service.js.map +1 -1
- package/dist/jobs/database/twilio-sms-publisher-database.service.d.ts +4 -4
- package/dist/jobs/database/twilio-sms-queue-database-options.d.ts +1 -1
- package/dist/jobs/database/twilio-sms-subscriber-database.service.d.ts +7 -7
- package/dist/jobs/rabbitmq/api-email-publisher.service.d.ts +3 -3
- package/dist/jobs/rabbitmq/api-email-subscriber.service.d.ts +5 -5
- package/dist/jobs/rabbitmq/api-email-subscriber.service.js +1 -1
- package/dist/jobs/rabbitmq/api-email-subscriber.service.js.map +1 -1
- package/dist/jobs/rabbitmq/chatter-queue-publisher.service.d.ts +1 -1
- package/dist/jobs/rabbitmq/chatter-queue-subscriber.service.d.ts +3 -3
- package/dist/jobs/rabbitmq/computed-field-evaluation-publisher.service.d.ts +5 -5
- package/dist/jobs/rabbitmq/computed-field-evaluation-subscriber.service.d.ts +8 -8
- package/dist/jobs/rabbitmq/generate-code-publisher.service.d.ts +1 -1
- package/dist/jobs/rabbitmq/generate-code-subscriber.service.d.ts +7 -7
- package/dist/jobs/rabbitmq/msg91-otp-publisher.service.d.ts +3 -3
- package/dist/jobs/rabbitmq/msg91-otp-subscriber.service.d.ts +5 -5
- package/dist/jobs/rabbitmq/msg91-sms-publisher.service.d.ts +3 -3
- package/dist/jobs/rabbitmq/msg91-sms-subscriber.service.d.ts +5 -5
- package/dist/jobs/rabbitmq/msg91-whatsapp-publisher.service.d.ts +3 -3
- package/dist/jobs/rabbitmq/msg91-whatsapp-subscriber.service.d.ts +5 -5
- package/dist/jobs/rabbitmq/msg91-whatsapp-subscriber.service.js +1 -1
- package/dist/jobs/rabbitmq/msg91-whatsapp-subscriber.service.js.map +1 -1
- package/dist/jobs/rabbitmq/smtp-email-publisher.service.d.ts +3 -3
- package/dist/jobs/rabbitmq/smtp-email-subscriber.service.d.ts +4 -4
- package/dist/jobs/rabbitmq/test-queue-publisher.service.d.ts +1 -1
- package/dist/jobs/rabbitmq/test-queue-subscriber.service.d.ts +3 -3
- package/dist/jobs/rabbitmq/test-queue-subscriber.service.d.ts.map +1 -1
- package/dist/jobs/rabbitmq/test-queue-subscriber.service.js +6 -3
- package/dist/jobs/rabbitmq/test-queue-subscriber.service.js.map +1 -1
- package/dist/jobs/rabbitmq/three60-whatsapp-publisher.service.d.ts +3 -3
- package/dist/jobs/rabbitmq/three60-whatsapp-subscriber.service.d.ts +6 -6
- package/dist/jobs/rabbitmq/three60-whatsapp-subscriber.service.js +1 -1
- package/dist/jobs/rabbitmq/three60-whatsapp-subscriber.service.js.map +1 -1
- package/dist/jobs/rabbitmq/trigger-mcp-client-publisher.service.d.ts +3 -3
- package/dist/jobs/rabbitmq/trigger-mcp-client-subscriber.service.d.ts +6 -6
- package/dist/jobs/rabbitmq/twilio-sms-publisher.service.d.ts +3 -3
- package/dist/jobs/rabbitmq/twilio-sms-subscriber.service.d.ts +6 -6
- package/dist/jobs/redis/api-email-publisher-redis.service.d.ts +1 -1
- package/dist/jobs/redis/api-email-subscriber-redis.service.d.ts +3 -3
- package/dist/jobs/redis/api-email-subscriber-redis.service.js +1 -1
- package/dist/jobs/redis/api-email-subscriber-redis.service.js.map +1 -1
- package/dist/jobs/redis/chatter-queue-publisher-redis.service.d.ts +1 -1
- package/dist/jobs/redis/chatter-queue-subscriber-redis.service.d.ts +2 -2
- package/dist/jobs/redis/computed-field-evaluation-publisher-redis.service.d.ts +2 -2
- package/dist/jobs/redis/computed-field-evaluation-subscriber-redis.service.d.ts +4 -4
- package/dist/jobs/redis/generate-code-publisher-redis.service.d.ts +1 -1
- package/dist/jobs/redis/generate-code-subscriber-redis.service.d.ts +3 -3
- package/dist/jobs/redis/msg91-otp-publisher-redis.service.d.ts +1 -1
- package/dist/jobs/redis/msg91-otp-subscriber-redis.service.d.ts +3 -3
- package/dist/jobs/redis/msg91-sms-publisher-redis.service.d.ts +1 -1
- package/dist/jobs/redis/msg91-sms-subscriber-redis.service.d.ts +3 -3
- package/dist/jobs/redis/msg91-whatsapp-publisher-redis.service.d.ts +1 -1
- package/dist/jobs/redis/msg91-whatsapp-subscriber-redis.service.d.ts +3 -3
- package/dist/jobs/redis/msg91-whatsapp-subscriber-redis.service.js +1 -1
- package/dist/jobs/redis/msg91-whatsapp-subscriber-redis.service.js.map +1 -1
- package/dist/jobs/redis/smtp-email-publisher-redis.service.d.ts +1 -1
- package/dist/jobs/redis/smtp-email-subscriber-redis.service.d.ts +2 -2
- package/dist/jobs/redis/test-queue-publisher-redis.service.d.ts +1 -1
- package/dist/jobs/redis/test-queue-subscriber-redis.service.d.ts +2 -2
- package/dist/jobs/redis/three60-whatsapp-publisher-redis.service.d.ts +1 -1
- package/dist/jobs/redis/three60-whatsapp-subscriber-redis.service.d.ts +3 -3
- package/dist/jobs/redis/three60-whatsapp-subscriber-redis.service.js +1 -1
- package/dist/jobs/redis/three60-whatsapp-subscriber-redis.service.js.map +1 -1
- package/dist/jobs/redis/trigger-mcp-client-publisher-redis.service.d.ts +1 -1
- package/dist/jobs/redis/trigger-mcp-client-subscriber-redis.service.d.ts +2 -2
- package/dist/jobs/redis/twilio-sms-publisher-redis.service.d.ts +1 -1
- package/dist/jobs/redis/twilio-sms-subscriber-redis.service.d.ts +3 -3
- package/dist/mappers/dashboard-mapper.d.ts +1 -1
- package/dist/mappers/list-of-values-mapper.d.ts +1 -1
- package/dist/passport-strategies/facebook-oauth.strategy.d.ts +14 -0
- package/dist/passport-strategies/facebook-oauth.strategy.d.ts.map +1 -0
- package/dist/passport-strategies/facebook-oauth.strategy.js +73 -0
- package/dist/passport-strategies/facebook-oauth.strategy.js.map +1 -0
- package/dist/passport-strategies/microsoft-oauth.strategy.d.ts +14 -0
- package/dist/passport-strategies/microsoft-oauth.strategy.d.ts.map +1 -0
- package/dist/passport-strategies/microsoft-oauth.strategy.js +77 -0
- package/dist/passport-strategies/microsoft-oauth.strategy.js.map +1 -0
- package/dist/repository/action-metadata.repository.d.ts +2 -2
- package/dist/repository/agent-event.repository.d.ts +2 -2
- package/dist/repository/agent-session.repository.d.ts +2 -2
- package/dist/repository/ai-interaction.repository.d.ts +2 -2
- package/dist/repository/chatter-message-details.repository.d.ts +2 -2
- package/dist/repository/chatter-message-details.repository.d.ts.map +1 -1
- package/dist/repository/chatter-message-details.repository.js +7 -6
- package/dist/repository/chatter-message-details.repository.js.map +1 -1
- package/dist/repository/chatter-message.repository.d.ts +2 -2
- package/dist/repository/chatter-message.repository.d.ts.map +1 -1
- package/dist/repository/chatter-message.repository.js +4 -4
- package/dist/repository/chatter-message.repository.js.map +1 -1
- package/dist/repository/dashboard-layout.repository.d.ts +2 -2
- package/dist/repository/dashboard-question-sql-dataset-config.repository.d.ts +2 -2
- package/dist/repository/dashboard-question-sql-dataset-config.repository.d.ts.map +1 -1
- package/dist/repository/dashboard-question-sql-dataset-config.repository.js +2 -2
- package/dist/repository/dashboard-question-sql-dataset-config.repository.js.map +1 -1
- package/dist/repository/dashboard-question.repository.d.ts +2 -2
- package/dist/repository/dashboard-question.repository.d.ts.map +1 -1
- package/dist/repository/dashboard-question.repository.js +2 -2
- package/dist/repository/dashboard-question.repository.js.map +1 -1
- package/dist/repository/dashboard-variable.repository.d.ts +2 -2
- package/dist/repository/dashboard-variable.repository.d.ts.map +1 -1
- package/dist/repository/dashboard-variable.repository.js +2 -2
- package/dist/repository/dashboard-variable.repository.js.map +1 -1
- package/dist/repository/dashboard.repository.d.ts +2 -2
- package/dist/repository/email-template.repository.d.ts +2 -2
- package/dist/repository/email-template.repository.d.ts.map +1 -1
- package/dist/repository/email-template.repository.js +2 -2
- package/dist/repository/email-template.repository.js.map +1 -1
- package/dist/repository/export-template.repository.d.ts +2 -2
- package/dist/repository/export-template.repository.d.ts.map +1 -1
- package/dist/repository/export-template.repository.js +2 -2
- package/dist/repository/export-template.repository.js.map +1 -1
- package/dist/repository/export-transaction.repository.d.ts +2 -2
- package/dist/repository/export-transaction.repository.d.ts.map +1 -1
- package/dist/repository/export-transaction.repository.js +2 -2
- package/dist/repository/export-transaction.repository.js.map +1 -1
- package/dist/repository/field-metadata.repository.d.ts +1 -1
- package/dist/repository/import-transaction-error-log.repository.d.ts +2 -2
- package/dist/repository/import-transaction-error-log.repository.d.ts.map +1 -1
- package/dist/repository/import-transaction-error-log.repository.js +2 -2
- package/dist/repository/import-transaction-error-log.repository.js.map +1 -1
- package/dist/repository/import-transaction.repository.d.ts +2 -2
- package/dist/repository/import-transaction.repository.d.ts.map +1 -1
- package/dist/repository/import-transaction.repository.js +2 -2
- package/dist/repository/import-transaction.repository.js.map +1 -1
- package/dist/repository/list-of-values.repository.d.ts +2 -2
- package/dist/repository/list-of-values.repository.d.ts.map +1 -1
- package/dist/repository/list-of-values.repository.js +2 -2
- package/dist/repository/list-of-values.repository.js.map +1 -1
- package/dist/repository/locale.repository.d.ts +2 -2
- package/dist/repository/locale.repository.d.ts.map +1 -1
- package/dist/repository/locale.repository.js +2 -2
- package/dist/repository/locale.repository.js.map +1 -1
- package/dist/repository/media-storage-provider-metadata.repository.d.ts +1 -1
- package/dist/repository/media.repository.d.ts +2 -2
- package/dist/repository/menu-item-metadata.repository.d.ts +2 -2
- package/dist/repository/menu-item-metadata.repository.d.ts.map +1 -1
- package/dist/repository/menu-item-metadata.repository.js +2 -2
- package/dist/repository/menu-item-metadata.repository.js.map +1 -1
- package/dist/repository/model-metadata.repository.d.ts +1 -1
- package/dist/repository/model-metadata.repository.d.ts.map +1 -1
- package/dist/repository/model-metadata.repository.js +2 -2
- package/dist/repository/model-metadata.repository.js.map +1 -1
- package/dist/repository/model-sequence.repository.d.ts +3 -3
- package/dist/repository/module-metadata.repository.d.ts +1 -1
- package/dist/repository/module-metadata.repository.d.ts.map +1 -1
- package/dist/repository/module-metadata.repository.js +2 -2
- package/dist/repository/module-metadata.repository.js.map +1 -1
- package/dist/repository/mq-message-queue.repository.d.ts +2 -2
- package/dist/repository/mq-message-queue.repository.d.ts.map +1 -1
- package/dist/repository/mq-message-queue.repository.js +2 -2
- package/dist/repository/mq-message-queue.repository.js.map +1 -1
- package/dist/repository/mq-message.repository.d.ts +2 -2
- package/dist/repository/mq-message.repository.d.ts.map +1 -1
- package/dist/repository/mq-message.repository.js +2 -2
- package/dist/repository/mq-message.repository.js.map +1 -1
- package/dist/repository/permission-metadata.repository.d.ts +2 -2
- package/dist/repository/permission-metadata.repository.d.ts.map +1 -1
- package/dist/repository/permission-metadata.repository.js +2 -2
- package/dist/repository/permission-metadata.repository.js.map +1 -1
- package/dist/repository/role-metadata.repository.d.ts +2 -2
- package/dist/repository/role-metadata.repository.d.ts.map +1 -1
- package/dist/repository/role-metadata.repository.js +2 -2
- package/dist/repository/role-metadata.repository.js.map +1 -1
- package/dist/repository/saved-filters.repository.d.ts +2 -2
- package/dist/repository/scheduled-job.repository.d.ts +3 -3
- package/dist/repository/security-rule.repository.d.ts +7 -7
- package/dist/repository/setting.repository.d.ts +2 -2
- package/dist/repository/setting.repository.d.ts.map +1 -1
- package/dist/repository/setting.repository.js +2 -2
- package/dist/repository/setting.repository.js.map +1 -1
- package/dist/repository/sms-template.repository.d.ts +2 -2
- package/dist/repository/sms-template.repository.d.ts.map +1 -1
- package/dist/repository/sms-template.repository.js +2 -2
- package/dist/repository/sms-template.repository.js.map +1 -1
- package/dist/repository/solid-base.repository.d.ts +2 -2
- package/dist/repository/solid-base.repository.js +2 -2
- package/dist/repository/solid-base.repository.js.map +1 -1
- package/dist/repository/user-activity-history.repository.d.ts +2 -2
- package/dist/repository/user-activity-history.repository.d.ts.map +1 -1
- package/dist/repository/user-activity-history.repository.js +2 -2
- package/dist/repository/user-activity-history.repository.js.map +1 -1
- package/dist/repository/user-api-key.repository.d.ts +2 -2
- package/dist/repository/user-view-metadata.repository.d.ts +2 -2
- package/dist/repository/user-view-metadata.repository.d.ts.map +1 -1
- package/dist/repository/user-view-metadata.repository.js +2 -2
- package/dist/repository/user-view-metadata.repository.js.map +1 -1
- package/dist/repository/user.repository.d.ts +2 -2
- package/dist/repository/view-metadata.repository.d.ts +2 -2
- package/dist/seeders/module-metadata-seeder.service.d.ts +17 -14
- package/dist/seeders/module-metadata-seeder.service.d.ts.map +1 -1
- package/dist/seeders/module-metadata-seeder.service.js +65 -38
- package/dist/seeders/module-metadata-seeder.service.js.map +1 -1
- package/dist/seeders/module-test-data.service.d.ts +1 -1
- package/dist/seeders/module-test-data.service.d.ts.map +1 -1
- package/dist/seeders/module-test-data.service.js +5 -12
- package/dist/seeders/module-test-data.service.js.map +1 -1
- package/dist/seeders/permission-metadata-seeder.service.d.ts +2 -2
- package/dist/seeders/seed-data/solid-core-metadata.json +44 -93
- package/dist/seeders/system-fields-seeder.service.d.ts +3 -3
- package/dist/services/action-metadata.service.d.ts +2 -2
- package/dist/services/agent-event.service.d.ts +2 -2
- package/dist/services/agent-session.service.d.ts +2 -2
- package/dist/services/ai-interaction.service.d.ts +4 -4
- package/dist/services/api-key.service.d.ts +23 -7
- package/dist/services/api-key.service.d.ts.map +1 -1
- package/dist/services/api-key.service.js +38 -2
- package/dist/services/api-key.service.js.map +1 -1
- package/dist/services/authentication.service.d.ts +58 -19
- package/dist/services/authentication.service.d.ts.map +1 -1
- package/dist/services/authentication.service.js +344 -171
- package/dist/services/authentication.service.js.map +1 -1
- package/dist/services/chatter-message-details.service.d.ts +2 -2
- package/dist/services/chatter-message.service.d.ts +8 -7
- package/dist/services/chatter-message.service.d.ts.map +1 -1
- package/dist/services/chatter-message.service.js +17 -0
- package/dist/services/chatter-message.service.js.map +1 -1
- package/dist/services/computed-fields/entity/alpha-num-external-id-computed-field-provider.d.ts +3 -3
- package/dist/services/computed-fields/entity/concat-entity-computed-field-provider.service.d.ts +3 -3
- package/dist/services/computed-fields/entity/noops-entity-computed-field-provider.service.d.ts +2 -2
- package/dist/services/computed-fields/entity/sequence-num-computed-field-provider.d.ts +3 -3
- package/dist/services/computed-fields/entity/sequence-num-computed-field-provider.d.ts.map +1 -1
- package/dist/services/computed-fields/entity/sequence-num-computed-field-provider.js +2 -2
- package/dist/services/computed-fields/entity/sequence-num-computed-field-provider.js.map +1 -1
- package/dist/services/computed-fields/entity/uuid-externalid-entity-computed-field-provider.service.d.ts +2 -2
- package/dist/services/crud-helper.service.d.ts +1 -1
- package/dist/services/crud-helper.service.d.ts.map +1 -1
- package/dist/services/crud-helper.service.js +9 -9
- package/dist/services/crud-helper.service.js.map +1 -1
- package/dist/services/crud.service.d.ts +4 -1
- package/dist/services/crud.service.d.ts.map +1 -1
- package/dist/services/crud.service.js +52 -3
- package/dist/services/crud.service.js.map +1 -1
- package/dist/services/dashboard-layout.service.d.ts +4 -4
- package/dist/services/dashboard-question-sql-dataset-config.service.d.ts +2 -2
- package/dist/services/dashboard-question.service.d.ts +3 -3
- package/dist/services/dashboard-question.service.js.map +1 -1
- package/dist/services/dashboard-variable.service.d.ts +2 -2
- package/dist/services/dashboard.service.d.ts +7 -7
- package/dist/services/email-template.service.d.ts +1 -1
- package/dist/services/export-template.service.d.ts +5 -5
- package/dist/services/export-transaction.service.d.ts +7 -7
- package/dist/services/export-transaction.service.d.ts.map +1 -1
- package/dist/services/export-transaction.service.js +4 -3
- package/dist/services/export-transaction.service.js.map +1 -1
- package/dist/services/field-metadata.service.d.ts +5 -5
- package/dist/services/field-metadata.service.d.ts.map +1 -1
- package/dist/services/field-metadata.service.js +7 -7
- package/dist/services/field-metadata.service.js.map +1 -1
- package/dist/services/fixtures.service.d.ts +1 -1
- package/dist/services/fixtures.service.js +2 -2
- package/dist/services/fixtures.service.js.map +1 -1
- package/dist/services/genai/mcp-handlers/mcp-handler-factory.service.d.ts +1 -1
- package/dist/services/genai/mcp-handlers/mcp-handler-factory.service.d.ts.map +1 -1
- package/dist/services/genai/mcp-handlers/mcp-handler-factory.service.js +2 -2
- package/dist/services/genai/mcp-handlers/mcp-handler-factory.service.js.map +1 -1
- package/dist/services/genai/mcp-handlers/solid-add-question-to-dashboard-mcp-handler.service.d.ts +1 -1
- package/dist/services/genai/mcp-handlers/solid-add-variable-to-dashboard-mcp-handler.service.d.ts +2 -2
- package/dist/services/genai/mcp-handlers/solid-create-dashboard-mcp-handler.service.d.ts +1 -1
- package/dist/services/genai/mcp-handlers/solid-create-dashboard-question-mcp-handler.service.d.ts +1 -1
- package/dist/services/genai/mcp-handlers/solid-create-dashboard-question-sql-dataset-config-mcp-handler.service.d.ts +1 -1
- package/dist/services/genai/mcp-handlers/solid-create-dashboard-widget-mcp-handler.service.d.ts +1 -1
- package/dist/services/import-transaction-error-log.service.d.ts +2 -2
- package/dist/services/import-transaction.service.d.ts +6 -6
- package/dist/services/import-transaction.service.d.ts.map +1 -1
- package/dist/services/import-transaction.service.js +2 -2
- package/dist/services/import-transaction.service.js.map +1 -1
- package/dist/services/list-of-values.service.d.ts +4 -4
- package/dist/services/locale.service.d.ts +4 -4
- package/dist/services/mail/elastic-email.service.d.ts +1 -1
- package/dist/services/mail/smtp-email.service.d.ts +1 -1
- package/dist/services/media-storage-provider-metadata.service.d.ts +1 -1
- package/dist/services/media.service.d.ts +8 -8
- package/dist/services/mediaStorageProviders/file-s3-storage-provider.d.ts +5 -5
- package/dist/services/mediaStorageProviders/file-storage-provider.d.ts +5 -5
- package/dist/services/menu-item-metadata.service.d.ts +4 -4
- package/dist/services/menu-item-metadata.service.js +2 -2
- package/dist/services/menu-item-metadata.service.js.map +1 -1
- package/dist/services/model-metadata.service.d.ts +4 -4
- package/dist/services/model-metadata.service.d.ts.map +1 -1
- package/dist/services/model-metadata.service.js +12 -11
- package/dist/services/model-metadata.service.js.map +1 -1
- package/dist/services/model-sequence.service.d.ts +1 -1
- package/dist/services/module-metadata.service.d.ts +4 -4
- package/dist/services/module-metadata.service.d.ts.map +1 -1
- package/dist/services/module-metadata.service.js +2 -2
- package/dist/services/module-metadata.service.js.map +1 -1
- package/dist/services/mq-message-queue.service.d.ts +2 -2
- package/dist/services/mq-message.service.d.ts +2 -2
- package/dist/services/permission-metadata.service.d.ts +2 -2
- package/dist/services/question-data-providers/chartjs-sql-data-provider.service.d.ts +2 -2
- package/dist/services/question-data-providers/helpers.d.ts +1 -1
- package/dist/services/question-data-providers/prime-react-datatable-sql-data-provider.service.d.ts +2 -2
- package/dist/services/question-data-providers/prime-react-meter-group-sql-data-provider.service.d.ts +2 -2
- package/dist/services/queues/database-subscriber.service.d.ts +1 -1
- package/dist/services/queues/database-subscriber.service.d.ts.map +1 -1
- package/dist/services/queues/database-subscriber.service.js.map +1 -1
- package/dist/services/queues/publisher-factory.service.d.ts +1 -1
- package/dist/services/queues/publisher-factory.service.d.ts.map +1 -1
- package/dist/services/queues/publisher-factory.service.js +2 -2
- package/dist/services/queues/publisher-factory.service.js.map +1 -1
- package/dist/services/queues/rabbitmq-subscriber.service.d.ts +1 -1
- package/dist/services/queues/rabbitmq-subscriber.service.d.ts.map +1 -1
- package/dist/services/queues/rabbitmq-subscriber.service.js +3 -1
- package/dist/services/queues/rabbitmq-subscriber.service.js.map +1 -1
- package/dist/services/queues/redis-subscriber.service.d.ts +1 -1
- package/dist/services/queues/redis-subscriber.service.d.ts.map +1 -1
- package/dist/services/queues/redis-subscriber.service.js.map +1 -1
- package/dist/services/request-context.service.d.ts +2 -2
- package/dist/services/role-metadata.service.d.ts +3 -3
- package/dist/services/saved-filters.service.d.ts +2 -2
- package/dist/services/scheduled-job.service.d.ts +3 -3
- package/dist/services/scheduled-jobs/scheduled-job.interface.d.ts +1 -1
- package/dist/services/scheduled-jobs/scheduler.interface.d.ts +1 -1
- package/dist/services/scheduled-jobs/scheduler.service.d.ts +3 -3
- package/dist/services/security-rule.service.d.ts +3 -3
- package/dist/services/security-rule.service.d.ts.map +1 -1
- package/dist/services/security-rule.service.js +3 -3
- package/dist/services/security-rule.service.js.map +1 -1
- package/dist/services/selection-providers/list-of-dashboard-question-providers-selection-provider.service.d.ts +1 -1
- package/dist/services/selection-providers/list-of-dashboard-variable-providers-selection-provider.service.d.ts +1 -1
- package/dist/services/selection-providers/list-of-models-selection-provider.service.d.ts +1 -1
- package/dist/services/selection-providers/list-of-scheduled-jobs-selection-provider.service.d.ts +1 -1
- package/dist/services/selection-providers/pseudo-foreign-key-selection-provider.service.js +3 -3
- package/dist/services/selection-providers/pseudo-foreign-key-selection-provider.service.js.map +1 -1
- package/dist/services/setting.service.d.ts +10 -7
- package/dist/services/setting.service.d.ts.map +1 -1
- package/dist/services/setting.service.js +52 -7
- package/dist/services/setting.service.js.map +1 -1
- package/dist/services/settings/default-settings-provider.service.d.ts +829 -9
- package/dist/services/settings/default-settings-provider.service.d.ts.map +1 -1
- package/dist/services/settings/default-settings-provider.service.js +1033 -118
- package/dist/services/settings/default-settings-provider.service.js.map +1 -1
- package/dist/services/short-url/tiny-url.service.d.ts +1 -1
- package/dist/services/sms/Msg91BaseSMSService.d.ts +1 -1
- package/dist/services/sms/Msg91OTPService.d.ts +1 -1
- package/dist/services/sms/Msg91SMSService.d.ts +1 -1
- package/dist/services/sms/TwilioSMSService.d.ts +1 -1
- package/dist/services/sms-template.service.d.ts +1 -1
- package/dist/services/solid-introspect.service.d.ts +9 -8
- package/dist/services/solid-introspect.service.d.ts.map +1 -1
- package/dist/services/solid-introspect.service.js +13 -2
- package/dist/services/solid-introspect.service.js.map +1 -1
- package/dist/services/user-activity-history.service.d.ts +3 -3
- package/dist/services/user-view-metadata.service.d.ts +4 -4
- package/dist/services/user.service.d.ts +5 -3
- package/dist/services/user.service.d.ts.map +1 -1
- package/dist/services/user.service.js +72 -0
- package/dist/services/user.service.js.map +1 -1
- package/dist/services/view-metadata.service.d.ts +4 -4
- package/dist/services/view-metadata.service.d.ts.map +1 -1
- package/dist/services/view-metadata.service.js +2 -2
- package/dist/services/view-metadata.service.js.map +1 -1
- package/dist/services/whatsapp/Msg91WhatsappService.d.ts +1 -1
- package/dist/services/whatsapp/Three60WhatsappService.d.ts +1 -1
- package/dist/solid-core.module.d.ts.map +1 -1
- package/dist/solid-core.module.js +11 -3
- package/dist/solid-core.module.js.map +1 -1
- package/dist/subscribers/audit.subscriber.d.ts +4 -4
- package/dist/subscribers/computed-entity-field.subscriber.d.ts +2 -2
- package/dist/subscribers/computed-entity-field.subscriber.js +6 -6
- package/dist/subscribers/computed-entity-field.subscriber.js.map +1 -1
- package/dist/subscribers/created-by-updated-by.subscriber.d.ts +1 -1
- package/dist/subscribers/dashboard-question-sql-dataset-config.subscriber.d.ts +3 -3
- package/dist/subscribers/dashboard-question.subscriber.d.ts +3 -3
- package/dist/subscribers/dashboard-variable.subscriber.d.ts +3 -3
- package/dist/subscribers/dashboard.subscriber.d.ts +3 -3
- package/dist/subscribers/list-of-values.subscriber.d.ts +3 -3
- package/dist/subscribers/model-metadata.subscriber.d.ts +1 -1
- package/dist/subscribers/scheduled-job.subscriber.d.ts +3 -3
- package/dist/subscribers/security-rule.subscriber.d.ts +3 -3
- package/dist/subscribers/view-metadata.subscriber.d.ts +2 -2
- package/dist/testing/contracts/testing-metadata.types.d.ts +1 -0
- package/dist/testing/contracts/testing-metadata.types.d.ts.map +1 -1
- package/dist/testing/contracts/testing-metadata.types.js.map +1 -1
- package/dist/testing/steps/ui/assertions.step.d.ts.map +1 -1
- package/dist/testing/steps/ui/assertions.step.js +8 -0
- package/dist/testing/steps/ui/assertions.step.js.map +1 -1
- package/dist/testing/steps/ui/form.step.d.ts.map +1 -1
- package/dist/testing/steps/ui/form.step.js +49 -0
- package/dist/testing/steps/ui/form.step.js.map +1 -1
- package/dist/transformers/array-transformer.d.ts.map +1 -1
- package/dist/transformers/boolean-transformer.d.ts.map +1 -1
- package/dist/transformers/datetime-transformer.d.ts.map +1 -1
- package/dist/transformers/integer-transformer.d.ts.map +1 -1
- package/dist/validators/is-parsable-int.d.ts.map +1 -1
- package/dist/winston.logger.js +1 -1
- package/dist/winston.logger.js.map +1 -1
- package/nest +0 -0
- package/package.json +13 -7
- package/src/constants/chatter-message.constants.ts +7 -0
- package/src/controllers/authentication.controller.ts +8 -1
- package/src/controllers/chatter-message.controller.ts +6 -0
- package/src/controllers/facebook-authentication.controller.ts +113 -0
- package/src/controllers/menu-item-metadata.controller.ts +21 -15
- package/src/controllers/microsoft-authentication.controller.ts +116 -0
- package/src/controllers/otp-authentication.controller.ts +2 -2
- package/src/controllers/setting.controller.ts +2 -2
- package/src/decorators/extension-user-creation-provider.decorator.ts +5 -0
- package/src/dtos/create-chatter-message.dto.ts +11 -0
- package/src/dtos/create-field-metadata.dto.ts +1 -1
- package/src/dtos/create-user.dto.ts +4 -0
- package/src/dtos/post-chatter-message.dto.ts +4 -0
- package/src/dtos/update-chatter-message.dto.ts +13 -1
- package/src/dtos/update-user.dto.ts +4 -0
- package/src/entities/agent-event.entity.ts +1 -1
- package/src/entities/chatter-message.entity.ts +4 -1
- package/src/entities/user.entity.ts +33 -0
- package/src/helpers/bootstrap.helper.ts +5 -2
- package/src/helpers/cors.helper.ts +1 -1
- package/src/helpers/facebook-oauth.helper.ts +17 -0
- package/src/helpers/field-crud-managers/ManyToManyRelationFieldCrudManager.ts +1 -1
- package/src/helpers/field-crud-managers/ManyToOneRelationFieldCrudManager.ts +1 -2
- package/src/helpers/field-crud-managers/OneToManyRelationFieldCrudManager.ts +1 -1
- package/src/helpers/microsoft-oauth.helper.ts +19 -0
- package/src/helpers/module-metadata-helper.service.ts +3 -3
- package/src/helpers/module.helper.ts +4 -6
- package/src/helpers/schematic.service.ts +7 -1
- package/src/helpers/solid-registry.ts +19 -1
- package/src/helpers/string.helper.ts +3 -0
- package/src/helpers/user-helper.ts +4 -0
- package/src/index.ts +4 -0
- package/src/interfaces/mq.ts +2 -2
- package/src/interfaces.ts +41 -1
- package/src/jobs/database/api-email-subscriber-database.service.ts +1 -1
- package/src/jobs/database/msg91-whatsapp-subscriber-database.service.ts +1 -1
- package/src/jobs/database/three60-whatsapp-subscriber-database.service.ts +1 -1
- package/src/jobs/database/trigger-mcp-client-subscriber-database.service.ts +1 -1
- package/src/jobs/rabbitmq/api-email-subscriber.service.ts +1 -1
- package/src/jobs/rabbitmq/msg91-whatsapp-subscriber.service.ts +1 -1
- package/src/jobs/rabbitmq/test-queue-subscriber.service.ts +6 -7
- package/src/jobs/rabbitmq/three60-whatsapp-subscriber.service.ts +1 -1
- package/src/jobs/redis/api-email-subscriber-redis.service.ts +1 -1
- package/src/jobs/redis/msg91-whatsapp-subscriber-redis.service.ts +1 -1
- package/src/jobs/redis/three60-whatsapp-subscriber-redis.service.ts +1 -1
- package/src/passport-strategies/facebook-oauth.strategy.ts +64 -0
- package/src/passport-strategies/microsoft-oauth.strategy.ts +70 -0
- package/src/repository/chatter-message-details.repository.ts +4 -3
- package/src/repository/chatter-message.repository.ts +4 -4
- package/src/repository/dashboard-question-sql-dataset-config.repository.ts +1 -1
- package/src/repository/dashboard-question.repository.ts +1 -1
- package/src/repository/dashboard-variable.repository.ts +1 -1
- package/src/repository/email-template.repository.ts +1 -1
- package/src/repository/export-template.repository.ts +2 -1
- package/src/repository/export-transaction.repository.ts +1 -1
- package/src/repository/import-transaction-error-log.repository.ts +1 -1
- package/src/repository/import-transaction.repository.ts +1 -1
- package/src/repository/list-of-values.repository.ts +1 -1
- package/src/repository/locale.repository.ts +1 -1
- package/src/repository/menu-item-metadata.repository.ts +1 -1
- package/src/repository/model-metadata.repository.ts +1 -1
- package/src/repository/module-metadata.repository.ts +1 -1
- package/src/repository/mq-message-queue.repository.ts +2 -1
- package/src/repository/mq-message.repository.ts +1 -1
- package/src/repository/permission-metadata.repository.ts +1 -1
- package/src/repository/role-metadata.repository.ts +1 -1
- package/src/repository/setting.repository.ts +1 -1
- package/src/repository/sms-template.repository.ts +1 -1
- package/src/repository/solid-base.repository.ts +2 -2
- package/src/repository/user-activity-history.repository.ts +1 -1
- package/src/repository/user-view-metadata.repository.ts +1 -1
- package/src/seeders/module-metadata-seeder.service.ts +50 -25
- package/src/seeders/module-test-data.service.ts +2 -9
- package/src/seeders/seed-data/solid-core-metadata.json +44 -93
- package/src/services/api-key.service.ts +77 -35
- package/src/services/authentication.service.ts +1745 -1308
- package/src/services/chatter-message.service.ts +22 -4
- package/src/services/computed-fields/entity/sequence-num-computed-field-provider.ts +1 -2
- package/src/services/crud-helper.service.ts +1 -4
- package/src/services/crud.service.ts +22 -2
- package/src/services/dashboard-question.service.ts +1 -1
- package/src/services/export-transaction.service.ts +3 -4
- package/src/services/field-metadata.service.ts +1 -4
- package/src/services/fixtures.service.ts +1 -1
- package/src/services/genai/mcp-handlers/mcp-handler-factory.service.ts +1 -2
- package/src/services/import-transaction.service.ts +1 -1
- package/src/services/menu-item-metadata.service.ts +2 -2
- package/src/services/model-metadata.service.ts +11 -13
- package/src/services/module-metadata.service.ts +1 -2
- package/src/services/queues/database-subscriber.service.ts +1 -1
- package/src/services/queues/publisher-factory.service.ts +1 -2
- package/src/services/queues/rabbitmq-subscriber.service.ts +13 -11
- package/src/services/queues/redis-subscriber.service.ts +2 -2
- package/src/services/security-rule.service.ts +1 -1
- package/src/services/selection-providers/pseudo-foreign-key-selection-provider.service.ts +1 -1
- package/src/services/setting.service.ts +64 -8
- package/src/services/settings/default-settings-provider.service.ts +1104 -154
- package/src/services/solid-introspect.service.ts +14 -1
- package/src/services/user.service.ts +87 -0
- package/src/services/view-metadata.service.ts +1 -5
- package/src/solid-core.module.ts +25 -8
- package/src/subscribers/computed-entity-field.subscriber.ts +6 -6
- package/src/testing/contracts/testing-metadata.types.ts +1 -0
- package/src/testing/steps/ui/assertions.step.ts +9 -0
- package/src/testing/steps/ui/form.step.ts +19 -0
- package/src/winston.logger.ts +1 -1
- package/tsconfig.json +3 -0
- package/dev-grooming-docs/ozzy-prompts.txt +0 -70
- package/docs/grouping-enhancements.md +0 -89
- package/docs/seed-changes.md +0 -65
- package/docs/test-data-workflow.md +0 -200
- package/docs/type-declaration-import-issue.md +0 -24
|
@@ -38,6 +38,7 @@ const setting_service_1 = require("./setting.service");
|
|
|
38
38
|
const user_activity_history_service_1 = require("./user-activity-history.service");
|
|
39
39
|
const user_service_1 = require("./user.service");
|
|
40
40
|
const sms_factory_1 = require("../factories/sms.factory");
|
|
41
|
+
const solid_registry_1 = require("../helpers/solid-registry");
|
|
41
42
|
var LoginProvider;
|
|
42
43
|
(function (LoginProvider) {
|
|
43
44
|
LoginProvider["LOCAL"] = "local";
|
|
@@ -45,7 +46,7 @@ var LoginProvider;
|
|
|
45
46
|
LoginProvider["OTP"] = "otp";
|
|
46
47
|
})(LoginProvider || (LoginProvider = {}));
|
|
47
48
|
let AuthenticationService = AuthenticationService_1 = class AuthenticationService {
|
|
48
|
-
constructor(userService, userRepository, hashingService, jwtService, refreshTokenIdsStorage, httpService, mailServiceFactory, smsFactory, eventEmitter, settingService, roleMetadataService, userActivityHistoryService, ssoCodeStorage, dataSource) {
|
|
49
|
+
constructor(userService, userRepository, hashingService, jwtService, refreshTokenIdsStorage, httpService, mailServiceFactory, smsFactory, eventEmitter, settingService, roleMetadataService, userActivityHistoryService, ssoCodeStorage, dataSource, solidRegistry) {
|
|
49
50
|
this.userService = userService;
|
|
50
51
|
this.userRepository = userRepository;
|
|
51
52
|
this.hashingService = hashingService;
|
|
@@ -60,20 +61,18 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
60
61
|
this.userActivityHistoryService = userActivityHistoryService;
|
|
61
62
|
this.ssoCodeStorage = ssoCodeStorage;
|
|
62
63
|
this.dataSource = dataSource;
|
|
64
|
+
this.solidRegistry = solidRegistry;
|
|
63
65
|
this.logger = new common_1.Logger(AuthenticationService_1.name);
|
|
64
66
|
}
|
|
65
67
|
async getCompanyLogo() {
|
|
66
|
-
return this.settingService.getConfigValue(
|
|
68
|
+
return this.settingService.getConfigValue("companylogo");
|
|
67
69
|
}
|
|
68
70
|
async resolveUser(username, email) {
|
|
69
71
|
return await this.userRepository.findOne({
|
|
70
|
-
where: [
|
|
71
|
-
{ username: username },
|
|
72
|
-
{ email: email },
|
|
73
|
-
],
|
|
72
|
+
where: [{ username: username }, { email: email }],
|
|
74
73
|
relations: {
|
|
75
|
-
roles: true
|
|
76
|
-
}
|
|
74
|
+
roles: true,
|
|
75
|
+
},
|
|
77
76
|
});
|
|
78
77
|
}
|
|
79
78
|
async updatePasswordDetails(user, newPassword) {
|
|
@@ -85,14 +84,14 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
85
84
|
password: user.password,
|
|
86
85
|
passwordScheme: user.passwordScheme,
|
|
87
86
|
passwordSchemeVersion: user.passwordSchemeVersion,
|
|
88
|
-
rehashedAt: user.rehashedAt
|
|
87
|
+
rehashedAt: user.rehashedAt,
|
|
89
88
|
});
|
|
90
89
|
return user;
|
|
91
90
|
}
|
|
92
91
|
async resolveUserByVerificationToken(token) {
|
|
93
92
|
return await this.userRepository.findOne({
|
|
94
93
|
where: { verificationTokenOnForgotPassword: token },
|
|
95
|
-
relations: { roles: true }
|
|
94
|
+
relations: { roles: true },
|
|
96
95
|
});
|
|
97
96
|
}
|
|
98
97
|
async validateUserForPasswordLogin(user, password) {
|
|
@@ -112,18 +111,31 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
112
111
|
}
|
|
113
112
|
}
|
|
114
113
|
async signUp(signUpDto, activeUser = null) {
|
|
114
|
+
const hasExtensionFields = Object.keys(signUpDto).some(k => !AuthenticationService_1.SIGNUP_DTO_KEYS.has(k));
|
|
115
|
+
if (hasExtensionFields) {
|
|
116
|
+
const provider = this.solidRegistry.getExtensionUserCreationProvider();
|
|
117
|
+
if (!provider) {
|
|
118
|
+
throw new common_1.InternalServerErrorException('No ExtensionUserCreationProvider registered. Register one to handle extension user creation.');
|
|
119
|
+
}
|
|
120
|
+
const entity = await provider.buildExtensionEntity(signUpDto);
|
|
121
|
+
const effectiveDto = { ...signUpDto, roles: provider.roles(signUpDto) };
|
|
122
|
+
return this.performSignUp(effectiveDto, entity, provider.repo);
|
|
123
|
+
}
|
|
124
|
+
return this.performSignUp(signUpDto, new user_entity_1.User(), this.userRepository);
|
|
125
|
+
}
|
|
126
|
+
async performSignUp(signUpDto, entity, repo) {
|
|
115
127
|
try {
|
|
116
128
|
const onForcePasswordChange = this.settingService.getConfigValue('forceChangePasswordOnFirstLogin');
|
|
117
129
|
const activateUserOnRegistration = this.settingService.getConfigValue('activateUserOnRegistration');
|
|
118
130
|
const defaultRole = this.settingService.getConfigValue('defaultRole');
|
|
119
|
-
var { user, pwd, autoGeneratedPwd } = await this.populateForSignup(
|
|
131
|
+
var { user, pwd, autoGeneratedPwd } = await this.populateForSignup(entity, signUpDto, activateUserOnRegistration, onForcePasswordChange);
|
|
120
132
|
const privateDto = signUpDto;
|
|
121
133
|
if (privateDto.isAllowedToGenerateApiKeys !== undefined) {
|
|
122
134
|
user.isAllowedToGenerateApiKeys = privateDto.isAllowedToGenerateApiKeys;
|
|
123
135
|
}
|
|
124
|
-
const savedUser = await
|
|
136
|
+
const savedUser = await repo.save(user);
|
|
125
137
|
const userRoles = signUpDto.roles ?? [];
|
|
126
|
-
if (signUpDto.username !== 'sa' && defaultRole) {
|
|
138
|
+
if ((signUpDto.roles?.length ?? 0) === 0 && signUpDto.username !== 'sa' && defaultRole) {
|
|
127
139
|
userRoles.push(defaultRole);
|
|
128
140
|
}
|
|
129
141
|
await this.handlePostSignup(savedUser, userRoles, pwd, autoGeneratedPwd);
|
|
@@ -132,30 +144,17 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
132
144
|
catch (err) {
|
|
133
145
|
const pgUniqueViolationErrorCode = '23505';
|
|
134
146
|
if (err.code === pgUniqueViolationErrorCode) {
|
|
135
|
-
throw new common_1.ConflictException(error_messages_1.ERROR_MESSAGES.
|
|
147
|
+
throw new common_1.ConflictException(parseUniqueConstraintError(err.detail || error_messages_1.ERROR_MESSAGES.UNIQUE_CONSTRAINT_VIOLATION));
|
|
136
148
|
}
|
|
137
149
|
throw err;
|
|
138
150
|
}
|
|
139
151
|
}
|
|
140
152
|
async signupForExtensionUser(signUpDto, extensionUserDto, extensionUserRepo) {
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
const extensionUser = extensionUserRepo.merge(extensionUserRepo.create(), extensionUserDto);
|
|
144
|
-
var { user, pwd, autoGeneratedPwd } = await this.populateForSignup(extensionUser, signUpDto, extensionUserDto.active ?? true, onForcePasswordChange);
|
|
145
|
-
const savedUser = await extensionUserRepo.save(user);
|
|
146
|
-
await this.handlePostSignup(savedUser, signUpDto.roles, pwd, autoGeneratedPwd);
|
|
147
|
-
return savedUser;
|
|
148
|
-
}
|
|
149
|
-
catch (err) {
|
|
150
|
-
const pgUniqueViolationErrorCode = '23505';
|
|
151
|
-
if (err.code === pgUniqueViolationErrorCode) {
|
|
152
|
-
throw new common_1.ConflictException(parseUniqueConstraintError(err.detail || error_messages_1.ERROR_MESSAGES.UNIQUE_CONSTRAINT_VIOLATION));
|
|
153
|
-
}
|
|
154
|
-
throw err;
|
|
155
|
-
}
|
|
153
|
+
const entity = extensionUserRepo.merge(extensionUserRepo.create(), extensionUserDto);
|
|
154
|
+
return this.performSignUp(signUpDto, entity, extensionUserRepo);
|
|
156
155
|
}
|
|
157
156
|
async populateForSignup(user, signUpDto, isUserActive = true, onForcePasswordChange) {
|
|
158
|
-
let autoGeneratedPwdPermission = this.settingService.getConfigValue(
|
|
157
|
+
let autoGeneratedPwdPermission = this.settingService.getConfigValue("iamAutoGeneratedPassword");
|
|
159
158
|
if (signUpDto.roles && signUpDto.roles.length > 0) {
|
|
160
159
|
for (let i = 0; i < signUpDto.roles.length; i++) {
|
|
161
160
|
const roleName = signUpDto.roles[i];
|
|
@@ -169,20 +168,20 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
169
168
|
if (signUpDto.mobile) {
|
|
170
169
|
user.mobile = signUpDto.mobile;
|
|
171
170
|
}
|
|
172
|
-
let pwd =
|
|
173
|
-
let autoGeneratedPwd =
|
|
171
|
+
let pwd = "";
|
|
172
|
+
let autoGeneratedPwd = "";
|
|
174
173
|
if (signUpDto.password) {
|
|
175
174
|
pwd = await this.hashingService.hash(signUpDto.password);
|
|
176
175
|
}
|
|
177
176
|
else {
|
|
178
|
-
if (autoGeneratedPwdPermission?.toString().toLowerCase() ===
|
|
177
|
+
if (autoGeneratedPwdPermission?.toString().toLowerCase() === "true") {
|
|
179
178
|
autoGeneratedPwd = this.generatePassword();
|
|
180
179
|
pwd = await this.hashingService.hash(autoGeneratedPwd);
|
|
181
180
|
user.forcePasswordChange = true;
|
|
182
181
|
}
|
|
183
182
|
else {
|
|
184
|
-
if (!await this.isPasswordlessRegistrationEnabled()) {
|
|
185
|
-
this.logger.error(
|
|
183
|
+
if (!(await this.isPasswordlessRegistrationEnabled())) {
|
|
184
|
+
this.logger.error("User being created without password, and password less login is also not enabled in the system. Is this intentional?");
|
|
186
185
|
throw new common_1.BadRequestException(error_messages_1.ERROR_MESSAGES.PASSWORDLESS_REGISTRATION_DISABLED);
|
|
187
186
|
}
|
|
188
187
|
pwd = await this.hashingService.hash(pwd);
|
|
@@ -217,48 +216,48 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
217
216
|
async notifyUserOnForcePasswordChange(user, autoGeneratedPwd) {
|
|
218
217
|
const companyLogo = await this.getCompanyLogo();
|
|
219
218
|
const mailService = this.mailServiceFactory.getMailService();
|
|
220
|
-
mailService.sendEmailUsingTemplate(user.email,
|
|
221
|
-
solidAppName: this.settingService.getConfigValue(
|
|
222
|
-
solidAppWebsiteUrl: this.settingService.getConfigValue(
|
|
223
|
-
frontendLoginPageUrl: this.settingService.getConfigValue(
|
|
219
|
+
mailService.sendEmailUsingTemplate(user.email, "on-force-password-change", {
|
|
220
|
+
solidAppName: this.settingService.getConfigValue("appTitle"),
|
|
221
|
+
solidAppWebsiteUrl: this.settingService.getConfigValue("solidAppWebsiteUrl"),
|
|
222
|
+
frontendLoginPageUrl: this.settingService.getConfigValue("frontendLoginPageUrl"),
|
|
224
223
|
email: user.email,
|
|
225
224
|
fullName: user.fullName,
|
|
226
225
|
userName: user.username,
|
|
227
226
|
password: autoGeneratedPwd,
|
|
228
|
-
companyLogoUrl: companyLogo
|
|
229
|
-
}, this.settingService.getConfigValue(
|
|
227
|
+
companyLogoUrl: companyLogo,
|
|
228
|
+
}, this.settingService.getConfigValue("shouldQueueEmails"), null, null, "user", user.id);
|
|
230
229
|
}
|
|
231
230
|
async isWelcomeEmailEnabled() {
|
|
232
|
-
const sendWelcomeEmailOnSignup = this.settingService.getConfigValue(
|
|
231
|
+
const sendWelcomeEmailOnSignup = this.settingService.getConfigValue("sendWelcomeEmailOnSignup");
|
|
233
232
|
return sendWelcomeEmailOnSignup;
|
|
234
233
|
}
|
|
235
234
|
async isWelcomeSmsEnabled() {
|
|
236
|
-
const sendWelcomeSmsOnSignup = this.settingService.getConfigValue(
|
|
235
|
+
const sendWelcomeSmsOnSignup = this.settingService.getConfigValue("sendWelcomeSmsOnSignup");
|
|
237
236
|
return sendWelcomeSmsOnSignup;
|
|
238
237
|
}
|
|
239
238
|
async notifyUserOnSignup(user) {
|
|
240
239
|
const companyLogo = await this.getCompanyLogo();
|
|
241
240
|
if (await this.isWelcomeEmailEnabled()) {
|
|
242
241
|
const mailService = this.mailServiceFactory.getMailService();
|
|
243
|
-
mailService.sendEmailUsingTemplate(user.email,
|
|
244
|
-
solidAppName: this.settingService.getConfigValue(
|
|
245
|
-
solidAppWebsiteUrl: this.settingService.getConfigValue(
|
|
246
|
-
frontendLoginPageUrl: this.settingService.getConfigValue(
|
|
242
|
+
mailService.sendEmailUsingTemplate(user.email, "email-on-signup", {
|
|
243
|
+
solidAppName: this.settingService.getConfigValue("appTitle"),
|
|
244
|
+
solidAppWebsiteUrl: this.settingService.getConfigValue("solidAppWebsiteUrl"),
|
|
245
|
+
frontendLoginPageUrl: this.settingService.getConfigValue("frontendLoginPageUrl"),
|
|
247
246
|
email: user.email,
|
|
248
247
|
fullName: user.fullName,
|
|
249
248
|
userName: user.username,
|
|
250
|
-
companyLogoUrl: companyLogo
|
|
251
|
-
}, this.settingService.getConfigValue(
|
|
249
|
+
companyLogoUrl: companyLogo,
|
|
250
|
+
}, this.settingService.getConfigValue("shouldQueueEmails"), null, null, "user", user.id);
|
|
252
251
|
}
|
|
253
252
|
const isWelcomeSmsEnabled = await this.isWelcomeSmsEnabled();
|
|
254
253
|
if (isWelcomeSmsEnabled && user.mobile) {
|
|
255
254
|
const smsService = this.smsFactory.getSmsService();
|
|
256
|
-
smsService.sendSMSUsingTemplate(user.mobile,
|
|
257
|
-
solidAppName: this.settingService.getConfigValue(
|
|
258
|
-
frontendLoginPageUrl: this.settingService.getConfigValue(
|
|
255
|
+
smsService.sendSMSUsingTemplate(user.mobile, "text-on-signup", {
|
|
256
|
+
solidAppName: this.settingService.getConfigValue("appTitle"),
|
|
257
|
+
frontendLoginPageUrl: this.settingService.getConfigValue("frontendLoginPageUrl"),
|
|
259
258
|
firstName: user.username,
|
|
260
|
-
fullName: user.fullName ? user.fullName : user.username
|
|
261
|
-
}, this.settingService.getConfigValue(
|
|
259
|
+
fullName: user.fullName ? user.fullName : user.username,
|
|
260
|
+
}, this.settingService.getConfigValue("shouldQueueSms"));
|
|
262
261
|
}
|
|
263
262
|
}
|
|
264
263
|
async otpInitiateRegistration(signUpDto) {
|
|
@@ -277,7 +276,7 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
277
276
|
await this.notifyUserOnOtpInitiateRegistration(user, validationSource);
|
|
278
277
|
}
|
|
279
278
|
catch (err) {
|
|
280
|
-
if (err.code ===
|
|
279
|
+
if (err.code === "23505") {
|
|
281
280
|
throw new common_1.ConflictException(error_messages_1.ERROR_MESSAGES.USER_ALREADY_EXISTS);
|
|
282
281
|
}
|
|
283
282
|
throw err;
|
|
@@ -285,10 +284,12 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
285
284
|
return { message: success_messages_1.SUCCESS_MESSAGES.OTP_SENT_SUCCESS_REGISTRATION };
|
|
286
285
|
}
|
|
287
286
|
validateOtpRegistrationInput(signUpDto, validationSource) {
|
|
288
|
-
if (validationSource === constants_1.PasswordlessRegistrationValidateWhatSources.EMAIL &&
|
|
287
|
+
if (validationSource === constants_1.PasswordlessRegistrationValidateWhatSources.EMAIL &&
|
|
288
|
+
(0, class_validator_1.isEmpty)(signUpDto.email)) {
|
|
289
289
|
throw new common_1.BadRequestException(error_messages_1.ERROR_MESSAGES.EMAIL_REQUIRED_FOR_VALIDATION);
|
|
290
290
|
}
|
|
291
|
-
if (validationSource === constants_1.PasswordlessRegistrationValidateWhatSources.MOBILE &&
|
|
291
|
+
if (validationSource === constants_1.PasswordlessRegistrationValidateWhatSources.MOBILE &&
|
|
292
|
+
(0, class_validator_1.isEmpty)(signUpDto.mobile)) {
|
|
292
293
|
throw new common_1.BadRequestException(error_messages_1.ERROR_MESSAGES.MOBILE_REQUIRED_FOR_VALIDATION);
|
|
293
294
|
}
|
|
294
295
|
}
|
|
@@ -298,16 +299,17 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
298
299
|
{ email: signUpDto.email },
|
|
299
300
|
{ mobile: signUpDto.mobile },
|
|
300
301
|
{ username: signUpDto.username },
|
|
301
|
-
]
|
|
302
|
+
],
|
|
302
303
|
});
|
|
303
304
|
}
|
|
304
305
|
resolvePasswordlessValidationSource() {
|
|
305
|
-
return this.settingService.getConfigValue(
|
|
306
|
+
return this.settingService.getConfigValue("passwordlessRegistrationValidateWhat");
|
|
306
307
|
}
|
|
307
308
|
async upsertUserWithRegistrationVerificationTokens(existingUser, signUpDto, validationSource) {
|
|
308
309
|
let user = existingUser;
|
|
309
310
|
if ((0, class_validator_1.isEmpty)(user)) {
|
|
310
311
|
user = this.createUser(signUpDto);
|
|
312
|
+
user.active = false;
|
|
311
313
|
await this.assignRegistrationOtp(validationSource, user);
|
|
312
314
|
await this.userRepository.save(user);
|
|
313
315
|
await this.userService.addRoleToUser(user.username, this.settingService.getConfigValue('defaultRole'));
|
|
@@ -331,8 +333,9 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
331
333
|
if (!passwordlessRegistrationValidateWhat) {
|
|
332
334
|
throw new common_1.BadRequestException(error_messages_1.ERROR_MESSAGES.VALIDATION_SOURCE_REQUIRED);
|
|
333
335
|
}
|
|
334
|
-
const autoLoginUserOnRegistration = this.settingService.getConfigValue(
|
|
335
|
-
if (passwordlessRegistrationValidateWhat ===
|
|
336
|
+
const autoLoginUserOnRegistration = this.settingService.getConfigValue("autoLoginUserOnRegistration");
|
|
337
|
+
if (passwordlessRegistrationValidateWhat ===
|
|
338
|
+
constants_1.PasswordlessRegistrationValidateWhatSources.EMAIL) {
|
|
336
339
|
const { token, expiresAt } = await this.otp();
|
|
337
340
|
user.emailVerificationTokenOnRegistration = token;
|
|
338
341
|
user.emailVerificationTokenOnRegistrationExpiresAt = expiresAt;
|
|
@@ -341,7 +344,8 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
341
344
|
user.emailVerificationTokenOnLoginExpiresAt = expiresAt;
|
|
342
345
|
}
|
|
343
346
|
}
|
|
344
|
-
if (passwordlessRegistrationValidateWhat ===
|
|
347
|
+
if (passwordlessRegistrationValidateWhat ===
|
|
348
|
+
constants_1.PasswordlessRegistrationValidateWhatSources.MOBILE) {
|
|
345
349
|
const { token, expiresAt } = await this.otp();
|
|
346
350
|
user.mobileVerificationTokenOnRegistration = token;
|
|
347
351
|
user.mobileVerificationTokenOnRegistrationExpiresAt = expiresAt;
|
|
@@ -353,27 +357,29 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
353
357
|
}
|
|
354
358
|
async notifyUserOnOtpInitiateRegistration(user, registrationValidationSource) {
|
|
355
359
|
const companyLogo = await this.getCompanyLogo();
|
|
356
|
-
if (registrationValidationSource ===
|
|
360
|
+
if (registrationValidationSource ===
|
|
361
|
+
constants_1.PasswordlessLoginValidateWhatSources.EMAIL) {
|
|
357
362
|
const mailService = this.mailServiceFactory.getMailService();
|
|
358
|
-
mailService.sendEmailUsingTemplate(user.email,
|
|
359
|
-
solidAppName: this.settingService.getConfigValue(
|
|
360
|
-
solidAppWebsiteUrl: this.settingService.getConfigValue(
|
|
363
|
+
mailService.sendEmailUsingTemplate(user.email, "otp-on-register", {
|
|
364
|
+
solidAppName: this.settingService.getConfigValue("appTitle"),
|
|
365
|
+
solidAppWebsiteUrl: this.settingService.getConfigValue("solidAppWebsiteUrl"),
|
|
361
366
|
firstName: user.username,
|
|
362
367
|
fullName: user.fullName ? user.fullName : user.username,
|
|
363
368
|
emailVerificationTokenOnRegistration: user.emailVerificationTokenOnRegistration,
|
|
364
|
-
companyLogoUrl: companyLogo
|
|
365
|
-
}, this.settingService.getConfigValue(
|
|
369
|
+
companyLogoUrl: companyLogo,
|
|
370
|
+
}, this.settingService.getConfigValue("shouldQueueEmails"), null, null, "user", user.id);
|
|
366
371
|
}
|
|
367
|
-
if (registrationValidationSource ===
|
|
372
|
+
if (registrationValidationSource ===
|
|
373
|
+
constants_1.PasswordlessLoginValidateWhatSources.MOBILE) {
|
|
368
374
|
const smsService = this.smsFactory.getSmsService();
|
|
369
|
-
smsService.sendSMSUsingTemplate(user.mobile,
|
|
370
|
-
solidAppName: this.settingService.getConfigValue(
|
|
375
|
+
smsService.sendSMSUsingTemplate(user.mobile, "otp-on-register", {
|
|
376
|
+
solidAppName: this.settingService.getConfigValue("appTitle"),
|
|
371
377
|
otp: user.mobileVerificationTokenOnRegistration,
|
|
372
378
|
mobileVerificationTokenOnRegistration: user.mobileVerificationTokenOnRegistration,
|
|
373
379
|
firstName: user.username,
|
|
374
380
|
fullName: user.fullName ? user.fullName : user.username,
|
|
375
|
-
companyLogoUrl: companyLogo
|
|
376
|
-
}, this.settingService.getConfigValue(
|
|
381
|
+
companyLogoUrl: companyLogo,
|
|
382
|
+
}, this.settingService.getConfigValue("shouldQueueSms"));
|
|
377
383
|
}
|
|
378
384
|
}
|
|
379
385
|
async otpConfirmRegistration(confirmSignUpDto) {
|
|
@@ -389,11 +395,15 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
389
395
|
const user = await this.findUserByRegistrationIdentifier(type, identifier);
|
|
390
396
|
this.validateRegistrationOtp(user, otp, type);
|
|
391
397
|
this.clearRegistrationOtp(user, type);
|
|
392
|
-
user.active =
|
|
393
|
-
|
|
398
|
+
user.active =
|
|
399
|
+
this.settingService.getConfigValue("activateUserOnRegistration") &&
|
|
400
|
+
(await this.areAllPasswordlessRegistrationValidationSourcesVerified(user));
|
|
394
401
|
const savedUser = await this.userRepository.save(user);
|
|
395
402
|
this.triggerRegistrationEvent(savedUser);
|
|
396
|
-
return {
|
|
403
|
+
return {
|
|
404
|
+
active: savedUser.active,
|
|
405
|
+
message: `User registration verified for ${type}`,
|
|
406
|
+
};
|
|
397
407
|
}
|
|
398
408
|
async findUserByRegistrationIdentifier(type, identifier) {
|
|
399
409
|
const where = type === constants_1.PasswordlessRegistrationValidateWhatSources.EMAIL
|
|
@@ -407,8 +417,12 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
407
417
|
}
|
|
408
418
|
validateRegistrationOtp(user, otp, type) {
|
|
409
419
|
const isEmail = type === constants_1.PasswordlessRegistrationValidateWhatSources.EMAIL;
|
|
410
|
-
const token = isEmail
|
|
411
|
-
|
|
420
|
+
const token = isEmail
|
|
421
|
+
? user.emailVerificationTokenOnRegistration
|
|
422
|
+
: user.mobileVerificationTokenOnRegistration;
|
|
423
|
+
const expiresAt = isEmail
|
|
424
|
+
? user.emailVerificationTokenOnRegistrationExpiresAt
|
|
425
|
+
: user.mobileVerificationTokenOnRegistrationExpiresAt;
|
|
412
426
|
if (token !== otp) {
|
|
413
427
|
throw new common_1.UnauthorizedException(error_messages_1.ERROR_MESSAGES.INVALID_OTP);
|
|
414
428
|
}
|
|
@@ -434,12 +448,14 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
434
448
|
}
|
|
435
449
|
async areAllPasswordlessRegistrationValidationSourcesVerified(user) {
|
|
436
450
|
const registrationValidationSource = this.resolvePasswordlessValidationSource();
|
|
437
|
-
if (registrationValidationSource ===
|
|
451
|
+
if (registrationValidationSource ===
|
|
452
|
+
constants_1.PasswordlessLoginValidateWhatSources.EMAIL) {
|
|
438
453
|
if (!user.emailVerifiedOnRegistrationAt) {
|
|
439
454
|
return false;
|
|
440
455
|
}
|
|
441
456
|
}
|
|
442
|
-
if (registrationValidationSource ===
|
|
457
|
+
if (registrationValidationSource ===
|
|
458
|
+
constants_1.PasswordlessLoginValidateWhatSources.MOBILE) {
|
|
443
459
|
if (!user.mobileVerifiedOnRegistrationAt) {
|
|
444
460
|
return false;
|
|
445
461
|
}
|
|
@@ -448,7 +464,7 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
448
464
|
}
|
|
449
465
|
async otp() {
|
|
450
466
|
const now = new Date();
|
|
451
|
-
const otpExpiry = this.settingService.getConfigValue(
|
|
467
|
+
const otpExpiry = this.settingService.getConfigValue("otpExpiry");
|
|
452
468
|
now.setMinutes(now.getMinutes() + otpExpiry);
|
|
453
469
|
return {
|
|
454
470
|
token: (0, crypto_1.randomInt)(100000, 999999).toString(),
|
|
@@ -456,7 +472,7 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
456
472
|
};
|
|
457
473
|
}
|
|
458
474
|
getDummyOtpForUser(user) {
|
|
459
|
-
const dummyOtp = this.settingService.getConfigValue(
|
|
475
|
+
const dummyOtp = this.settingService.getConfigValue("dummyOtp");
|
|
460
476
|
if (!dummyOtp || !user?.username) {
|
|
461
477
|
return undefined;
|
|
462
478
|
}
|
|
@@ -471,12 +487,12 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
471
487
|
return allowedUsers.has(username) ? dummyOtp : undefined;
|
|
472
488
|
}
|
|
473
489
|
getDummyOtpUsers() {
|
|
474
|
-
const rawUsers = this.settingService.getConfigValue(
|
|
475
|
-
if (!rawUsers || typeof rawUsers !==
|
|
490
|
+
const rawUsers = this.settingService.getConfigValue("dummyOtpUsers");
|
|
491
|
+
if (!rawUsers || typeof rawUsers !== "string") {
|
|
476
492
|
return new Set();
|
|
477
493
|
}
|
|
478
494
|
return new Set(rawUsers
|
|
479
|
-
.split(
|
|
495
|
+
.split(",")
|
|
480
496
|
.map((value) => value.trim().toLowerCase())
|
|
481
497
|
.filter(Boolean));
|
|
482
498
|
}
|
|
@@ -489,7 +505,7 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
489
505
|
await this.rehashPasswordIfRequired(user, signInDto.password);
|
|
490
506
|
await this.resetFailedAttempts(user);
|
|
491
507
|
const tokens = await this.generateTokens(user);
|
|
492
|
-
await this.userActivityHistoryService.logEvent(
|
|
508
|
+
await this.userActivityHistoryService.logEvent("login", user);
|
|
493
509
|
return {
|
|
494
510
|
user: {
|
|
495
511
|
email: user.email,
|
|
@@ -497,15 +513,15 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
497
513
|
username: user.username,
|
|
498
514
|
forcePasswordChange: user.forcePasswordChange,
|
|
499
515
|
id: user.id,
|
|
500
|
-
roles: user.roles.map((role) => role.name)
|
|
516
|
+
roles: user.roles.map((role) => role.name),
|
|
501
517
|
},
|
|
502
|
-
...tokens
|
|
518
|
+
...tokens,
|
|
503
519
|
};
|
|
504
520
|
}
|
|
505
521
|
maskEmail(email) {
|
|
506
522
|
if (!email)
|
|
507
523
|
return null;
|
|
508
|
-
const [localPart, domain] = email.split(
|
|
524
|
+
const [localPart, domain] = email.split("@");
|
|
509
525
|
if (localPart.length <= 2) {
|
|
510
526
|
return `${localPart[0]}***@${domain}`;
|
|
511
527
|
}
|
|
@@ -537,7 +553,7 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
537
553
|
return this.buildLoginOtpResponse(user, type);
|
|
538
554
|
}
|
|
539
555
|
resolveLoginType(signInDto) {
|
|
540
|
-
const setting = this.settingService.getConfigValue(
|
|
556
|
+
const setting = this.settingService.getConfigValue("passwordlessLoginValidateWhat");
|
|
541
557
|
if (setting === constants_1.PasswordlessLoginValidateWhatSources.SELECTABLE) {
|
|
542
558
|
if (signInDto.type !== constants_1.PasswordlessLoginValidateWhatSources.EMAIL &&
|
|
543
559
|
signInDto.type !== constants_1.PasswordlessLoginValidateWhatSources.MOBILE) {
|
|
@@ -590,7 +606,10 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
590
606
|
const maskedIdentifier = type === constants_1.PasswordlessLoginValidateWhatSources.EMAIL
|
|
591
607
|
? { email: this.maskEmail(user.email) }
|
|
592
608
|
: { mobile: this.maskMobile(user.mobile) };
|
|
593
|
-
return {
|
|
609
|
+
return {
|
|
610
|
+
message: success_messages_1.SUCCESS_MESSAGES.OTP_SENT_SUCCESS_LOGIN,
|
|
611
|
+
user: maskedIdentifier,
|
|
612
|
+
};
|
|
594
613
|
}
|
|
595
614
|
async notifyUserOnOtpInititateLogin(user, loginType) {
|
|
596
615
|
const companyLogo = await this.getCompanyLogo();
|
|
@@ -599,25 +618,25 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
599
618
|
return;
|
|
600
619
|
if (loginType === constants_1.PasswordlessLoginValidateWhatSources.EMAIL) {
|
|
601
620
|
const mailService = this.mailServiceFactory.getMailService();
|
|
602
|
-
mailService.sendEmailUsingTemplate(user.email,
|
|
603
|
-
solidAppName: this.settingService.getConfigValue(
|
|
604
|
-
solidAppWebsiteUrl: this.settingService.getConfigValue(
|
|
621
|
+
mailService.sendEmailUsingTemplate(user.email, "otp-on-login", {
|
|
622
|
+
solidAppName: this.settingService.getConfigValue("appTitle"),
|
|
623
|
+
solidAppWebsiteUrl: this.settingService.getConfigValue("solidAppWebsiteUrl"),
|
|
605
624
|
firstName: user.username,
|
|
606
625
|
emailVerificationTokenOnLogin: user.emailVerificationTokenOnLogin,
|
|
607
626
|
fullName: user.fullName ? user.fullName : user.username,
|
|
608
|
-
companyLogoUrl: companyLogo
|
|
609
|
-
}, this.settingService.getConfigValue(
|
|
627
|
+
companyLogoUrl: companyLogo,
|
|
628
|
+
}, this.settingService.getConfigValue("shouldQueueEmails"), null, null, "user", user.id);
|
|
610
629
|
}
|
|
611
630
|
if (loginType === constants_1.PasswordlessLoginValidateWhatSources.MOBILE) {
|
|
612
631
|
const smsService = this.smsFactory.getSmsService();
|
|
613
|
-
smsService.sendSMSUsingTemplate(user.mobile,
|
|
614
|
-
solidAppName: this.settingService.getConfigValue(
|
|
632
|
+
smsService.sendSMSUsingTemplate(user.mobile, "otp-on-login", {
|
|
633
|
+
solidAppName: this.settingService.getConfigValue("appTitle"),
|
|
615
634
|
otp: user.mobileVerificationTokenOnLogin,
|
|
616
635
|
mobileVerificationTokenOnLogin: user.mobileVerificationTokenOnLogin,
|
|
617
636
|
firstName: user.username,
|
|
618
637
|
fullName: user.fullName ? user.fullName : user.username,
|
|
619
|
-
companyLogoUrl: companyLogo
|
|
620
|
-
}, this.settingService.getConfigValue(
|
|
638
|
+
companyLogoUrl: companyLogo,
|
|
639
|
+
}, this.settingService.getConfigValue("shouldQueueSms"));
|
|
621
640
|
}
|
|
622
641
|
}
|
|
623
642
|
async otpConfirmLogin(confirmSignInDto) {
|
|
@@ -630,7 +649,9 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
630
649
|
type !== constants_1.PasswordlessLoginValidateWhatSources.MOBILE) {
|
|
631
650
|
throw new common_1.BadRequestException(error_messages_1.ERROR_MESSAGES.INVALID_VERIFICATION_TYPE);
|
|
632
651
|
}
|
|
633
|
-
const user = await this.findUserForLogin(type, identifier, {
|
|
652
|
+
const user = await this.findUserForLogin(type, identifier, {
|
|
653
|
+
withRoles: true,
|
|
654
|
+
});
|
|
634
655
|
this.checkAccountBlocked(user);
|
|
635
656
|
const dummyOtp = this.getDummyOtpForUser(user);
|
|
636
657
|
if (dummyOtp) {
|
|
@@ -647,14 +668,18 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
647
668
|
throw e;
|
|
648
669
|
}
|
|
649
670
|
await this.clearLoginOtp(user, type);
|
|
650
|
-
await this.userActivityHistoryService.logEvent(
|
|
671
|
+
await this.userActivityHistoryService.logEvent("login", user);
|
|
651
672
|
await this.resetFailedAttempts(user);
|
|
652
673
|
return this.buildLoginTokenResponse(user);
|
|
653
674
|
}
|
|
654
675
|
validateLoginOtp(user, otp, type) {
|
|
655
676
|
const isEmail = type === constants_1.PasswordlessLoginValidateWhatSources.EMAIL;
|
|
656
|
-
const token = isEmail
|
|
657
|
-
|
|
677
|
+
const token = isEmail
|
|
678
|
+
? user.emailVerificationTokenOnLogin
|
|
679
|
+
: user.mobileVerificationTokenOnLogin;
|
|
680
|
+
const expiresAt = isEmail
|
|
681
|
+
? user.emailVerificationTokenOnLoginExpiresAt
|
|
682
|
+
: user.mobileVerificationTokenOnLoginExpiresAt;
|
|
658
683
|
if (token !== otp) {
|
|
659
684
|
throw new common_1.UnauthorizedException(error_messages_1.ERROR_MESSAGES.INVALID_OTP);
|
|
660
685
|
}
|
|
@@ -697,7 +722,7 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
697
722
|
}
|
|
698
723
|
async changePassword(changePasswordDto, activeUser) {
|
|
699
724
|
const user = await this.userRepository.findOne({
|
|
700
|
-
where: { id: changePasswordDto.id }
|
|
725
|
+
where: { id: changePasswordDto.id },
|
|
701
726
|
});
|
|
702
727
|
if (!user) {
|
|
703
728
|
throw new common_1.NotFoundException(error_messages_1.ERROR_MESSAGES.USER_NOT_FOUND);
|
|
@@ -705,7 +730,7 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
705
730
|
if (!user.active) {
|
|
706
731
|
throw new common_1.UnauthorizedException(error_messages_1.ERROR_MESSAGES.USER_INACTIVE);
|
|
707
732
|
}
|
|
708
|
-
if (user.lastLoginProvider !==
|
|
733
|
+
if (user.lastLoginProvider !== "local") {
|
|
709
734
|
throw new common_1.BadRequestException(error_messages_1.ERROR_MESSAGES.NON_LOCAL_PROVIDER);
|
|
710
735
|
}
|
|
711
736
|
if (!(user.id === activeUser.sub)) {
|
|
@@ -729,7 +754,7 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
729
754
|
}
|
|
730
755
|
async generateForgotPasswordToken(user) {
|
|
731
756
|
const expiryTime = new Date();
|
|
732
|
-
const forgotPasswordVerificationTokenExpiry = this.settingService.getConfigValue(
|
|
757
|
+
const forgotPasswordVerificationTokenExpiry = this.settingService.getConfigValue("forgotPasswordVerificationTokenExpiry");
|
|
733
758
|
const dummyOtp = this.getDummyOtpForUser(user);
|
|
734
759
|
expiryTime.setMinutes(expiryTime.getMinutes() + forgotPasswordVerificationTokenExpiry);
|
|
735
760
|
return {
|
|
@@ -746,7 +771,7 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
746
771
|
if (isValidUser && !user?.active) {
|
|
747
772
|
isValidUser = false;
|
|
748
773
|
}
|
|
749
|
-
if (isValidUser && user?.lastLoginProvider !==
|
|
774
|
+
if (isValidUser && user?.lastLoginProvider !== "local") {
|
|
750
775
|
isValidUser = false;
|
|
751
776
|
}
|
|
752
777
|
if (isValidUser) {
|
|
@@ -757,40 +782,43 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
757
782
|
await this.notifyUserOnForgotPassword(user);
|
|
758
783
|
}
|
|
759
784
|
return {
|
|
760
|
-
status:
|
|
785
|
+
status: "success",
|
|
761
786
|
message: success_messages_1.SUCCESS_MESSAGES.FORGOT_PASSWORD_TOKEN_SENT,
|
|
762
|
-
error:
|
|
763
|
-
errorCode:
|
|
787
|
+
error: "",
|
|
788
|
+
errorCode: "",
|
|
764
789
|
data: {
|
|
765
790
|
user: {
|
|
766
791
|
email: user?.email,
|
|
767
792
|
},
|
|
768
|
-
}
|
|
793
|
+
},
|
|
769
794
|
};
|
|
770
795
|
}
|
|
771
796
|
async notifyUserOnForgotPassword(user) {
|
|
772
797
|
const companyLogo = await this.getCompanyLogo();
|
|
773
|
-
const forgotPasswordSendVerificationTokenOn = this.settingService.getConfigValue(
|
|
774
|
-
if (forgotPasswordSendVerificationTokenOn ==
|
|
798
|
+
const forgotPasswordSendVerificationTokenOn = this.settingService.getConfigValue("forgotPasswordSendVerificationTokenOn");
|
|
799
|
+
if (forgotPasswordSendVerificationTokenOn ==
|
|
800
|
+
constants_1.ForgotPasswordSendVerificationTokenOn.EMAIL) {
|
|
775
801
|
const mailService = this.mailServiceFactory.getMailService();
|
|
776
|
-
mailService.sendEmailUsingTemplate(user.email,
|
|
777
|
-
solidAppName: this.settingService.getConfigValue(
|
|
778
|
-
solidAppWebsiteUrl: this.settingService.getConfigValue(
|
|
802
|
+
mailService.sendEmailUsingTemplate(user.email, "forgot-password", {
|
|
803
|
+
solidAppName: this.settingService.getConfigValue("appTitle"),
|
|
804
|
+
solidAppWebsiteUrl: this.settingService.getConfigValue("solidAppWebsiteUrl"),
|
|
779
805
|
firstName: user.username,
|
|
780
806
|
fullName: user.fullName,
|
|
781
|
-
passwordResetLink: `${this.settingService.getConfigValue(
|
|
782
|
-
companyLogoUrl: companyLogo
|
|
783
|
-
}, this.settingService.getConfigValue(
|
|
807
|
+
passwordResetLink: `${this.settingService.getConfigValue("frontendForgotPasswordPageUrl")}?token=${user.verificationTokenOnForgotPassword}`,
|
|
808
|
+
companyLogoUrl: companyLogo,
|
|
809
|
+
}, this.settingService.getConfigValue("shouldQueueEmails"), null, null, "user", user.id);
|
|
784
810
|
}
|
|
785
|
-
if (forgotPasswordSendVerificationTokenOn ==
|
|
811
|
+
if (forgotPasswordSendVerificationTokenOn ==
|
|
812
|
+
constants_1.ForgotPasswordSendVerificationTokenOn.MOBILE &&
|
|
813
|
+
user.mobile) {
|
|
786
814
|
const smsService = this.smsFactory.getSmsService();
|
|
787
|
-
smsService.sendSMSUsingTemplate(user.mobile,
|
|
788
|
-
solidAppName: this.settingService.getConfigValue(
|
|
815
|
+
smsService.sendSMSUsingTemplate(user.mobile, "forgot-password", {
|
|
816
|
+
solidAppName: this.settingService.getConfigValue("appTitle"),
|
|
789
817
|
otp: user.verificationTokenOnForgotPassword,
|
|
790
818
|
verificationTokenOnForgotPassword: user.verificationTokenOnForgotPassword,
|
|
791
819
|
firstName: user.username,
|
|
792
|
-
companyLogoUrl: companyLogo
|
|
793
|
-
}, this.settingService.getConfigValue(
|
|
820
|
+
companyLogoUrl: companyLogo,
|
|
821
|
+
}, this.settingService.getConfigValue("shouldQueueSms"));
|
|
794
822
|
}
|
|
795
823
|
}
|
|
796
824
|
async confirmForgotPassword(confirmForgotPasswordDto) {
|
|
@@ -798,7 +826,7 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
798
826
|
const user = await this.resolveUserByVerificationToken(confirmForgotPasswordDto.verificationToken);
|
|
799
827
|
if (!user)
|
|
800
828
|
throw new common_1.UnauthorizedException(error_messages_1.ERROR_MESSAGES.INVALID_CREDENTIALS);
|
|
801
|
-
if (user.lastLoginProvider !==
|
|
829
|
+
if (user.lastLoginProvider !== "local")
|
|
802
830
|
throw new common_1.UnauthorizedException(error_messages_1.ERROR_MESSAGES.INVALID_CREDENTIALS);
|
|
803
831
|
if (!user.active)
|
|
804
832
|
throw new common_1.UnauthorizedException(error_messages_1.ERROR_MESSAGES.INVALID_CREDENTIALS);
|
|
@@ -806,13 +834,15 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
806
834
|
.createQueryBuilder()
|
|
807
835
|
.update(user_entity_1.User)
|
|
808
836
|
.set({
|
|
809
|
-
forgotPasswordConfirmedAt: () =>
|
|
810
|
-
verificationTokenOnForgotPassword: () =>
|
|
811
|
-
verificationTokenOnForgotPasswordExpiresAt: () =>
|
|
837
|
+
forgotPasswordConfirmedAt: () => "NOW()",
|
|
838
|
+
verificationTokenOnForgotPassword: () => "NULL",
|
|
839
|
+
verificationTokenOnForgotPasswordExpiresAt: () => "NULL",
|
|
812
840
|
})
|
|
813
|
-
.where(
|
|
814
|
-
.andWhere(
|
|
815
|
-
.
|
|
841
|
+
.where("id = :id", { id: user.id })
|
|
842
|
+
.andWhere("verificationTokenOnForgotPassword = :token", {
|
|
843
|
+
token: confirmForgotPasswordDto.verificationToken,
|
|
844
|
+
})
|
|
845
|
+
.andWhere("verificationTokenOnForgotPasswordExpiresAt > NOW()")
|
|
816
846
|
.execute();
|
|
817
847
|
if (affected !== 1) {
|
|
818
848
|
throw new common_1.UnauthorizedException(error_messages_1.ERROR_MESSAGES.INVALID_CREDENTIALS);
|
|
@@ -820,41 +850,48 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
820
850
|
const pwdHash = await this.hashingService.hash(confirmForgotPasswordDto.password);
|
|
821
851
|
const pwdScheme = this.hashingService.name();
|
|
822
852
|
const pwdSchemeVersion = this.hashingService.currentVersion();
|
|
823
|
-
await m.getRepository(user_entity_1.User).update({ id: user.id }, {
|
|
853
|
+
await m.getRepository(user_entity_1.User).update({ id: user.id }, {
|
|
854
|
+
password: pwdHash,
|
|
855
|
+
passwordScheme: pwdScheme,
|
|
856
|
+
passwordSchemeVersion: pwdSchemeVersion,
|
|
857
|
+
});
|
|
824
858
|
await this.notifyUserOnPasswordChanged(user);
|
|
825
859
|
return {
|
|
826
|
-
status:
|
|
860
|
+
status: "success",
|
|
827
861
|
message: success_messages_1.SUCCESS_MESSAGES.FORGOT_PASSWORD_CONFIRMED,
|
|
828
|
-
error:
|
|
829
|
-
errorCode:
|
|
862
|
+
error: "",
|
|
863
|
+
errorCode: "",
|
|
830
864
|
data: {},
|
|
831
865
|
};
|
|
832
866
|
});
|
|
833
867
|
}
|
|
834
868
|
async notifyUserOnPasswordChanged(user) {
|
|
835
869
|
const companyLogo = await this.getCompanyLogo();
|
|
836
|
-
const forgotPasswordSendVerificationTokenOn = this.settingService.getConfigValue(
|
|
837
|
-
if (forgotPasswordSendVerificationTokenOn ==
|
|
870
|
+
const forgotPasswordSendVerificationTokenOn = this.settingService.getConfigValue("forgotPasswordSendVerificationTokenOn");
|
|
871
|
+
if (forgotPasswordSendVerificationTokenOn ==
|
|
872
|
+
constants_1.ForgotPasswordSendVerificationTokenOn.EMAIL) {
|
|
838
873
|
const mailService = this.mailServiceFactory.getMailService();
|
|
839
|
-
mailService.sendEmailUsingTemplate(user.email,
|
|
840
|
-
solidAppName: this.settingService.getConfigValue(
|
|
841
|
-
solidAppWebsiteUrl: this.settingService.getConfigValue(
|
|
874
|
+
mailService.sendEmailUsingTemplate(user.email, "password-changed", {
|
|
875
|
+
solidAppName: this.settingService.getConfigValue("appTitle"),
|
|
876
|
+
solidAppWebsiteUrl: this.settingService.getConfigValue("solidAppWebsiteUrl"),
|
|
842
877
|
email: user.email,
|
|
843
878
|
firstName: user.username,
|
|
844
879
|
fullName: user.fullName,
|
|
845
|
-
passwordResetLink: `${this.settingService.getConfigValue(
|
|
846
|
-
companyLogoUrl: companyLogo
|
|
847
|
-
}, this.settingService.getConfigValue(
|
|
880
|
+
passwordResetLink: `${this.settingService.getConfigValue("frontendForgotPasswordPageUrl")}?token=${user.verificationTokenOnForgotPassword}`,
|
|
881
|
+
companyLogoUrl: companyLogo,
|
|
882
|
+
}, this.settingService.getConfigValue("shouldQueueEmails"), null, null, "user", user.id);
|
|
848
883
|
}
|
|
849
|
-
if (forgotPasswordSendVerificationTokenOn ==
|
|
884
|
+
if (forgotPasswordSendVerificationTokenOn ==
|
|
885
|
+
constants_1.ForgotPasswordSendVerificationTokenOn.MOBILE &&
|
|
886
|
+
user.mobile) {
|
|
850
887
|
const smsService = this.smsFactory.getSmsService();
|
|
851
|
-
smsService.sendSMSUsingTemplate(user.mobile,
|
|
852
|
-
solidAppName: this.settingService.getConfigValue(
|
|
888
|
+
smsService.sendSMSUsingTemplate(user.mobile, "forgot-password", {
|
|
889
|
+
solidAppName: this.settingService.getConfigValue("appTitle"),
|
|
853
890
|
otp: user.verificationTokenOnForgotPassword,
|
|
854
891
|
verificationTokenOnForgotPassword: user.verificationTokenOnForgotPassword,
|
|
855
892
|
firstName: user.username,
|
|
856
|
-
companyLogoUrl: companyLogo
|
|
857
|
-
}, this.settingService.getConfigValue(
|
|
893
|
+
companyLogoUrl: companyLogo,
|
|
894
|
+
}, this.settingService.getConfigValue("shouldQueueSms"));
|
|
858
895
|
}
|
|
859
896
|
}
|
|
860
897
|
async generateTokens(user) {
|
|
@@ -897,14 +934,14 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
897
934
|
id: sub,
|
|
898
935
|
},
|
|
899
936
|
relations: {
|
|
900
|
-
roles: true
|
|
901
|
-
}
|
|
937
|
+
roles: true,
|
|
938
|
+
},
|
|
902
939
|
});
|
|
903
940
|
if (!user) {
|
|
904
941
|
throw new common_1.UnauthorizedException(error_messages_1.ERROR_MESSAGES.SESSION_INVALID);
|
|
905
942
|
}
|
|
906
943
|
const currentRefreshToken = await this.refreshTokenIdsStorage.validateAndRotate(user, refreshTokenDto.refreshToken);
|
|
907
|
-
await this.userActivityHistoryService.logEvent(
|
|
944
|
+
await this.userActivityHistoryService.logEvent("tokenRefreshed", user);
|
|
908
945
|
return {
|
|
909
946
|
accessToken: await this.generateAccessToken(user),
|
|
910
947
|
refreshToken: currentRefreshToken,
|
|
@@ -935,7 +972,8 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
935
972
|
try {
|
|
936
973
|
const response = await this.httpService.axiosRef.get(`https://www.googleapis.com/oauth2/v1/userinfo?alt=json&access_token=${user.googleAccessToken}`);
|
|
937
974
|
const userProfile = response.data;
|
|
938
|
-
if (userProfile.email === user.email &&
|
|
975
|
+
if (userProfile.email === user.email &&
|
|
976
|
+
userProfile.id === user.googleId) {
|
|
939
977
|
return userProfile;
|
|
940
978
|
}
|
|
941
979
|
else {
|
|
@@ -949,11 +987,11 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
949
987
|
async signInUsingGoogle(accessCode) {
|
|
950
988
|
const user = await this.userRepository.findOne({
|
|
951
989
|
where: {
|
|
952
|
-
accessCode: accessCode
|
|
990
|
+
accessCode: accessCode,
|
|
953
991
|
},
|
|
954
992
|
relations: {
|
|
955
|
-
roles: true
|
|
956
|
-
}
|
|
993
|
+
roles: true,
|
|
994
|
+
},
|
|
957
995
|
});
|
|
958
996
|
if (!user) {
|
|
959
997
|
throw new common_1.UnauthorizedException(error_messages_1.ERROR_MESSAGES.USER_NOT_FOUND);
|
|
@@ -974,24 +1012,156 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
974
1012
|
mobile: user.mobile,
|
|
975
1013
|
username: user.username,
|
|
976
1014
|
id: user.id,
|
|
977
|
-
roles: user.roles.map((role) => role.name)
|
|
1015
|
+
roles: user.roles.map((role) => role.name),
|
|
1016
|
+
},
|
|
1017
|
+
...tokens,
|
|
1018
|
+
};
|
|
1019
|
+
}
|
|
1020
|
+
async validateUserUsingFacebook(user) {
|
|
1021
|
+
try {
|
|
1022
|
+
const response = await this.httpService.axiosRef.get(`https://graph.facebook.com/me?fields=id,name,email&access_token=${user.facebookAccessToken}`);
|
|
1023
|
+
const userProfile = response.data;
|
|
1024
|
+
if (userProfile.id === user.facebookId &&
|
|
1025
|
+
(!user.email || !userProfile.email || userProfile.email === user.email)) {
|
|
1026
|
+
return userProfile;
|
|
1027
|
+
}
|
|
1028
|
+
else {
|
|
1029
|
+
throw new common_1.UnauthorizedException(error_messages_1.ERROR_MESSAGES.INVALID_USER_PROFILE);
|
|
1030
|
+
}
|
|
1031
|
+
}
|
|
1032
|
+
catch (error) {
|
|
1033
|
+
throw new common_1.UnauthorizedException("Facebook OAuth profile fetch failed");
|
|
1034
|
+
}
|
|
1035
|
+
}
|
|
1036
|
+
async signInUsingFacebook(accessCode) {
|
|
1037
|
+
const user = await this.userRepository.findOne({
|
|
1038
|
+
where: {
|
|
1039
|
+
accessCode: accessCode,
|
|
1040
|
+
},
|
|
1041
|
+
relations: {
|
|
1042
|
+
roles: true,
|
|
1043
|
+
},
|
|
1044
|
+
});
|
|
1045
|
+
if (!user) {
|
|
1046
|
+
throw new common_1.UnauthorizedException(error_messages_1.ERROR_MESSAGES.USER_NOT_FOUND);
|
|
1047
|
+
}
|
|
1048
|
+
this.checkAccountBlocked(user);
|
|
1049
|
+
try {
|
|
1050
|
+
await this.validateUserUsingFacebook(user);
|
|
1051
|
+
}
|
|
1052
|
+
catch (e) {
|
|
1053
|
+
await this.incrementFailedAttempts(user);
|
|
1054
|
+
throw e;
|
|
1055
|
+
}
|
|
1056
|
+
await this.resetFailedAttempts(user);
|
|
1057
|
+
const tokens = await this.generateTokens(user);
|
|
1058
|
+
return {
|
|
1059
|
+
user: {
|
|
1060
|
+
email: user.email,
|
|
1061
|
+
mobile: user.mobile,
|
|
1062
|
+
username: user.username,
|
|
1063
|
+
id: user.id,
|
|
1064
|
+
roles: user.roles.map((role) => role.name),
|
|
978
1065
|
},
|
|
979
|
-
...tokens
|
|
1066
|
+
...tokens,
|
|
1067
|
+
};
|
|
1068
|
+
}
|
|
1069
|
+
async validateUserUsingMicrosoft(user) {
|
|
1070
|
+
try {
|
|
1071
|
+
const response = await this.httpService.axiosRef.get(`https://graph.microsoft.com/v1.0/me`, {
|
|
1072
|
+
headers: {
|
|
1073
|
+
Authorization: `Bearer ${user.microsoftAccessToken}`,
|
|
1074
|
+
},
|
|
1075
|
+
});
|
|
1076
|
+
const userProfile = response.data;
|
|
1077
|
+
const profileEmail = userProfile.mail || userProfile.userPrincipalName;
|
|
1078
|
+
if (userProfile.id === user.microsoftId &&
|
|
1079
|
+
(!user.email || profileEmail === user.email)) {
|
|
1080
|
+
return userProfile;
|
|
1081
|
+
}
|
|
1082
|
+
else {
|
|
1083
|
+
throw new common_1.UnauthorizedException(error_messages_1.ERROR_MESSAGES.INVALID_USER_PROFILE);
|
|
1084
|
+
}
|
|
1085
|
+
}
|
|
1086
|
+
catch (error) {
|
|
1087
|
+
throw new common_1.UnauthorizedException("Microsoft OAuth profile fetch failed");
|
|
1088
|
+
}
|
|
1089
|
+
}
|
|
1090
|
+
async signInUsingMicrosoft(accessCode) {
|
|
1091
|
+
const user = await this.userRepository.findOne({
|
|
1092
|
+
where: {
|
|
1093
|
+
accessCode: accessCode,
|
|
1094
|
+
},
|
|
1095
|
+
relations: {
|
|
1096
|
+
roles: true,
|
|
1097
|
+
},
|
|
1098
|
+
});
|
|
1099
|
+
if (!user) {
|
|
1100
|
+
throw new common_1.UnauthorizedException(error_messages_1.ERROR_MESSAGES.USER_NOT_FOUND);
|
|
1101
|
+
}
|
|
1102
|
+
this.checkAccountBlocked(user);
|
|
1103
|
+
try {
|
|
1104
|
+
await this.validateUserUsingMicrosoft(user);
|
|
1105
|
+
}
|
|
1106
|
+
catch (e) {
|
|
1107
|
+
await this.incrementFailedAttempts(user);
|
|
1108
|
+
throw e;
|
|
1109
|
+
}
|
|
1110
|
+
await this.resetFailedAttempts(user);
|
|
1111
|
+
const tokens = await this.generateTokens(user);
|
|
1112
|
+
return {
|
|
1113
|
+
user: {
|
|
1114
|
+
email: user.email,
|
|
1115
|
+
mobile: user.mobile,
|
|
1116
|
+
username: user.username,
|
|
1117
|
+
id: user.id,
|
|
1118
|
+
roles: user.roles.map((role) => role.name),
|
|
1119
|
+
},
|
|
1120
|
+
...tokens,
|
|
1121
|
+
};
|
|
1122
|
+
}
|
|
1123
|
+
async signInUsingApple(accessCode) {
|
|
1124
|
+
const user = await this.userRepository.findOne({
|
|
1125
|
+
where: {
|
|
1126
|
+
accessCode: accessCode,
|
|
1127
|
+
},
|
|
1128
|
+
relations: {
|
|
1129
|
+
roles: true,
|
|
1130
|
+
},
|
|
1131
|
+
});
|
|
1132
|
+
if (!user) {
|
|
1133
|
+
throw new common_1.UnauthorizedException(error_messages_1.ERROR_MESSAGES.USER_NOT_FOUND);
|
|
1134
|
+
}
|
|
1135
|
+
this.checkAccountBlocked(user);
|
|
1136
|
+
await this.resetFailedAttempts(user);
|
|
1137
|
+
const tokens = await this.generateTokens(user);
|
|
1138
|
+
return {
|
|
1139
|
+
user: {
|
|
1140
|
+
email: user.email,
|
|
1141
|
+
mobile: user.mobile,
|
|
1142
|
+
username: user.username,
|
|
1143
|
+
id: user.id,
|
|
1144
|
+
roles: user.roles.map((role) => role.name),
|
|
1145
|
+
},
|
|
1146
|
+
...tokens,
|
|
980
1147
|
};
|
|
981
1148
|
}
|
|
982
1149
|
async isPasswordlessRegistrationEnabled() {
|
|
983
|
-
return this.settingService.getConfigValue(
|
|
1150
|
+
return this.settingService.getConfigValue("passwordLessAuth");
|
|
984
1151
|
}
|
|
985
1152
|
checkAccountBlocked(user) {
|
|
986
|
-
const maxFailedAttempts = this.settingService.getConfigValue(
|
|
987
|
-
if (maxFailedAttempts > 0 &&
|
|
1153
|
+
const maxFailedAttempts = this.settingService.getConfigValue("maxFailedLoginAttempts");
|
|
1154
|
+
if (maxFailedAttempts > 0 &&
|
|
1155
|
+
user.failedLoginAttempts >= maxFailedAttempts) {
|
|
988
1156
|
throw new common_1.ForbiddenException(error_messages_1.ERROR_MESSAGES.ACCOUNT_BLOCKED);
|
|
989
1157
|
}
|
|
990
1158
|
}
|
|
991
1159
|
async incrementFailedAttempts(user) {
|
|
992
1160
|
const nextFailedAttempts = (user.failedLoginAttempts ?? 0) + 1;
|
|
993
1161
|
user.failedLoginAttempts = nextFailedAttempts;
|
|
994
|
-
await this.userRepository.update(user.id, {
|
|
1162
|
+
await this.userRepository.update(user.id, {
|
|
1163
|
+
failedLoginAttempts: nextFailedAttempts,
|
|
1164
|
+
});
|
|
995
1165
|
}
|
|
996
1166
|
async resetFailedAttempts(user) {
|
|
997
1167
|
if (user.failedLoginAttempts === 0)
|
|
@@ -1010,13 +1180,14 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
1010
1180
|
const user = await this.userRepository.findOne({
|
|
1011
1181
|
where: {
|
|
1012
1182
|
id: userId,
|
|
1013
|
-
}
|
|
1183
|
+
},
|
|
1014
1184
|
});
|
|
1015
|
-
await this.userActivityHistoryService.logEvent(
|
|
1185
|
+
await this.userActivityHistoryService.logEvent("logout", user);
|
|
1016
1186
|
return { message: success_messages_1.SUCCESS_MESSAGES.LOGOUT_SUCCESS };
|
|
1017
1187
|
}
|
|
1018
1188
|
catch (err) {
|
|
1019
|
-
throw err instanceof common_1.UnauthorizedException ||
|
|
1189
|
+
throw err instanceof common_1.UnauthorizedException ||
|
|
1190
|
+
err instanceof common_1.InternalServerErrorException
|
|
1020
1191
|
? err
|
|
1021
1192
|
: new common_1.InternalServerErrorException(error_messages_1.ERROR_MESSAGES.LOGOUT_FAILED);
|
|
1022
1193
|
}
|
|
@@ -1035,8 +1206,8 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
1035
1206
|
id: activeUser.sub,
|
|
1036
1207
|
},
|
|
1037
1208
|
relations: {
|
|
1038
|
-
roles: true
|
|
1039
|
-
}
|
|
1209
|
+
roles: true,
|
|
1210
|
+
},
|
|
1040
1211
|
});
|
|
1041
1212
|
const refreshTokenState = await this.refreshTokenIdsStorage.getCurrentRefreshTokenState(user.id);
|
|
1042
1213
|
const response = {
|
|
@@ -1069,6 +1240,7 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
1069
1240
|
}
|
|
1070
1241
|
};
|
|
1071
1242
|
exports.AuthenticationService = AuthenticationService;
|
|
1243
|
+
AuthenticationService.SIGNUP_DTO_KEYS = new Set(['username', 'email', 'password', 'fullName', 'mobile', 'roles', 'forcePasswordChange']);
|
|
1072
1244
|
exports.AuthenticationService = AuthenticationService = AuthenticationService_1 = __decorate([
|
|
1073
1245
|
(0, common_1.Injectable)(),
|
|
1074
1246
|
__param(13, (0, typeorm_1.InjectDataSource)()),
|
|
@@ -1085,7 +1257,8 @@ exports.AuthenticationService = AuthenticationService = AuthenticationService_1
|
|
|
1085
1257
|
role_metadata_service_1.RoleMetadataService,
|
|
1086
1258
|
user_activity_history_service_1.UserActivityHistoryService,
|
|
1087
1259
|
sso_code_storage_service_1.SsoCodeStorageService,
|
|
1088
|
-
typeorm_2.DataSource
|
|
1260
|
+
typeorm_2.DataSource,
|
|
1261
|
+
solid_registry_1.SolidRegistry])
|
|
1089
1262
|
], AuthenticationService);
|
|
1090
1263
|
function parseUniqueConstraintError(detail) {
|
|
1091
1264
|
const match = detail.match(/Key \(([^)]+)\)=\(([^)]+)\) already exists\./);
|
|
@@ -1093,9 +1266,9 @@ function parseUniqueConstraintError(detail) {
|
|
|
1093
1266
|
const field = match[1];
|
|
1094
1267
|
const value = match[2];
|
|
1095
1268
|
const fieldMap = {
|
|
1096
|
-
username:
|
|
1097
|
-
email:
|
|
1098
|
-
full_name_user_key:
|
|
1269
|
+
username: "username",
|
|
1270
|
+
email: "email address",
|
|
1271
|
+
full_name_user_key: "full name",
|
|
1099
1272
|
};
|
|
1100
1273
|
const friendlyField = fieldMap[field] || field;
|
|
1101
1274
|
return `A user with ${friendlyField} "${value}" already exists.`;
|