@solidxai/core 0.1.9-beta.1 → 0.1.9-beta.11
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-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/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 +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -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 +16 -0
- package/dist/passport-strategies/facebook-oauth.strategy.d.ts.map +1 -0
- package/dist/passport-strategies/facebook-oauth.strategy.js +96 -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 +40 -89
- 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 +66 -28
- package/dist/services/authentication.service.d.ts.map +1 -1
- package/dist/services/authentication.service.js +377 -180
- 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 +845 -9
- package/dist/services/settings/default-settings-provider.service.d.ts.map +1 -1
- package/dist/services/settings/default-settings-provider.service.js +1096 -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 +12 -8
- package/dist/services/user.service.d.ts.map +1 -1
- package/dist/services/user.service.js +143 -32
- 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/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/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 +3 -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 +115 -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 +40 -89
- package/src/services/api-key.service.ts +77 -35
- package/src/services/authentication.service.ts +1947 -1434
- 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 +1168 -155
- package/src/services/solid-introspect.service.ts +14 -1
- package/src/services/user.service.ts +220 -61
- 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,50 +111,52 @@ 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
|
-
const onForcePasswordChange = this.settingService.getConfigValue(
|
|
117
|
-
const activateUserOnRegistration = this.settingService.getConfigValue(
|
|
118
|
-
const defaultRole = this.settingService.getConfigValue(
|
|
119
|
-
var { user, pwd, autoGeneratedPwd } = await this.populateForSignup(
|
|
128
|
+
const onForcePasswordChange = this.settingService.getConfigValue("forceChangePasswordOnFirstLogin");
|
|
129
|
+
const activateUserOnRegistration = this.settingService.getConfigValue("activateUserOnRegistration");
|
|
130
|
+
const defaultRole = this.settingService.getConfigValue("defaultRole");
|
|
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.
|
|
138
|
+
if ((signUpDto.roles?.length ?? 0) === 0 &&
|
|
139
|
+
signUpDto.username !== "sa" &&
|
|
140
|
+
defaultRole) {
|
|
127
141
|
userRoles.push(defaultRole);
|
|
128
142
|
}
|
|
129
143
|
await this.handlePostSignup(savedUser, userRoles, pwd, autoGeneratedPwd);
|
|
130
144
|
return savedUser;
|
|
131
145
|
}
|
|
132
146
|
catch (err) {
|
|
133
|
-
const pgUniqueViolationErrorCode =
|
|
147
|
+
const pgUniqueViolationErrorCode = "23505";
|
|
134
148
|
if (err.code === pgUniqueViolationErrorCode) {
|
|
135
|
-
throw new common_1.ConflictException(error_messages_1.ERROR_MESSAGES.
|
|
149
|
+
throw new common_1.ConflictException(parseUniqueConstraintError(err.detail || error_messages_1.ERROR_MESSAGES.UNIQUE_CONSTRAINT_VIOLATION));
|
|
136
150
|
}
|
|
137
151
|
throw err;
|
|
138
152
|
}
|
|
139
153
|
}
|
|
140
154
|
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
|
-
}
|
|
155
|
+
const entity = extensionUserRepo.create(extensionUserDto);
|
|
156
|
+
return this.performSignUp(signUpDto, entity, extensionUserRepo);
|
|
156
157
|
}
|
|
157
158
|
async populateForSignup(user, signUpDto, isUserActive = true, onForcePasswordChange) {
|
|
158
|
-
let autoGeneratedPwdPermission = this.settingService.getConfigValue(
|
|
159
|
+
let autoGeneratedPwdPermission = this.settingService.getConfigValue("iamAutoGeneratedPassword");
|
|
159
160
|
if (signUpDto.roles && signUpDto.roles.length > 0) {
|
|
160
161
|
for (let i = 0; i < signUpDto.roles.length; i++) {
|
|
161
162
|
const roleName = signUpDto.roles[i];
|
|
@@ -169,20 +170,20 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
169
170
|
if (signUpDto.mobile) {
|
|
170
171
|
user.mobile = signUpDto.mobile;
|
|
171
172
|
}
|
|
172
|
-
let pwd =
|
|
173
|
-
let autoGeneratedPwd =
|
|
173
|
+
let pwd = "";
|
|
174
|
+
let autoGeneratedPwd = "";
|
|
174
175
|
if (signUpDto.password) {
|
|
175
176
|
pwd = await this.hashingService.hash(signUpDto.password);
|
|
176
177
|
}
|
|
177
178
|
else {
|
|
178
|
-
if (autoGeneratedPwdPermission?.toString().toLowerCase() ===
|
|
179
|
+
if (autoGeneratedPwdPermission?.toString().toLowerCase() === "true") {
|
|
179
180
|
autoGeneratedPwd = this.generatePassword();
|
|
180
181
|
pwd = await this.hashingService.hash(autoGeneratedPwd);
|
|
181
182
|
user.forcePasswordChange = true;
|
|
182
183
|
}
|
|
183
184
|
else {
|
|
184
|
-
if (!await this.isPasswordlessRegistrationEnabled()) {
|
|
185
|
-
this.logger.error(
|
|
185
|
+
if (!(await this.isPasswordlessRegistrationEnabled())) {
|
|
186
|
+
this.logger.error("User being created without password, and password less login is also not enabled in the system. Is this intentional?");
|
|
186
187
|
throw new common_1.BadRequestException(error_messages_1.ERROR_MESSAGES.PASSWORDLESS_REGISTRATION_DISABLED);
|
|
187
188
|
}
|
|
188
189
|
pwd = await this.hashingService.hash(pwd);
|
|
@@ -217,48 +218,48 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
217
218
|
async notifyUserOnForcePasswordChange(user, autoGeneratedPwd) {
|
|
218
219
|
const companyLogo = await this.getCompanyLogo();
|
|
219
220
|
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(
|
|
221
|
+
mailService.sendEmailUsingTemplate(user.email, "on-force-password-change", {
|
|
222
|
+
solidAppName: this.settingService.getConfigValue("appTitle"),
|
|
223
|
+
solidAppWebsiteUrl: this.settingService.getConfigValue("solidAppWebsiteUrl"),
|
|
224
|
+
frontendLoginPageUrl: this.settingService.getConfigValue("frontendLoginPageUrl"),
|
|
224
225
|
email: user.email,
|
|
225
226
|
fullName: user.fullName,
|
|
226
227
|
userName: user.username,
|
|
227
228
|
password: autoGeneratedPwd,
|
|
228
|
-
companyLogoUrl: companyLogo
|
|
229
|
-
}, this.settingService.getConfigValue(
|
|
229
|
+
companyLogoUrl: companyLogo,
|
|
230
|
+
}, this.settingService.getConfigValue("shouldQueueEmails"), null, null, "user", user.id);
|
|
230
231
|
}
|
|
231
232
|
async isWelcomeEmailEnabled() {
|
|
232
|
-
const sendWelcomeEmailOnSignup = this.settingService.getConfigValue(
|
|
233
|
+
const sendWelcomeEmailOnSignup = this.settingService.getConfigValue("sendWelcomeEmailOnSignup");
|
|
233
234
|
return sendWelcomeEmailOnSignup;
|
|
234
235
|
}
|
|
235
236
|
async isWelcomeSmsEnabled() {
|
|
236
|
-
const sendWelcomeSmsOnSignup = this.settingService.getConfigValue(
|
|
237
|
+
const sendWelcomeSmsOnSignup = this.settingService.getConfigValue("sendWelcomeSmsOnSignup");
|
|
237
238
|
return sendWelcomeSmsOnSignup;
|
|
238
239
|
}
|
|
239
240
|
async notifyUserOnSignup(user) {
|
|
240
241
|
const companyLogo = await this.getCompanyLogo();
|
|
241
242
|
if (await this.isWelcomeEmailEnabled()) {
|
|
242
243
|
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(
|
|
244
|
+
mailService.sendEmailUsingTemplate(user.email, "email-on-signup", {
|
|
245
|
+
solidAppName: this.settingService.getConfigValue("appTitle"),
|
|
246
|
+
solidAppWebsiteUrl: this.settingService.getConfigValue("solidAppWebsiteUrl"),
|
|
247
|
+
frontendLoginPageUrl: this.settingService.getConfigValue("frontendLoginPageUrl"),
|
|
247
248
|
email: user.email,
|
|
248
249
|
fullName: user.fullName,
|
|
249
250
|
userName: user.username,
|
|
250
|
-
companyLogoUrl: companyLogo
|
|
251
|
-
}, this.settingService.getConfigValue(
|
|
251
|
+
companyLogoUrl: companyLogo,
|
|
252
|
+
}, this.settingService.getConfigValue("shouldQueueEmails"), null, null, "user", user.id);
|
|
252
253
|
}
|
|
253
254
|
const isWelcomeSmsEnabled = await this.isWelcomeSmsEnabled();
|
|
254
255
|
if (isWelcomeSmsEnabled && user.mobile) {
|
|
255
256
|
const smsService = this.smsFactory.getSmsService();
|
|
256
|
-
smsService.sendSMSUsingTemplate(user.mobile,
|
|
257
|
-
solidAppName: this.settingService.getConfigValue(
|
|
258
|
-
frontendLoginPageUrl: this.settingService.getConfigValue(
|
|
257
|
+
smsService.sendSMSUsingTemplate(user.mobile, "text-on-signup", {
|
|
258
|
+
solidAppName: this.settingService.getConfigValue("appTitle"),
|
|
259
|
+
frontendLoginPageUrl: this.settingService.getConfigValue("frontendLoginPageUrl"),
|
|
259
260
|
firstName: user.username,
|
|
260
|
-
fullName: user.fullName ? user.fullName : user.username
|
|
261
|
-
}, this.settingService.getConfigValue(
|
|
261
|
+
fullName: user.fullName ? user.fullName : user.username,
|
|
262
|
+
}, this.settingService.getConfigValue("shouldQueueSms"));
|
|
262
263
|
}
|
|
263
264
|
}
|
|
264
265
|
async otpInitiateRegistration(signUpDto) {
|
|
@@ -277,7 +278,7 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
277
278
|
await this.notifyUserOnOtpInitiateRegistration(user, validationSource);
|
|
278
279
|
}
|
|
279
280
|
catch (err) {
|
|
280
|
-
if (err.code ===
|
|
281
|
+
if (err.code === "23505") {
|
|
281
282
|
throw new common_1.ConflictException(error_messages_1.ERROR_MESSAGES.USER_ALREADY_EXISTS);
|
|
282
283
|
}
|
|
283
284
|
throw err;
|
|
@@ -285,10 +286,12 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
285
286
|
return { message: success_messages_1.SUCCESS_MESSAGES.OTP_SENT_SUCCESS_REGISTRATION };
|
|
286
287
|
}
|
|
287
288
|
validateOtpRegistrationInput(signUpDto, validationSource) {
|
|
288
|
-
if (validationSource === constants_1.PasswordlessRegistrationValidateWhatSources.EMAIL &&
|
|
289
|
+
if (validationSource === constants_1.PasswordlessRegistrationValidateWhatSources.EMAIL &&
|
|
290
|
+
(0, class_validator_1.isEmpty)(signUpDto.email)) {
|
|
289
291
|
throw new common_1.BadRequestException(error_messages_1.ERROR_MESSAGES.EMAIL_REQUIRED_FOR_VALIDATION);
|
|
290
292
|
}
|
|
291
|
-
if (validationSource === constants_1.PasswordlessRegistrationValidateWhatSources.MOBILE &&
|
|
293
|
+
if (validationSource === constants_1.PasswordlessRegistrationValidateWhatSources.MOBILE &&
|
|
294
|
+
(0, class_validator_1.isEmpty)(signUpDto.mobile)) {
|
|
292
295
|
throw new common_1.BadRequestException(error_messages_1.ERROR_MESSAGES.MOBILE_REQUIRED_FOR_VALIDATION);
|
|
293
296
|
}
|
|
294
297
|
}
|
|
@@ -298,19 +301,20 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
298
301
|
{ email: signUpDto.email },
|
|
299
302
|
{ mobile: signUpDto.mobile },
|
|
300
303
|
{ username: signUpDto.username },
|
|
301
|
-
]
|
|
304
|
+
],
|
|
302
305
|
});
|
|
303
306
|
}
|
|
304
307
|
resolvePasswordlessValidationSource() {
|
|
305
|
-
return this.settingService.getConfigValue(
|
|
308
|
+
return this.settingService.getConfigValue("passwordlessRegistrationValidateWhat");
|
|
306
309
|
}
|
|
307
310
|
async upsertUserWithRegistrationVerificationTokens(existingUser, signUpDto, validationSource) {
|
|
308
311
|
let user = existingUser;
|
|
309
312
|
if ((0, class_validator_1.isEmpty)(user)) {
|
|
310
313
|
user = this.createUser(signUpDto);
|
|
314
|
+
user.active = false;
|
|
311
315
|
await this.assignRegistrationOtp(validationSource, user);
|
|
312
316
|
await this.userRepository.save(user);
|
|
313
|
-
await this.userService.addRoleToUser(user.username, this.settingService.getConfigValue(
|
|
317
|
+
await this.userService.addRoleToUser(user.username, this.settingService.getConfigValue("defaultRole"));
|
|
314
318
|
}
|
|
315
319
|
else {
|
|
316
320
|
await this.assignRegistrationOtp(validationSource, user);
|
|
@@ -331,8 +335,9 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
331
335
|
if (!passwordlessRegistrationValidateWhat) {
|
|
332
336
|
throw new common_1.BadRequestException(error_messages_1.ERROR_MESSAGES.VALIDATION_SOURCE_REQUIRED);
|
|
333
337
|
}
|
|
334
|
-
const autoLoginUserOnRegistration = this.settingService.getConfigValue(
|
|
335
|
-
if (passwordlessRegistrationValidateWhat ===
|
|
338
|
+
const autoLoginUserOnRegistration = this.settingService.getConfigValue("autoLoginUserOnRegistration");
|
|
339
|
+
if (passwordlessRegistrationValidateWhat ===
|
|
340
|
+
constants_1.PasswordlessRegistrationValidateWhatSources.EMAIL) {
|
|
336
341
|
const { token, expiresAt } = await this.otp();
|
|
337
342
|
user.emailVerificationTokenOnRegistration = token;
|
|
338
343
|
user.emailVerificationTokenOnRegistrationExpiresAt = expiresAt;
|
|
@@ -341,7 +346,8 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
341
346
|
user.emailVerificationTokenOnLoginExpiresAt = expiresAt;
|
|
342
347
|
}
|
|
343
348
|
}
|
|
344
|
-
if (passwordlessRegistrationValidateWhat ===
|
|
349
|
+
if (passwordlessRegistrationValidateWhat ===
|
|
350
|
+
constants_1.PasswordlessRegistrationValidateWhatSources.MOBILE) {
|
|
345
351
|
const { token, expiresAt } = await this.otp();
|
|
346
352
|
user.mobileVerificationTokenOnRegistration = token;
|
|
347
353
|
user.mobileVerificationTokenOnRegistrationExpiresAt = expiresAt;
|
|
@@ -353,27 +359,29 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
353
359
|
}
|
|
354
360
|
async notifyUserOnOtpInitiateRegistration(user, registrationValidationSource) {
|
|
355
361
|
const companyLogo = await this.getCompanyLogo();
|
|
356
|
-
if (registrationValidationSource ===
|
|
362
|
+
if (registrationValidationSource ===
|
|
363
|
+
constants_1.PasswordlessLoginValidateWhatSources.EMAIL) {
|
|
357
364
|
const mailService = this.mailServiceFactory.getMailService();
|
|
358
|
-
mailService.sendEmailUsingTemplate(user.email,
|
|
359
|
-
solidAppName: this.settingService.getConfigValue(
|
|
360
|
-
solidAppWebsiteUrl: this.settingService.getConfigValue(
|
|
365
|
+
mailService.sendEmailUsingTemplate(user.email, "otp-on-register", {
|
|
366
|
+
solidAppName: this.settingService.getConfigValue("appTitle"),
|
|
367
|
+
solidAppWebsiteUrl: this.settingService.getConfigValue("solidAppWebsiteUrl"),
|
|
361
368
|
firstName: user.username,
|
|
362
369
|
fullName: user.fullName ? user.fullName : user.username,
|
|
363
370
|
emailVerificationTokenOnRegistration: user.emailVerificationTokenOnRegistration,
|
|
364
|
-
companyLogoUrl: companyLogo
|
|
365
|
-
}, this.settingService.getConfigValue(
|
|
371
|
+
companyLogoUrl: companyLogo,
|
|
372
|
+
}, this.settingService.getConfigValue("shouldQueueEmails"), null, null, "user", user.id);
|
|
366
373
|
}
|
|
367
|
-
if (registrationValidationSource ===
|
|
374
|
+
if (registrationValidationSource ===
|
|
375
|
+
constants_1.PasswordlessLoginValidateWhatSources.MOBILE) {
|
|
368
376
|
const smsService = this.smsFactory.getSmsService();
|
|
369
|
-
smsService.sendSMSUsingTemplate(user.mobile,
|
|
370
|
-
solidAppName: this.settingService.getConfigValue(
|
|
377
|
+
smsService.sendSMSUsingTemplate(user.mobile, "otp-on-register", {
|
|
378
|
+
solidAppName: this.settingService.getConfigValue("appTitle"),
|
|
371
379
|
otp: user.mobileVerificationTokenOnRegistration,
|
|
372
380
|
mobileVerificationTokenOnRegistration: user.mobileVerificationTokenOnRegistration,
|
|
373
381
|
firstName: user.username,
|
|
374
382
|
fullName: user.fullName ? user.fullName : user.username,
|
|
375
|
-
companyLogoUrl: companyLogo
|
|
376
|
-
}, this.settingService.getConfigValue(
|
|
383
|
+
companyLogoUrl: companyLogo,
|
|
384
|
+
}, this.settingService.getConfigValue("shouldQueueSms"));
|
|
377
385
|
}
|
|
378
386
|
}
|
|
379
387
|
async otpConfirmRegistration(confirmSignUpDto) {
|
|
@@ -389,11 +397,15 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
389
397
|
const user = await this.findUserByRegistrationIdentifier(type, identifier);
|
|
390
398
|
this.validateRegistrationOtp(user, otp, type);
|
|
391
399
|
this.clearRegistrationOtp(user, type);
|
|
392
|
-
user.active =
|
|
393
|
-
|
|
400
|
+
user.active =
|
|
401
|
+
this.settingService.getConfigValue("activateUserOnRegistration") &&
|
|
402
|
+
(await this.areAllPasswordlessRegistrationValidationSourcesVerified(user));
|
|
394
403
|
const savedUser = await this.userRepository.save(user);
|
|
395
404
|
this.triggerRegistrationEvent(savedUser);
|
|
396
|
-
return {
|
|
405
|
+
return {
|
|
406
|
+
active: savedUser.active,
|
|
407
|
+
message: `User registration verified for ${type}`,
|
|
408
|
+
};
|
|
397
409
|
}
|
|
398
410
|
async findUserByRegistrationIdentifier(type, identifier) {
|
|
399
411
|
const where = type === constants_1.PasswordlessRegistrationValidateWhatSources.EMAIL
|
|
@@ -407,8 +419,12 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
407
419
|
}
|
|
408
420
|
validateRegistrationOtp(user, otp, type) {
|
|
409
421
|
const isEmail = type === constants_1.PasswordlessRegistrationValidateWhatSources.EMAIL;
|
|
410
|
-
const token = isEmail
|
|
411
|
-
|
|
422
|
+
const token = isEmail
|
|
423
|
+
? user.emailVerificationTokenOnRegistration
|
|
424
|
+
: user.mobileVerificationTokenOnRegistration;
|
|
425
|
+
const expiresAt = isEmail
|
|
426
|
+
? user.emailVerificationTokenOnRegistrationExpiresAt
|
|
427
|
+
: user.mobileVerificationTokenOnRegistrationExpiresAt;
|
|
412
428
|
if (token !== otp) {
|
|
413
429
|
throw new common_1.UnauthorizedException(error_messages_1.ERROR_MESSAGES.INVALID_OTP);
|
|
414
430
|
}
|
|
@@ -434,12 +450,14 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
434
450
|
}
|
|
435
451
|
async areAllPasswordlessRegistrationValidationSourcesVerified(user) {
|
|
436
452
|
const registrationValidationSource = this.resolvePasswordlessValidationSource();
|
|
437
|
-
if (registrationValidationSource ===
|
|
453
|
+
if (registrationValidationSource ===
|
|
454
|
+
constants_1.PasswordlessLoginValidateWhatSources.EMAIL) {
|
|
438
455
|
if (!user.emailVerifiedOnRegistrationAt) {
|
|
439
456
|
return false;
|
|
440
457
|
}
|
|
441
458
|
}
|
|
442
|
-
if (registrationValidationSource ===
|
|
459
|
+
if (registrationValidationSource ===
|
|
460
|
+
constants_1.PasswordlessLoginValidateWhatSources.MOBILE) {
|
|
443
461
|
if (!user.mobileVerifiedOnRegistrationAt) {
|
|
444
462
|
return false;
|
|
445
463
|
}
|
|
@@ -448,7 +466,7 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
448
466
|
}
|
|
449
467
|
async otp() {
|
|
450
468
|
const now = new Date();
|
|
451
|
-
const otpExpiry = this.settingService.getConfigValue(
|
|
469
|
+
const otpExpiry = this.settingService.getConfigValue("otpExpiry");
|
|
452
470
|
now.setMinutes(now.getMinutes() + otpExpiry);
|
|
453
471
|
return {
|
|
454
472
|
token: (0, crypto_1.randomInt)(100000, 999999).toString(),
|
|
@@ -456,7 +474,7 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
456
474
|
};
|
|
457
475
|
}
|
|
458
476
|
getDummyOtpForUser(user) {
|
|
459
|
-
const dummyOtp = this.settingService.getConfigValue(
|
|
477
|
+
const dummyOtp = this.settingService.getConfigValue("dummyOtp");
|
|
460
478
|
if (!dummyOtp || !user?.username) {
|
|
461
479
|
return undefined;
|
|
462
480
|
}
|
|
@@ -471,12 +489,12 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
471
489
|
return allowedUsers.has(username) ? dummyOtp : undefined;
|
|
472
490
|
}
|
|
473
491
|
getDummyOtpUsers() {
|
|
474
|
-
const rawUsers = this.settingService.getConfigValue(
|
|
475
|
-
if (!rawUsers || typeof rawUsers !==
|
|
492
|
+
const rawUsers = this.settingService.getConfigValue("dummyOtpUsers");
|
|
493
|
+
if (!rawUsers || typeof rawUsers !== "string") {
|
|
476
494
|
return new Set();
|
|
477
495
|
}
|
|
478
496
|
return new Set(rawUsers
|
|
479
|
-
.split(
|
|
497
|
+
.split(",")
|
|
480
498
|
.map((value) => value.trim().toLowerCase())
|
|
481
499
|
.filter(Boolean));
|
|
482
500
|
}
|
|
@@ -489,7 +507,7 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
489
507
|
await this.rehashPasswordIfRequired(user, signInDto.password);
|
|
490
508
|
await this.resetFailedAttempts(user);
|
|
491
509
|
const tokens = await this.generateTokens(user);
|
|
492
|
-
await this.userActivityHistoryService.logEvent(
|
|
510
|
+
await this.userActivityHistoryService.logEvent("login", user);
|
|
493
511
|
return {
|
|
494
512
|
user: {
|
|
495
513
|
email: user.email,
|
|
@@ -497,15 +515,15 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
497
515
|
username: user.username,
|
|
498
516
|
forcePasswordChange: user.forcePasswordChange,
|
|
499
517
|
id: user.id,
|
|
500
|
-
roles: user.roles.map((role) => role.name)
|
|
518
|
+
roles: user.roles.map((role) => role.name),
|
|
501
519
|
},
|
|
502
|
-
...tokens
|
|
520
|
+
...tokens,
|
|
503
521
|
};
|
|
504
522
|
}
|
|
505
523
|
maskEmail(email) {
|
|
506
524
|
if (!email)
|
|
507
525
|
return null;
|
|
508
|
-
const [localPart, domain] = email.split(
|
|
526
|
+
const [localPart, domain] = email.split("@");
|
|
509
527
|
if (localPart.length <= 2) {
|
|
510
528
|
return `${localPart[0]}***@${domain}`;
|
|
511
529
|
}
|
|
@@ -537,7 +555,7 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
537
555
|
return this.buildLoginOtpResponse(user, type);
|
|
538
556
|
}
|
|
539
557
|
resolveLoginType(signInDto) {
|
|
540
|
-
const setting = this.settingService.getConfigValue(
|
|
558
|
+
const setting = this.settingService.getConfigValue("passwordlessLoginValidateWhat");
|
|
541
559
|
if (setting === constants_1.PasswordlessLoginValidateWhatSources.SELECTABLE) {
|
|
542
560
|
if (signInDto.type !== constants_1.PasswordlessLoginValidateWhatSources.EMAIL &&
|
|
543
561
|
signInDto.type !== constants_1.PasswordlessLoginValidateWhatSources.MOBILE) {
|
|
@@ -590,7 +608,10 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
590
608
|
const maskedIdentifier = type === constants_1.PasswordlessLoginValidateWhatSources.EMAIL
|
|
591
609
|
? { email: this.maskEmail(user.email) }
|
|
592
610
|
: { mobile: this.maskMobile(user.mobile) };
|
|
593
|
-
return {
|
|
611
|
+
return {
|
|
612
|
+
message: success_messages_1.SUCCESS_MESSAGES.OTP_SENT_SUCCESS_LOGIN,
|
|
613
|
+
user: maskedIdentifier,
|
|
614
|
+
};
|
|
594
615
|
}
|
|
595
616
|
async notifyUserOnOtpInititateLogin(user, loginType) {
|
|
596
617
|
const companyLogo = await this.getCompanyLogo();
|
|
@@ -599,25 +620,25 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
599
620
|
return;
|
|
600
621
|
if (loginType === constants_1.PasswordlessLoginValidateWhatSources.EMAIL) {
|
|
601
622
|
const mailService = this.mailServiceFactory.getMailService();
|
|
602
|
-
mailService.sendEmailUsingTemplate(user.email,
|
|
603
|
-
solidAppName: this.settingService.getConfigValue(
|
|
604
|
-
solidAppWebsiteUrl: this.settingService.getConfigValue(
|
|
623
|
+
mailService.sendEmailUsingTemplate(user.email, "otp-on-login", {
|
|
624
|
+
solidAppName: this.settingService.getConfigValue("appTitle"),
|
|
625
|
+
solidAppWebsiteUrl: this.settingService.getConfigValue("solidAppWebsiteUrl"),
|
|
605
626
|
firstName: user.username,
|
|
606
627
|
emailVerificationTokenOnLogin: user.emailVerificationTokenOnLogin,
|
|
607
628
|
fullName: user.fullName ? user.fullName : user.username,
|
|
608
|
-
companyLogoUrl: companyLogo
|
|
609
|
-
}, this.settingService.getConfigValue(
|
|
629
|
+
companyLogoUrl: companyLogo,
|
|
630
|
+
}, this.settingService.getConfigValue("shouldQueueEmails"), null, null, "user", user.id);
|
|
610
631
|
}
|
|
611
632
|
if (loginType === constants_1.PasswordlessLoginValidateWhatSources.MOBILE) {
|
|
612
633
|
const smsService = this.smsFactory.getSmsService();
|
|
613
|
-
smsService.sendSMSUsingTemplate(user.mobile,
|
|
614
|
-
solidAppName: this.settingService.getConfigValue(
|
|
634
|
+
smsService.sendSMSUsingTemplate(user.mobile, "otp-on-login", {
|
|
635
|
+
solidAppName: this.settingService.getConfigValue("appTitle"),
|
|
615
636
|
otp: user.mobileVerificationTokenOnLogin,
|
|
616
637
|
mobileVerificationTokenOnLogin: user.mobileVerificationTokenOnLogin,
|
|
617
638
|
firstName: user.username,
|
|
618
639
|
fullName: user.fullName ? user.fullName : user.username,
|
|
619
|
-
companyLogoUrl: companyLogo
|
|
620
|
-
}, this.settingService.getConfigValue(
|
|
640
|
+
companyLogoUrl: companyLogo,
|
|
641
|
+
}, this.settingService.getConfigValue("shouldQueueSms"));
|
|
621
642
|
}
|
|
622
643
|
}
|
|
623
644
|
async otpConfirmLogin(confirmSignInDto) {
|
|
@@ -630,7 +651,9 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
630
651
|
type !== constants_1.PasswordlessLoginValidateWhatSources.MOBILE) {
|
|
631
652
|
throw new common_1.BadRequestException(error_messages_1.ERROR_MESSAGES.INVALID_VERIFICATION_TYPE);
|
|
632
653
|
}
|
|
633
|
-
const user = await this.findUserForLogin(type, identifier, {
|
|
654
|
+
const user = await this.findUserForLogin(type, identifier, {
|
|
655
|
+
withRoles: true,
|
|
656
|
+
});
|
|
634
657
|
this.checkAccountBlocked(user);
|
|
635
658
|
const dummyOtp = this.getDummyOtpForUser(user);
|
|
636
659
|
if (dummyOtp) {
|
|
@@ -647,14 +670,18 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
647
670
|
throw e;
|
|
648
671
|
}
|
|
649
672
|
await this.clearLoginOtp(user, type);
|
|
650
|
-
await this.userActivityHistoryService.logEvent(
|
|
673
|
+
await this.userActivityHistoryService.logEvent("login", user);
|
|
651
674
|
await this.resetFailedAttempts(user);
|
|
652
675
|
return this.buildLoginTokenResponse(user);
|
|
653
676
|
}
|
|
654
677
|
validateLoginOtp(user, otp, type) {
|
|
655
678
|
const isEmail = type === constants_1.PasswordlessLoginValidateWhatSources.EMAIL;
|
|
656
|
-
const token = isEmail
|
|
657
|
-
|
|
679
|
+
const token = isEmail
|
|
680
|
+
? user.emailVerificationTokenOnLogin
|
|
681
|
+
: user.mobileVerificationTokenOnLogin;
|
|
682
|
+
const expiresAt = isEmail
|
|
683
|
+
? user.emailVerificationTokenOnLoginExpiresAt
|
|
684
|
+
: user.mobileVerificationTokenOnLoginExpiresAt;
|
|
658
685
|
if (token !== otp) {
|
|
659
686
|
throw new common_1.UnauthorizedException(error_messages_1.ERROR_MESSAGES.INVALID_OTP);
|
|
660
687
|
}
|
|
@@ -697,7 +724,7 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
697
724
|
}
|
|
698
725
|
async changePassword(changePasswordDto, activeUser) {
|
|
699
726
|
const user = await this.userRepository.findOne({
|
|
700
|
-
where: { id: changePasswordDto.id }
|
|
727
|
+
where: { id: changePasswordDto.id },
|
|
701
728
|
});
|
|
702
729
|
if (!user) {
|
|
703
730
|
throw new common_1.NotFoundException(error_messages_1.ERROR_MESSAGES.USER_NOT_FOUND);
|
|
@@ -705,7 +732,7 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
705
732
|
if (!user.active) {
|
|
706
733
|
throw new common_1.UnauthorizedException(error_messages_1.ERROR_MESSAGES.USER_INACTIVE);
|
|
707
734
|
}
|
|
708
|
-
if (user.lastLoginProvider !==
|
|
735
|
+
if (user.lastLoginProvider !== "local") {
|
|
709
736
|
throw new common_1.BadRequestException(error_messages_1.ERROR_MESSAGES.NON_LOCAL_PROVIDER);
|
|
710
737
|
}
|
|
711
738
|
if (!(user.id === activeUser.sub)) {
|
|
@@ -729,7 +756,7 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
729
756
|
}
|
|
730
757
|
async generateForgotPasswordToken(user) {
|
|
731
758
|
const expiryTime = new Date();
|
|
732
|
-
const forgotPasswordVerificationTokenExpiry = this.settingService.getConfigValue(
|
|
759
|
+
const forgotPasswordVerificationTokenExpiry = this.settingService.getConfigValue("forgotPasswordVerificationTokenExpiry");
|
|
733
760
|
const dummyOtp = this.getDummyOtpForUser(user);
|
|
734
761
|
expiryTime.setMinutes(expiryTime.getMinutes() + forgotPasswordVerificationTokenExpiry);
|
|
735
762
|
return {
|
|
@@ -746,7 +773,7 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
746
773
|
if (isValidUser && !user?.active) {
|
|
747
774
|
isValidUser = false;
|
|
748
775
|
}
|
|
749
|
-
if (isValidUser && user?.lastLoginProvider !==
|
|
776
|
+
if (isValidUser && user?.lastLoginProvider !== "local") {
|
|
750
777
|
isValidUser = false;
|
|
751
778
|
}
|
|
752
779
|
if (isValidUser) {
|
|
@@ -757,40 +784,43 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
757
784
|
await this.notifyUserOnForgotPassword(user);
|
|
758
785
|
}
|
|
759
786
|
return {
|
|
760
|
-
status:
|
|
787
|
+
status: "success",
|
|
761
788
|
message: success_messages_1.SUCCESS_MESSAGES.FORGOT_PASSWORD_TOKEN_SENT,
|
|
762
|
-
error:
|
|
763
|
-
errorCode:
|
|
789
|
+
error: "",
|
|
790
|
+
errorCode: "",
|
|
764
791
|
data: {
|
|
765
792
|
user: {
|
|
766
793
|
email: user?.email,
|
|
767
794
|
},
|
|
768
|
-
}
|
|
795
|
+
},
|
|
769
796
|
};
|
|
770
797
|
}
|
|
771
798
|
async notifyUserOnForgotPassword(user) {
|
|
772
799
|
const companyLogo = await this.getCompanyLogo();
|
|
773
|
-
const forgotPasswordSendVerificationTokenOn = this.settingService.getConfigValue(
|
|
774
|
-
if (forgotPasswordSendVerificationTokenOn ==
|
|
800
|
+
const forgotPasswordSendVerificationTokenOn = this.settingService.getConfigValue("forgotPasswordSendVerificationTokenOn");
|
|
801
|
+
if (forgotPasswordSendVerificationTokenOn ==
|
|
802
|
+
constants_1.ForgotPasswordSendVerificationTokenOn.EMAIL) {
|
|
775
803
|
const mailService = this.mailServiceFactory.getMailService();
|
|
776
|
-
mailService.sendEmailUsingTemplate(user.email,
|
|
777
|
-
solidAppName: this.settingService.getConfigValue(
|
|
778
|
-
solidAppWebsiteUrl: this.settingService.getConfigValue(
|
|
804
|
+
mailService.sendEmailUsingTemplate(user.email, "forgot-password", {
|
|
805
|
+
solidAppName: this.settingService.getConfigValue("appTitle"),
|
|
806
|
+
solidAppWebsiteUrl: this.settingService.getConfigValue("solidAppWebsiteUrl"),
|
|
779
807
|
firstName: user.username,
|
|
780
808
|
fullName: user.fullName,
|
|
781
|
-
passwordResetLink: `${this.settingService.getConfigValue(
|
|
782
|
-
companyLogoUrl: companyLogo
|
|
783
|
-
}, this.settingService.getConfigValue(
|
|
809
|
+
passwordResetLink: `${this.settingService.getConfigValue("frontendForgotPasswordPageUrl")}?token=${user.verificationTokenOnForgotPassword}`,
|
|
810
|
+
companyLogoUrl: companyLogo,
|
|
811
|
+
}, this.settingService.getConfigValue("shouldQueueEmails"), null, null, "user", user.id);
|
|
784
812
|
}
|
|
785
|
-
if (forgotPasswordSendVerificationTokenOn ==
|
|
813
|
+
if (forgotPasswordSendVerificationTokenOn ==
|
|
814
|
+
constants_1.ForgotPasswordSendVerificationTokenOn.MOBILE &&
|
|
815
|
+
user.mobile) {
|
|
786
816
|
const smsService = this.smsFactory.getSmsService();
|
|
787
|
-
smsService.sendSMSUsingTemplate(user.mobile,
|
|
788
|
-
solidAppName: this.settingService.getConfigValue(
|
|
817
|
+
smsService.sendSMSUsingTemplate(user.mobile, "forgot-password", {
|
|
818
|
+
solidAppName: this.settingService.getConfigValue("appTitle"),
|
|
789
819
|
otp: user.verificationTokenOnForgotPassword,
|
|
790
820
|
verificationTokenOnForgotPassword: user.verificationTokenOnForgotPassword,
|
|
791
821
|
firstName: user.username,
|
|
792
|
-
companyLogoUrl: companyLogo
|
|
793
|
-
}, this.settingService.getConfigValue(
|
|
822
|
+
companyLogoUrl: companyLogo,
|
|
823
|
+
}, this.settingService.getConfigValue("shouldQueueSms"));
|
|
794
824
|
}
|
|
795
825
|
}
|
|
796
826
|
async confirmForgotPassword(confirmForgotPasswordDto) {
|
|
@@ -798,7 +828,7 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
798
828
|
const user = await this.resolveUserByVerificationToken(confirmForgotPasswordDto.verificationToken);
|
|
799
829
|
if (!user)
|
|
800
830
|
throw new common_1.UnauthorizedException(error_messages_1.ERROR_MESSAGES.INVALID_CREDENTIALS);
|
|
801
|
-
if (user.lastLoginProvider !==
|
|
831
|
+
if (user.lastLoginProvider !== "local")
|
|
802
832
|
throw new common_1.UnauthorizedException(error_messages_1.ERROR_MESSAGES.INVALID_CREDENTIALS);
|
|
803
833
|
if (!user.active)
|
|
804
834
|
throw new common_1.UnauthorizedException(error_messages_1.ERROR_MESSAGES.INVALID_CREDENTIALS);
|
|
@@ -806,13 +836,15 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
806
836
|
.createQueryBuilder()
|
|
807
837
|
.update(user_entity_1.User)
|
|
808
838
|
.set({
|
|
809
|
-
forgotPasswordConfirmedAt: () =>
|
|
810
|
-
verificationTokenOnForgotPassword: () =>
|
|
811
|
-
verificationTokenOnForgotPasswordExpiresAt: () =>
|
|
839
|
+
forgotPasswordConfirmedAt: () => "NOW()",
|
|
840
|
+
verificationTokenOnForgotPassword: () => "NULL",
|
|
841
|
+
verificationTokenOnForgotPasswordExpiresAt: () => "NULL",
|
|
842
|
+
})
|
|
843
|
+
.where("id = :id", { id: user.id })
|
|
844
|
+
.andWhere("verificationTokenOnForgotPassword = :token", {
|
|
845
|
+
token: confirmForgotPasswordDto.verificationToken,
|
|
812
846
|
})
|
|
813
|
-
.
|
|
814
|
-
.andWhere('verificationTokenOnForgotPassword = :token', { token: confirmForgotPasswordDto.verificationToken })
|
|
815
|
-
.andWhere('verificationTokenOnForgotPasswordExpiresAt > NOW()')
|
|
847
|
+
.andWhere("verificationTokenOnForgotPasswordExpiresAt > NOW()")
|
|
816
848
|
.execute();
|
|
817
849
|
if (affected !== 1) {
|
|
818
850
|
throw new common_1.UnauthorizedException(error_messages_1.ERROR_MESSAGES.INVALID_CREDENTIALS);
|
|
@@ -820,41 +852,48 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
820
852
|
const pwdHash = await this.hashingService.hash(confirmForgotPasswordDto.password);
|
|
821
853
|
const pwdScheme = this.hashingService.name();
|
|
822
854
|
const pwdSchemeVersion = this.hashingService.currentVersion();
|
|
823
|
-
await m.getRepository(user_entity_1.User).update({ id: user.id }, {
|
|
855
|
+
await m.getRepository(user_entity_1.User).update({ id: user.id }, {
|
|
856
|
+
password: pwdHash,
|
|
857
|
+
passwordScheme: pwdScheme,
|
|
858
|
+
passwordSchemeVersion: pwdSchemeVersion,
|
|
859
|
+
});
|
|
824
860
|
await this.notifyUserOnPasswordChanged(user);
|
|
825
861
|
return {
|
|
826
|
-
status:
|
|
862
|
+
status: "success",
|
|
827
863
|
message: success_messages_1.SUCCESS_MESSAGES.FORGOT_PASSWORD_CONFIRMED,
|
|
828
|
-
error:
|
|
829
|
-
errorCode:
|
|
864
|
+
error: "",
|
|
865
|
+
errorCode: "",
|
|
830
866
|
data: {},
|
|
831
867
|
};
|
|
832
868
|
});
|
|
833
869
|
}
|
|
834
870
|
async notifyUserOnPasswordChanged(user) {
|
|
835
871
|
const companyLogo = await this.getCompanyLogo();
|
|
836
|
-
const forgotPasswordSendVerificationTokenOn = this.settingService.getConfigValue(
|
|
837
|
-
if (forgotPasswordSendVerificationTokenOn ==
|
|
872
|
+
const forgotPasswordSendVerificationTokenOn = this.settingService.getConfigValue("forgotPasswordSendVerificationTokenOn");
|
|
873
|
+
if (forgotPasswordSendVerificationTokenOn ==
|
|
874
|
+
constants_1.ForgotPasswordSendVerificationTokenOn.EMAIL) {
|
|
838
875
|
const mailService = this.mailServiceFactory.getMailService();
|
|
839
|
-
mailService.sendEmailUsingTemplate(user.email,
|
|
840
|
-
solidAppName: this.settingService.getConfigValue(
|
|
841
|
-
solidAppWebsiteUrl: this.settingService.getConfigValue(
|
|
876
|
+
mailService.sendEmailUsingTemplate(user.email, "password-changed", {
|
|
877
|
+
solidAppName: this.settingService.getConfigValue("appTitle"),
|
|
878
|
+
solidAppWebsiteUrl: this.settingService.getConfigValue("solidAppWebsiteUrl"),
|
|
842
879
|
email: user.email,
|
|
843
880
|
firstName: user.username,
|
|
844
881
|
fullName: user.fullName,
|
|
845
|
-
passwordResetLink: `${this.settingService.getConfigValue(
|
|
846
|
-
companyLogoUrl: companyLogo
|
|
847
|
-
}, this.settingService.getConfigValue(
|
|
882
|
+
passwordResetLink: `${this.settingService.getConfigValue("frontendForgotPasswordPageUrl")}?token=${user.verificationTokenOnForgotPassword}`,
|
|
883
|
+
companyLogoUrl: companyLogo,
|
|
884
|
+
}, this.settingService.getConfigValue("shouldQueueEmails"), null, null, "user", user.id);
|
|
848
885
|
}
|
|
849
|
-
if (forgotPasswordSendVerificationTokenOn ==
|
|
886
|
+
if (forgotPasswordSendVerificationTokenOn ==
|
|
887
|
+
constants_1.ForgotPasswordSendVerificationTokenOn.MOBILE &&
|
|
888
|
+
user.mobile) {
|
|
850
889
|
const smsService = this.smsFactory.getSmsService();
|
|
851
|
-
smsService.sendSMSUsingTemplate(user.mobile,
|
|
852
|
-
solidAppName: this.settingService.getConfigValue(
|
|
890
|
+
smsService.sendSMSUsingTemplate(user.mobile, "forgot-password", {
|
|
891
|
+
solidAppName: this.settingService.getConfigValue("appTitle"),
|
|
853
892
|
otp: user.verificationTokenOnForgotPassword,
|
|
854
893
|
verificationTokenOnForgotPassword: user.verificationTokenOnForgotPassword,
|
|
855
894
|
firstName: user.username,
|
|
856
|
-
companyLogoUrl: companyLogo
|
|
857
|
-
}, this.settingService.getConfigValue(
|
|
895
|
+
companyLogoUrl: companyLogo,
|
|
896
|
+
}, this.settingService.getConfigValue("shouldQueueSms"));
|
|
858
897
|
}
|
|
859
898
|
}
|
|
860
899
|
async generateTokens(user) {
|
|
@@ -897,14 +936,14 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
897
936
|
id: sub,
|
|
898
937
|
},
|
|
899
938
|
relations: {
|
|
900
|
-
roles: true
|
|
901
|
-
}
|
|
939
|
+
roles: true,
|
|
940
|
+
},
|
|
902
941
|
});
|
|
903
942
|
if (!user) {
|
|
904
943
|
throw new common_1.UnauthorizedException(error_messages_1.ERROR_MESSAGES.SESSION_INVALID);
|
|
905
944
|
}
|
|
906
945
|
const currentRefreshToken = await this.refreshTokenIdsStorage.validateAndRotate(user, refreshTokenDto.refreshToken);
|
|
907
|
-
await this.userActivityHistoryService.logEvent(
|
|
946
|
+
await this.userActivityHistoryService.logEvent("tokenRefreshed", user);
|
|
908
947
|
return {
|
|
909
948
|
accessToken: await this.generateAccessToken(user),
|
|
910
949
|
refreshToken: currentRefreshToken,
|
|
@@ -935,7 +974,8 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
935
974
|
try {
|
|
936
975
|
const response = await this.httpService.axiosRef.get(`https://www.googleapis.com/oauth2/v1/userinfo?alt=json&access_token=${user.googleAccessToken}`);
|
|
937
976
|
const userProfile = response.data;
|
|
938
|
-
if (userProfile.email === user.email &&
|
|
977
|
+
if (userProfile.email === user.email &&
|
|
978
|
+
userProfile.id === user.googleId) {
|
|
939
979
|
return userProfile;
|
|
940
980
|
}
|
|
941
981
|
else {
|
|
@@ -949,11 +989,11 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
949
989
|
async signInUsingGoogle(accessCode) {
|
|
950
990
|
const user = await this.userRepository.findOne({
|
|
951
991
|
where: {
|
|
952
|
-
accessCode: accessCode
|
|
992
|
+
accessCode: accessCode,
|
|
953
993
|
},
|
|
954
994
|
relations: {
|
|
955
|
-
roles: true
|
|
956
|
-
}
|
|
995
|
+
roles: true,
|
|
996
|
+
},
|
|
957
997
|
});
|
|
958
998
|
if (!user) {
|
|
959
999
|
throw new common_1.UnauthorizedException(error_messages_1.ERROR_MESSAGES.USER_NOT_FOUND);
|
|
@@ -974,24 +1014,167 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
974
1014
|
mobile: user.mobile,
|
|
975
1015
|
username: user.username,
|
|
976
1016
|
id: user.id,
|
|
977
|
-
roles: user.roles.map((role) => role.name)
|
|
1017
|
+
roles: user.roles.map((role) => role.name),
|
|
1018
|
+
},
|
|
1019
|
+
...tokens,
|
|
1020
|
+
};
|
|
1021
|
+
}
|
|
1022
|
+
async validateUserUsingFacebook(user) {
|
|
1023
|
+
if (!user.facebookAccessToken || !user.facebookId) {
|
|
1024
|
+
throw new common_1.UnauthorizedException(error_messages_1.ERROR_MESSAGES.USER_NOT_FOUND);
|
|
1025
|
+
}
|
|
1026
|
+
try {
|
|
1027
|
+
const response = await this.httpService.axiosRef.get(`https://graph.facebook.com/me`, {
|
|
1028
|
+
params: { fields: "id,name,email" },
|
|
1029
|
+
headers: {
|
|
1030
|
+
Authorization: `Bearer ${user.facebookAccessToken}`,
|
|
1031
|
+
},
|
|
1032
|
+
});
|
|
1033
|
+
const userProfile = response.data;
|
|
1034
|
+
if (userProfile.id === user.facebookId &&
|
|
1035
|
+
(!user.email || !userProfile.email || userProfile.email === user.email)) {
|
|
1036
|
+
return userProfile;
|
|
1037
|
+
}
|
|
1038
|
+
else {
|
|
1039
|
+
throw new common_1.UnauthorizedException(error_messages_1.ERROR_MESSAGES.INVALID_USER_PROFILE);
|
|
1040
|
+
}
|
|
1041
|
+
}
|
|
1042
|
+
catch (error) {
|
|
1043
|
+
if (error instanceof common_1.UnauthorizedException) {
|
|
1044
|
+
throw error;
|
|
1045
|
+
}
|
|
1046
|
+
throw new common_1.UnauthorizedException(error_messages_1.ERROR_MESSAGES.USER_NOT_FOUND);
|
|
1047
|
+
}
|
|
1048
|
+
}
|
|
1049
|
+
async signInUsingFacebook(accessCode) {
|
|
1050
|
+
const user = await this.userRepository.findOne({
|
|
1051
|
+
where: {
|
|
1052
|
+
accessCode: accessCode,
|
|
1053
|
+
},
|
|
1054
|
+
relations: {
|
|
1055
|
+
roles: true,
|
|
1056
|
+
},
|
|
1057
|
+
});
|
|
1058
|
+
if (!user) {
|
|
1059
|
+
throw new common_1.UnauthorizedException(error_messages_1.ERROR_MESSAGES.USER_NOT_FOUND);
|
|
1060
|
+
}
|
|
1061
|
+
this.checkAccountBlocked(user);
|
|
1062
|
+
try {
|
|
1063
|
+
await this.validateUserUsingFacebook(user);
|
|
1064
|
+
}
|
|
1065
|
+
catch (e) {
|
|
1066
|
+
await this.incrementFailedAttempts(user);
|
|
1067
|
+
throw e;
|
|
1068
|
+
}
|
|
1069
|
+
await this.resetFailedAttempts(user);
|
|
1070
|
+
const tokens = await this.generateTokens(user);
|
|
1071
|
+
return {
|
|
1072
|
+
user: {
|
|
1073
|
+
email: user.email,
|
|
1074
|
+
mobile: user.mobile,
|
|
1075
|
+
username: user.username,
|
|
1076
|
+
id: user.id,
|
|
1077
|
+
roles: user.roles.map((role) => role.name),
|
|
978
1078
|
},
|
|
979
|
-
...tokens
|
|
1079
|
+
...tokens,
|
|
1080
|
+
};
|
|
1081
|
+
}
|
|
1082
|
+
async validateUserUsingMicrosoft(user) {
|
|
1083
|
+
try {
|
|
1084
|
+
const response = await this.httpService.axiosRef.get(`https://graph.microsoft.com/v1.0/me`, {
|
|
1085
|
+
headers: {
|
|
1086
|
+
Authorization: `Bearer ${user.microsoftAccessToken}`,
|
|
1087
|
+
},
|
|
1088
|
+
});
|
|
1089
|
+
const userProfile = response.data;
|
|
1090
|
+
const profileEmail = userProfile.mail || userProfile.userPrincipalName;
|
|
1091
|
+
if (userProfile.id === user.microsoftId &&
|
|
1092
|
+
(!user.email || profileEmail === user.email)) {
|
|
1093
|
+
return userProfile;
|
|
1094
|
+
}
|
|
1095
|
+
else {
|
|
1096
|
+
throw new common_1.UnauthorizedException(error_messages_1.ERROR_MESSAGES.INVALID_USER_PROFILE);
|
|
1097
|
+
}
|
|
1098
|
+
}
|
|
1099
|
+
catch (error) {
|
|
1100
|
+
throw new common_1.UnauthorizedException("Microsoft OAuth profile fetch failed");
|
|
1101
|
+
}
|
|
1102
|
+
}
|
|
1103
|
+
async signInUsingMicrosoft(accessCode) {
|
|
1104
|
+
const user = await this.userRepository.findOne({
|
|
1105
|
+
where: {
|
|
1106
|
+
accessCode: accessCode,
|
|
1107
|
+
},
|
|
1108
|
+
relations: {
|
|
1109
|
+
roles: true,
|
|
1110
|
+
},
|
|
1111
|
+
});
|
|
1112
|
+
if (!user) {
|
|
1113
|
+
throw new common_1.UnauthorizedException(error_messages_1.ERROR_MESSAGES.USER_NOT_FOUND);
|
|
1114
|
+
}
|
|
1115
|
+
this.checkAccountBlocked(user);
|
|
1116
|
+
try {
|
|
1117
|
+
await this.validateUserUsingMicrosoft(user);
|
|
1118
|
+
}
|
|
1119
|
+
catch (e) {
|
|
1120
|
+
await this.incrementFailedAttempts(user);
|
|
1121
|
+
throw e;
|
|
1122
|
+
}
|
|
1123
|
+
await this.resetFailedAttempts(user);
|
|
1124
|
+
const tokens = await this.generateTokens(user);
|
|
1125
|
+
return {
|
|
1126
|
+
user: {
|
|
1127
|
+
email: user.email,
|
|
1128
|
+
mobile: user.mobile,
|
|
1129
|
+
username: user.username,
|
|
1130
|
+
id: user.id,
|
|
1131
|
+
roles: user.roles.map((role) => role.name),
|
|
1132
|
+
},
|
|
1133
|
+
...tokens,
|
|
1134
|
+
};
|
|
1135
|
+
}
|
|
1136
|
+
async signInUsingApple(accessCode) {
|
|
1137
|
+
const user = await this.userRepository.findOne({
|
|
1138
|
+
where: {
|
|
1139
|
+
accessCode: accessCode,
|
|
1140
|
+
},
|
|
1141
|
+
relations: {
|
|
1142
|
+
roles: true,
|
|
1143
|
+
},
|
|
1144
|
+
});
|
|
1145
|
+
if (!user) {
|
|
1146
|
+
throw new common_1.UnauthorizedException(error_messages_1.ERROR_MESSAGES.USER_NOT_FOUND);
|
|
1147
|
+
}
|
|
1148
|
+
this.checkAccountBlocked(user);
|
|
1149
|
+
await this.resetFailedAttempts(user);
|
|
1150
|
+
const tokens = await this.generateTokens(user);
|
|
1151
|
+
return {
|
|
1152
|
+
user: {
|
|
1153
|
+
email: user.email,
|
|
1154
|
+
mobile: user.mobile,
|
|
1155
|
+
username: user.username,
|
|
1156
|
+
id: user.id,
|
|
1157
|
+
roles: user.roles.map((role) => role.name),
|
|
1158
|
+
},
|
|
1159
|
+
...tokens,
|
|
980
1160
|
};
|
|
981
1161
|
}
|
|
982
1162
|
async isPasswordlessRegistrationEnabled() {
|
|
983
|
-
return this.settingService.getConfigValue(
|
|
1163
|
+
return this.settingService.getConfigValue("passwordLessAuth");
|
|
984
1164
|
}
|
|
985
1165
|
checkAccountBlocked(user) {
|
|
986
|
-
const maxFailedAttempts = this.settingService.getConfigValue(
|
|
987
|
-
if (maxFailedAttempts > 0 &&
|
|
1166
|
+
const maxFailedAttempts = this.settingService.getConfigValue("maxFailedLoginAttempts");
|
|
1167
|
+
if (maxFailedAttempts > 0 &&
|
|
1168
|
+
user.failedLoginAttempts >= maxFailedAttempts) {
|
|
988
1169
|
throw new common_1.ForbiddenException(error_messages_1.ERROR_MESSAGES.ACCOUNT_BLOCKED);
|
|
989
1170
|
}
|
|
990
1171
|
}
|
|
991
1172
|
async incrementFailedAttempts(user) {
|
|
992
1173
|
const nextFailedAttempts = (user.failedLoginAttempts ?? 0) + 1;
|
|
993
1174
|
user.failedLoginAttempts = nextFailedAttempts;
|
|
994
|
-
await this.userRepository.update(user.id, {
|
|
1175
|
+
await this.userRepository.update(user.id, {
|
|
1176
|
+
failedLoginAttempts: nextFailedAttempts,
|
|
1177
|
+
});
|
|
995
1178
|
}
|
|
996
1179
|
async resetFailedAttempts(user) {
|
|
997
1180
|
if (user.failedLoginAttempts === 0)
|
|
@@ -1010,13 +1193,14 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
1010
1193
|
const user = await this.userRepository.findOne({
|
|
1011
1194
|
where: {
|
|
1012
1195
|
id: userId,
|
|
1013
|
-
}
|
|
1196
|
+
},
|
|
1014
1197
|
});
|
|
1015
|
-
await this.userActivityHistoryService.logEvent(
|
|
1198
|
+
await this.userActivityHistoryService.logEvent("logout", user);
|
|
1016
1199
|
return { message: success_messages_1.SUCCESS_MESSAGES.LOGOUT_SUCCESS };
|
|
1017
1200
|
}
|
|
1018
1201
|
catch (err) {
|
|
1019
|
-
throw err instanceof common_1.UnauthorizedException ||
|
|
1202
|
+
throw err instanceof common_1.UnauthorizedException ||
|
|
1203
|
+
err instanceof common_1.InternalServerErrorException
|
|
1020
1204
|
? err
|
|
1021
1205
|
: new common_1.InternalServerErrorException(error_messages_1.ERROR_MESSAGES.LOGOUT_FAILED);
|
|
1022
1206
|
}
|
|
@@ -1035,8 +1219,8 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
1035
1219
|
id: activeUser.sub,
|
|
1036
1220
|
},
|
|
1037
1221
|
relations: {
|
|
1038
|
-
roles: true
|
|
1039
|
-
}
|
|
1222
|
+
roles: true,
|
|
1223
|
+
},
|
|
1040
1224
|
});
|
|
1041
1225
|
const refreshTokenState = await this.refreshTokenIdsStorage.getCurrentRefreshTokenState(user.id);
|
|
1042
1226
|
const response = {
|
|
@@ -1045,7 +1229,7 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
1045
1229
|
mobile: user.mobile,
|
|
1046
1230
|
username: user.username,
|
|
1047
1231
|
id: user.id,
|
|
1048
|
-
roles: user.roles.map((role) => role.name)
|
|
1232
|
+
roles: user.roles.map((role) => role.name),
|
|
1049
1233
|
},
|
|
1050
1234
|
refreshToken: refreshTokenState.currentRefreshToken,
|
|
1051
1235
|
};
|
|
@@ -1054,21 +1238,33 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
1054
1238
|
async generateSsoCode(activeUser, rawAccessToken) {
|
|
1055
1239
|
const refreshTokenState = await this.refreshTokenIdsStorage.getCurrentRefreshTokenState(activeUser.sub);
|
|
1056
1240
|
if (!refreshTokenState?.currentRefreshToken) {
|
|
1057
|
-
throw new common_1.UnauthorizedException(
|
|
1241
|
+
throw new common_1.UnauthorizedException("No active session found");
|
|
1058
1242
|
}
|
|
1059
1243
|
const ssoCode = await this.ssoCodeStorage.generateCode(activeUser.sub, rawAccessToken, refreshTokenState.currentRefreshToken);
|
|
1060
1244
|
return { ssoCode };
|
|
1061
1245
|
}
|
|
1062
1246
|
async exchangeSsoCode(code) {
|
|
1063
1247
|
const { userId, accessToken, refreshToken } = await this.ssoCodeStorage.consumeCode(code);
|
|
1064
|
-
const user = await this.userRepository.findOne({
|
|
1248
|
+
const user = await this.userRepository.findOne({
|
|
1249
|
+
where: { id: userId },
|
|
1250
|
+
relations: { roles: true },
|
|
1251
|
+
});
|
|
1065
1252
|
if (!user) {
|
|
1066
|
-
throw new common_1.UnauthorizedException(
|
|
1253
|
+
throw new common_1.UnauthorizedException("User not found");
|
|
1067
1254
|
}
|
|
1068
1255
|
return { accessToken, refreshToken, user: this.buildUserPayload(user) };
|
|
1069
1256
|
}
|
|
1070
1257
|
};
|
|
1071
1258
|
exports.AuthenticationService = AuthenticationService;
|
|
1259
|
+
AuthenticationService.SIGNUP_DTO_KEYS = new Set([
|
|
1260
|
+
"username",
|
|
1261
|
+
"email",
|
|
1262
|
+
"password",
|
|
1263
|
+
"fullName",
|
|
1264
|
+
"mobile",
|
|
1265
|
+
"roles",
|
|
1266
|
+
"forcePasswordChange",
|
|
1267
|
+
]);
|
|
1072
1268
|
exports.AuthenticationService = AuthenticationService = AuthenticationService_1 = __decorate([
|
|
1073
1269
|
(0, common_1.Injectable)(),
|
|
1074
1270
|
__param(13, (0, typeorm_1.InjectDataSource)()),
|
|
@@ -1085,7 +1281,8 @@ exports.AuthenticationService = AuthenticationService = AuthenticationService_1
|
|
|
1085
1281
|
role_metadata_service_1.RoleMetadataService,
|
|
1086
1282
|
user_activity_history_service_1.UserActivityHistoryService,
|
|
1087
1283
|
sso_code_storage_service_1.SsoCodeStorageService,
|
|
1088
|
-
typeorm_2.DataSource
|
|
1284
|
+
typeorm_2.DataSource,
|
|
1285
|
+
solid_registry_1.SolidRegistry])
|
|
1089
1286
|
], AuthenticationService);
|
|
1090
1287
|
function parseUniqueConstraintError(detail) {
|
|
1091
1288
|
const match = detail.match(/Key \(([^)]+)\)=\(([^)]+)\) already exists\./);
|
|
@@ -1093,9 +1290,9 @@ function parseUniqueConstraintError(detail) {
|
|
|
1093
1290
|
const field = match[1];
|
|
1094
1291
|
const value = match[2];
|
|
1095
1292
|
const fieldMap = {
|
|
1096
|
-
username:
|
|
1097
|
-
email:
|
|
1098
|
-
full_name_user_key:
|
|
1293
|
+
username: "username",
|
|
1294
|
+
email: "email address",
|
|
1295
|
+
full_name_user_key: "full name",
|
|
1099
1296
|
};
|
|
1100
1297
|
const friendlyField = fieldMap[field] || field;
|
|
1101
1298
|
return `A user with ${friendlyField} "${value}" already exists.`;
|