@sync-in/server 1.10.1 → 2.0.0
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/CHANGELOG.md +47 -0
- package/LICENSE +1 -1
- package/README.md +3 -11
- package/environment/environment.dist.min.yaml +1 -1
- package/environment/environment.dist.yaml +173 -28
- package/package.json +18 -17
- package/server/app.bootstrap.js +1 -5
- package/server/app.bootstrap.js.map +1 -1
- package/server/app.constants.js +1 -5
- package/server/app.constants.js.map +1 -1
- package/server/app.e2e-spec.js +1 -5
- package/server/app.e2e-spec.js.map +1 -1
- package/server/app.functions.js +1 -5
- package/server/app.functions.js.map +1 -1
- package/server/app.module.js +1 -5
- package/server/app.module.js.map +1 -1
- package/server/app.service.js +1 -5
- package/server/app.service.js.map +1 -1
- package/server/app.service.spec.js +2 -6
- package/server/app.service.spec.js.map +1 -1
- package/server/applications/admin/admin.module.js +1 -5
- package/server/applications/admin/admin.module.js.map +1 -1
- package/server/applications/admin/constants/routes.js +1 -5
- package/server/applications/admin/constants/routes.js.map +1 -1
- package/server/applications/admin/interfaces/check-update.interfaces.js +1 -5
- package/server/applications/admin/interfaces/check-update.interfaces.js.map +1 -1
- package/server/applications/admin/services/admin-scheduler.service.js +1 -5
- package/server/applications/admin/services/admin-scheduler.service.js.map +1 -1
- package/server/applications/admin/services/admin.service.js +13 -8
- package/server/applications/admin/services/admin.service.js.map +1 -1
- package/server/applications/admin/services/admin.service.spec.js +1 -5
- package/server/applications/admin/services/admin.service.spec.js.map +1 -1
- package/server/applications/admin/utils/check-update.js +1 -5
- package/server/applications/admin/utils/check-update.js.map +1 -1
- package/server/applications/applications.config.js +1 -5
- package/server/applications/applications.config.js.map +1 -1
- package/server/applications/applications.constants.js +5 -5
- package/server/applications/applications.constants.js.map +1 -1
- package/server/applications/applications.module.js +1 -5
- package/server/applications/applications.module.js.map +1 -1
- package/server/applications/comments/comments.controller.js +1 -5
- package/server/applications/comments/comments.controller.js.map +1 -1
- package/server/applications/comments/comments.controller.spec.js +1 -5
- package/server/applications/comments/comments.controller.spec.js.map +1 -1
- package/server/applications/comments/comments.module.js +1 -5
- package/server/applications/comments/comments.module.js.map +1 -1
- package/server/applications/comments/constants/routes.js +1 -5
- package/server/applications/comments/constants/routes.js.map +1 -1
- package/server/applications/comments/dto/comment.dto.js +1 -5
- package/server/applications/comments/dto/comment.dto.js.map +1 -1
- package/server/applications/comments/interfaces/comment-recent.interface.js +1 -5
- package/server/applications/comments/interfaces/comment-recent.interface.js.map +1 -1
- package/server/applications/comments/schemas/comment.interface.js +1 -5
- package/server/applications/comments/schemas/comment.interface.js.map +1 -1
- package/server/applications/comments/schemas/comments.schema.js +1 -5
- package/server/applications/comments/schemas/comments.schema.js.map +1 -1
- package/server/applications/comments/services/comments-manager.service.js +9 -7
- package/server/applications/comments/services/comments-manager.service.js.map +1 -1
- package/server/applications/comments/services/comments-manager.service.spec.js +10 -8
- package/server/applications/comments/services/comments-manager.service.spec.js.map +1 -1
- package/server/applications/comments/services/comments-queries.service.js +1 -5
- package/server/applications/comments/services/comments-queries.service.js.map +1 -1
- package/server/applications/files/adapters/files-indexer-mysql.service.js +29 -12
- package/server/applications/files/adapters/files-indexer-mysql.service.js.map +1 -1
- package/server/applications/files/adapters/files-indexer-mysql.service.spec.js +1 -5
- package/server/applications/files/adapters/files-indexer-mysql.service.spec.js.map +1 -1
- package/server/applications/files/constants/cache.js +1 -5
- package/server/applications/files/constants/cache.js.map +1 -1
- package/server/applications/files/constants/compress.js +1 -5
- package/server/applications/files/constants/compress.js.map +1 -1
- package/server/applications/files/constants/files.js +1 -5
- package/server/applications/files/constants/files.js.map +1 -1
- package/server/applications/files/constants/indexing.js +1 -5
- package/server/applications/files/constants/indexing.js.map +1 -1
- package/server/applications/files/constants/operations.js +1 -5
- package/server/applications/files/constants/operations.js.map +1 -1
- package/server/applications/files/constants/routes.js +1 -5
- package/server/applications/files/constants/routes.js.map +1 -1
- package/server/applications/files/constants/samples.js +1 -5
- package/server/applications/files/constants/samples.js.map +1 -1
- package/server/applications/files/dto/file-operations.dto.js +1 -5
- package/server/applications/files/dto/file-operations.dto.js.map +1 -1
- package/server/applications/files/events/file-task-event.js +1 -5
- package/server/applications/files/events/file-task-event.js.map +1 -1
- package/server/applications/files/files-tasks.controller.js +1 -5
- package/server/applications/files/files-tasks.controller.js.map +1 -1
- package/server/applications/files/files-tasks.controller.spec.js +1 -5
- package/server/applications/files/files-tasks.controller.spec.js.map +1 -1
- package/server/applications/files/files.config.js +1 -5
- package/server/applications/files/files.config.js.map +1 -1
- package/server/applications/files/files.controller.js +1 -5
- package/server/applications/files/files.controller.js.map +1 -1
- package/server/applications/files/files.controller.spec.js +1 -5
- package/server/applications/files/files.controller.spec.js.map +1 -1
- package/server/applications/files/files.module.js +1 -5
- package/server/applications/files/files.module.js.map +1 -1
- package/server/applications/files/interfaces/file-db-props.interface.js +1 -5
- package/server/applications/files/interfaces/file-db-props.interface.js.map +1 -1
- package/server/applications/files/interfaces/file-lock.interface.js +1 -5
- package/server/applications/files/interfaces/file-lock.interface.js.map +1 -1
- package/server/applications/files/interfaces/file-parse-index.js +1 -5
- package/server/applications/files/interfaces/file-parse-index.js.map +1 -1
- package/server/applications/files/interfaces/file-props.interface.js +1 -5
- package/server/applications/files/interfaces/file-props.interface.js.map +1 -1
- package/server/applications/files/interfaces/file-recent-location.interface.js +1 -5
- package/server/applications/files/interfaces/file-recent-location.interface.js.map +1 -1
- package/server/applications/files/interfaces/file-space.interface.js +1 -5
- package/server/applications/files/interfaces/file-space.interface.js.map +1 -1
- package/server/applications/files/interfaces/file-tree.interface.js +1 -5
- package/server/applications/files/interfaces/file-tree.interface.js.map +1 -1
- package/server/applications/files/models/file-error.js +1 -5
- package/server/applications/files/models/file-error.js.map +1 -1
- package/server/applications/files/models/file-lock-error.js +1 -5
- package/server/applications/files/models/file-lock-error.js.map +1 -1
- package/server/applications/files/models/file-task.js +1 -5
- package/server/applications/files/models/file-task.js.map +1 -1
- package/server/applications/files/models/files-indexer.js +1 -5
- package/server/applications/files/models/files-indexer.js.map +1 -1
- package/server/applications/files/modules/collabora-online/collabora-online-environment.decorator.js +1 -5
- package/server/applications/files/modules/collabora-online/collabora-online-environment.decorator.js.map +1 -1
- package/server/applications/files/modules/collabora-online/collabora-online-manager.service.js +21 -10
- package/server/applications/files/modules/collabora-online/collabora-online-manager.service.js.map +1 -1
- package/server/applications/files/modules/collabora-online/collabora-online-manager.service.spec.js +1 -5
- package/server/applications/files/modules/collabora-online/collabora-online-manager.service.spec.js.map +1 -1
- package/server/applications/files/modules/collabora-online/collabora-online.config.js +1 -5
- package/server/applications/files/modules/collabora-online/collabora-online.config.js.map +1 -1
- package/server/applications/files/modules/collabora-online/collabora-online.constants.js +1 -5
- package/server/applications/files/modules/collabora-online/collabora-online.constants.js.map +1 -1
- package/server/applications/files/modules/collabora-online/collabora-online.controller.js +1 -5
- package/server/applications/files/modules/collabora-online/collabora-online.controller.js.map +1 -1
- package/server/applications/files/modules/collabora-online/collabora-online.controller.spec.js +1 -5
- package/server/applications/files/modules/collabora-online/collabora-online.controller.spec.js.map +1 -1
- package/server/applications/files/modules/collabora-online/collabora-online.dtos.js +1 -5
- package/server/applications/files/modules/collabora-online/collabora-online.dtos.js.map +1 -1
- package/server/applications/files/modules/collabora-online/collabora-online.guard.js +1 -5
- package/server/applications/files/modules/collabora-online/collabora-online.guard.js.map +1 -1
- package/server/applications/files/modules/collabora-online/collabora-online.guard.spec.js +1 -5
- package/server/applications/files/modules/collabora-online/collabora-online.guard.spec.js.map +1 -1
- package/server/applications/files/modules/collabora-online/collabora-online.interface.js +1 -5
- package/server/applications/files/modules/collabora-online/collabora-online.interface.js.map +1 -1
- package/server/applications/files/modules/collabora-online/collabora-online.module.js +1 -5
- package/server/applications/files/modules/collabora-online/collabora-online.module.js.map +1 -1
- package/server/applications/files/modules/collabora-online/collabora-online.routes.js +1 -5
- package/server/applications/files/modules/collabora-online/collabora-online.routes.js.map +1 -1
- package/server/applications/files/modules/collabora-online/collabora-online.strategy.js +1 -5
- package/server/applications/files/modules/collabora-online/collabora-online.strategy.js.map +1 -1
- package/server/applications/files/modules/collabora-online/collabora-online.utils.js +1 -5
- package/server/applications/files/modules/collabora-online/collabora-online.utils.js.map +1 -1
- package/server/applications/files/modules/file-editor-providers.interface.js +6 -0
- package/server/applications/files/modules/file-editor-providers.interface.js.map +1 -0
- package/server/applications/files/modules/only-office/only-office-environment.decorator.js +1 -5
- package/server/applications/files/modules/only-office/only-office-environment.decorator.js.map +1 -1
- package/server/applications/files/modules/only-office/only-office-manager.service.js +57 -19
- package/server/applications/files/modules/only-office/only-office-manager.service.js.map +1 -1
- package/server/applications/files/modules/only-office/only-office-manager.service.spec.js +1 -5
- package/server/applications/files/modules/only-office/only-office-manager.service.spec.js.map +1 -1
- package/server/applications/files/modules/only-office/only-office.config.js +1 -5
- package/server/applications/files/modules/only-office/only-office.config.js.map +1 -1
- package/server/applications/files/modules/only-office/only-office.constants.js +1 -5
- package/server/applications/files/modules/only-office/only-office.constants.js.map +1 -1
- package/server/applications/files/modules/only-office/only-office.controller.js +1 -5
- package/server/applications/files/modules/only-office/only-office.controller.js.map +1 -1
- package/server/applications/files/modules/only-office/only-office.controller.spec.js +1 -5
- package/server/applications/files/modules/only-office/only-office.controller.spec.js.map +1 -1
- package/server/applications/files/modules/only-office/only-office.dtos.js +1 -5
- package/server/applications/files/modules/only-office/only-office.dtos.js.map +1 -1
- package/server/applications/files/modules/only-office/only-office.guard.js +1 -5
- package/server/applications/files/modules/only-office/only-office.guard.js.map +1 -1
- package/server/applications/files/modules/only-office/only-office.guard.spec.js +1 -5
- package/server/applications/files/modules/only-office/only-office.guard.spec.js.map +1 -1
- package/server/applications/files/modules/only-office/only-office.interface.js +1 -5
- package/server/applications/files/modules/only-office/only-office.interface.js.map +1 -1
- package/server/applications/files/modules/only-office/only-office.module.js +1 -5
- package/server/applications/files/modules/only-office/only-office.module.js.map +1 -1
- package/server/applications/files/modules/only-office/only-office.routes.js +1 -5
- package/server/applications/files/modules/only-office/only-office.routes.js.map +1 -1
- package/server/applications/files/modules/only-office/only-office.strategy.js +1 -5
- package/server/applications/files/modules/only-office/only-office.strategy.js.map +1 -1
- package/server/applications/files/schemas/file-content.interface.js +1 -5
- package/server/applications/files/schemas/file-content.interface.js.map +1 -1
- package/server/applications/files/schemas/file-recent.interface.js +1 -5
- package/server/applications/files/schemas/file-recent.interface.js.map +1 -1
- package/server/applications/files/schemas/file.interface.js +1 -5
- package/server/applications/files/schemas/file.interface.js.map +1 -1
- package/server/applications/files/schemas/files-content.schema.js +1 -5
- package/server/applications/files/schemas/files-content.schema.js.map +1 -1
- package/server/applications/files/schemas/files-recents.schema.js +1 -5
- package/server/applications/files/schemas/files-recents.schema.js.map +1 -1
- package/server/applications/files/schemas/files.schema.js +1 -5
- package/server/applications/files/schemas/files.schema.js.map +1 -1
- package/server/applications/files/services/files-content-manager.service.js +45 -16
- package/server/applications/files/services/files-content-manager.service.js.map +1 -1
- package/server/applications/files/services/files-lock-manager.service.js +53 -18
- package/server/applications/files/services/files-lock-manager.service.js.map +1 -1
- package/server/applications/files/services/files-lock-manager.service.spec.js +1 -5
- package/server/applications/files/services/files-lock-manager.service.spec.js.map +1 -1
- package/server/applications/files/services/files-manager.service.js +77 -24
- package/server/applications/files/services/files-manager.service.js.map +1 -1
- package/server/applications/files/services/files-manager.service.spec.js +1 -5
- package/server/applications/files/services/files-manager.service.spec.js.map +1 -1
- package/server/applications/files/services/files-methods.service.js +5 -6
- package/server/applications/files/services/files-methods.service.js.map +1 -1
- package/server/applications/files/services/files-methods.service.spec.js +1 -5
- package/server/applications/files/services/files-methods.service.spec.js.map +1 -1
- package/server/applications/files/services/files-parser.service.js +13 -8
- package/server/applications/files/services/files-parser.service.js.map +1 -1
- package/server/applications/files/services/files-parser.service.spec.js +1 -5
- package/server/applications/files/services/files-parser.service.spec.js.map +1 -1
- package/server/applications/files/services/files-queries.service.js +29 -12
- package/server/applications/files/services/files-queries.service.js.map +1 -1
- package/server/applications/files/services/files-recents.service.js +1 -5
- package/server/applications/files/services/files-recents.service.js.map +1 -1
- package/server/applications/files/services/files-recents.service.spec.js +1 -5
- package/server/applications/files/services/files-recents.service.spec.js.map +1 -1
- package/server/applications/files/services/files-scheduler.service.js +77 -24
- package/server/applications/files/services/files-scheduler.service.js.map +1 -1
- package/server/applications/files/services/files-search-manager.service.js +9 -7
- package/server/applications/files/services/files-search-manager.service.js.map +1 -1
- package/server/applications/files/services/files-search-manager.service.spec.js +1 -5
- package/server/applications/files/services/files-search-manager.service.spec.js.map +1 -1
- package/server/applications/files/services/files-tasks-manager.service.js +77 -24
- package/server/applications/files/services/files-tasks-manager.service.js.map +1 -1
- package/server/applications/files/services/files-tasks-manager.service.spec.js +1 -5
- package/server/applications/files/services/files-tasks-manager.service.spec.js.map +1 -1
- package/server/applications/files/utils/doc-textify/adapters/excel.js +1 -5
- package/server/applications/files/utils/doc-textify/adapters/excel.js.map +1 -1
- package/server/applications/files/utils/doc-textify/adapters/html.js +1 -5
- package/server/applications/files/utils/doc-textify/adapters/html.js.map +1 -1
- package/server/applications/files/utils/doc-textify/adapters/open-office.js +1 -5
- package/server/applications/files/utils/doc-textify/adapters/open-office.js.map +1 -1
- package/server/applications/files/utils/doc-textify/adapters/pdf.js +1 -5
- package/server/applications/files/utils/doc-textify/adapters/pdf.js.map +1 -1
- package/server/applications/files/utils/doc-textify/adapters/power-point.js +1 -5
- package/server/applications/files/utils/doc-textify/adapters/power-point.js.map +1 -1
- package/server/applications/files/utils/doc-textify/adapters/text.js +1 -5
- package/server/applications/files/utils/doc-textify/adapters/text.js.map +1 -1
- package/server/applications/files/utils/doc-textify/adapters/word.js +1 -5
- package/server/applications/files/utils/doc-textify/adapters/word.js.map +1 -1
- package/server/applications/files/utils/doc-textify/doc-textify.js +1 -5
- package/server/applications/files/utils/doc-textify/doc-textify.js.map +1 -1
- package/server/applications/files/utils/doc-textify/interfaces/doc-textify.interfaces.js +1 -5
- package/server/applications/files/utils/doc-textify/interfaces/doc-textify.interfaces.js.map +1 -1
- package/server/applications/files/utils/doc-textify/utils/clean.js +1 -5
- package/server/applications/files/utils/doc-textify/utils/clean.js.map +1 -1
- package/server/applications/files/utils/files-search.js +1 -5
- package/server/applications/files/utils/files-search.js.map +1 -1
- package/server/applications/files/utils/files-tree.js +1 -5
- package/server/applications/files/utils/files-tree.js.map +1 -1
- package/server/applications/files/utils/files.js +1 -5
- package/server/applications/files/utils/files.js.map +1 -1
- package/server/applications/files/utils/send-file.js +1 -5
- package/server/applications/files/utils/send-file.js.map +1 -1
- package/server/applications/files/utils/unzip-file.js +1 -5
- package/server/applications/files/utils/unzip-file.js.map +1 -1
- package/server/applications/files/utils/url-file.js +1 -5
- package/server/applications/files/utils/url-file.js.map +1 -1
- package/server/applications/links/constants/cache.js +1 -5
- package/server/applications/links/constants/cache.js.map +1 -1
- package/server/applications/links/constants/links.js +1 -5
- package/server/applications/links/constants/links.js.map +1 -1
- package/server/applications/links/constants/routes.js +1 -5
- package/server/applications/links/constants/routes.js.map +1 -1
- package/server/applications/links/dto/create-or-update-link.dto.js +1 -5
- package/server/applications/links/dto/create-or-update-link.dto.js.map +1 -1
- package/server/applications/links/interfaces/link-guest.interface.js +1 -5
- package/server/applications/links/interfaces/link-guest.interface.js.map +1 -1
- package/server/applications/links/interfaces/link-space.interface.js +1 -5
- package/server/applications/links/interfaces/link-space.interface.js.map +1 -1
- package/server/applications/links/links.controller.js +1 -5
- package/server/applications/links/links.controller.js.map +1 -1
- package/server/applications/links/links.controller.spec.js +1 -5
- package/server/applications/links/links.controller.spec.js.map +1 -1
- package/server/applications/links/schemas/link.interface.js +1 -5
- package/server/applications/links/schemas/link.interface.js.map +1 -1
- package/server/applications/links/schemas/links.schema.js +1 -5
- package/server/applications/links/schemas/links.schema.js.map +1 -1
- package/server/applications/links/services/links-manager.service.js +55 -20
- package/server/applications/links/services/links-manager.service.js.map +1 -1
- package/server/applications/links/services/links-manager.service.spec.js +3 -7
- package/server/applications/links/services/links-manager.service.spec.js.map +1 -1
- package/server/applications/links/services/links-queries.service.js +1 -5
- package/server/applications/links/services/links-queries.service.js.map +1 -1
- package/server/applications/notifications/constants/notifications.js +1 -5
- package/server/applications/notifications/constants/notifications.js.map +1 -1
- package/server/applications/notifications/constants/routes.js +1 -5
- package/server/applications/notifications/constants/routes.js.map +1 -1
- package/server/applications/notifications/constants/websocket.js +1 -5
- package/server/applications/notifications/constants/websocket.js.map +1 -1
- package/server/applications/notifications/i18n/de.js +1 -9
- package/server/applications/notifications/i18n/de.js.map +1 -1
- package/server/applications/notifications/i18n/es.js +1 -5
- package/server/applications/notifications/i18n/es.js.map +1 -1
- package/server/applications/notifications/i18n/fr.js +1 -5
- package/server/applications/notifications/i18n/fr.js.map +1 -1
- package/server/applications/notifications/i18n/hi.js +1 -5
- package/server/applications/notifications/i18n/hi.js.map +1 -1
- package/server/applications/notifications/i18n/index.js +1 -5
- package/server/applications/notifications/i18n/index.js.map +1 -1
- package/server/applications/notifications/i18n/it.js +1 -5
- package/server/applications/notifications/i18n/it.js.map +1 -1
- package/server/applications/notifications/i18n/ja.js +1 -5
- package/server/applications/notifications/i18n/ja.js.map +1 -1
- package/server/applications/notifications/i18n/ko.js +1 -5
- package/server/applications/notifications/i18n/ko.js.map +1 -1
- package/server/applications/notifications/i18n/pl.js +1 -5
- package/server/applications/notifications/i18n/pl.js.map +1 -1
- package/server/applications/notifications/i18n/pt.js +1 -5
- package/server/applications/notifications/i18n/pt.js.map +1 -1
- package/server/applications/notifications/i18n/pt_br.js +1 -5
- package/server/applications/notifications/i18n/pt_br.js.map +1 -1
- package/server/applications/notifications/i18n/ru.js +1 -5
- package/server/applications/notifications/i18n/ru.js.map +1 -1
- package/server/applications/notifications/i18n/tr.js +1 -5
- package/server/applications/notifications/i18n/tr.js.map +1 -1
- package/server/applications/notifications/i18n/zh.js +1 -5
- package/server/applications/notifications/i18n/zh.js.map +1 -1
- package/server/applications/notifications/interfaces/notification-properties.interface.js +1 -5
- package/server/applications/notifications/interfaces/notification-properties.interface.js.map +1 -1
- package/server/applications/notifications/interfaces/user-mail-notification.interface.js +1 -5
- package/server/applications/notifications/interfaces/user-mail-notification.interface.js.map +1 -1
- package/server/applications/notifications/mails/models.js +1 -5
- package/server/applications/notifications/mails/models.js.map +1 -1
- package/server/applications/notifications/mails/templates.js +1 -5
- package/server/applications/notifications/mails/templates.js.map +1 -1
- package/server/applications/notifications/mails/urls.js +1 -5
- package/server/applications/notifications/mails/urls.js.map +1 -1
- package/server/applications/notifications/notifications.controller.js +1 -5
- package/server/applications/notifications/notifications.controller.js.map +1 -1
- package/server/applications/notifications/notifications.controller.spec.js +1 -5
- package/server/applications/notifications/notifications.controller.spec.js.map +1 -1
- package/server/applications/notifications/notifications.gateway.js +1 -5
- package/server/applications/notifications/notifications.gateway.js.map +1 -1
- package/server/applications/notifications/notifications.module.js +1 -5
- package/server/applications/notifications/notifications.module.js.map +1 -1
- package/server/applications/notifications/schemas/notification.interface.js +1 -5
- package/server/applications/notifications/schemas/notification.interface.js.map +1 -1
- package/server/applications/notifications/schemas/notifications.schema.js +1 -5
- package/server/applications/notifications/schemas/notifications.schema.js.map +1 -1
- package/server/applications/notifications/services/notifications-manager.service.js +25 -11
- package/server/applications/notifications/services/notifications-manager.service.js.map +1 -1
- package/server/applications/notifications/services/notifications-manager.service.spec.js +20 -11
- package/server/applications/notifications/services/notifications-manager.service.spec.js.map +1 -1
- package/server/applications/notifications/services/notifications-queries.service.js +1 -5
- package/server/applications/notifications/services/notifications-queries.service.js.map +1 -1
- package/server/applications/shares/constants/routes.js +1 -5
- package/server/applications/shares/constants/routes.js.map +1 -1
- package/server/applications/shares/constants/shares.js +1 -5
- package/server/applications/shares/constants/shares.js.map +1 -1
- package/server/applications/shares/dto/create-or-update-share.dto.js +1 -5
- package/server/applications/shares/dto/create-or-update-share.dto.js.map +1 -1
- package/server/applications/shares/interfaces/share-child.interface.js +1 -5
- package/server/applications/shares/interfaces/share-child.interface.js.map +1 -1
- package/server/applications/shares/interfaces/share-env.interface.js +1 -5
- package/server/applications/shares/interfaces/share-env.interface.js.map +1 -1
- package/server/applications/shares/interfaces/share-file.interface.js +1 -5
- package/server/applications/shares/interfaces/share-file.interface.js.map +1 -1
- package/server/applications/shares/interfaces/share-link.interface.js +1 -5
- package/server/applications/shares/interfaces/share-link.interface.js.map +1 -1
- package/server/applications/shares/interfaces/share-props.interface.js +1 -5
- package/server/applications/shares/interfaces/share-props.interface.js.map +1 -1
- package/server/applications/shares/models/share-child.model.js +1 -5
- package/server/applications/shares/models/share-child.model.js.map +1 -1
- package/server/applications/shares/schemas/share-members.interface.js +1 -5
- package/server/applications/shares/schemas/share-members.interface.js.map +1 -1
- package/server/applications/shares/schemas/share.interface.js +1 -5
- package/server/applications/shares/schemas/share.interface.js.map +1 -1
- package/server/applications/shares/schemas/shares-members.schema.js +1 -5
- package/server/applications/shares/schemas/shares-members.schema.js.map +1 -1
- package/server/applications/shares/schemas/shares.schema.js +1 -5
- package/server/applications/shares/schemas/shares.schema.js.map +1 -1
- package/server/applications/shares/services/shares-manager.service.js +214 -68
- package/server/applications/shares/services/shares-manager.service.js.map +1 -1
- package/server/applications/shares/services/shares-manager.service.spec.js +1 -5
- package/server/applications/shares/services/shares-manager.service.spec.js.map +1 -1
- package/server/applications/shares/services/shares-queries.service.js +49 -17
- package/server/applications/shares/services/shares-queries.service.js.map +1 -1
- package/server/applications/shares/shares.controller.js +1 -5
- package/server/applications/shares/shares.controller.js.map +1 -1
- package/server/applications/shares/shares.controller.spec.js +1 -5
- package/server/applications/shares/shares.controller.spec.js.map +1 -1
- package/server/applications/shares/shares.module.js +1 -5
- package/server/applications/shares/shares.module.js.map +1 -1
- package/server/applications/spaces/constants/cache.js +1 -5
- package/server/applications/spaces/constants/cache.js.map +1 -1
- package/server/applications/spaces/constants/routes.js +1 -5
- package/server/applications/spaces/constants/routes.js.map +1 -1
- package/server/applications/spaces/constants/spaces.js +1 -5
- package/server/applications/spaces/constants/spaces.js.map +1 -1
- package/server/applications/spaces/decorators/space-override-permission.decorator.js +1 -5
- package/server/applications/spaces/decorators/space-override-permission.decorator.js.map +1 -1
- package/server/applications/spaces/decorators/space-skip-guard.decorator.js +1 -5
- package/server/applications/spaces/decorators/space-skip-guard.decorator.js.map +1 -1
- package/server/applications/spaces/decorators/space-skip-permissions.decorator.js +1 -5
- package/server/applications/spaces/decorators/space-skip-permissions.decorator.js.map +1 -1
- package/server/applications/spaces/decorators/space.decorator.js +1 -5
- package/server/applications/spaces/decorators/space.decorator.js.map +1 -1
- package/server/applications/spaces/dto/create-or-update-space.dto.js +1 -5
- package/server/applications/spaces/dto/create-or-update-space.dto.js.map +1 -1
- package/server/applications/spaces/dto/delete-space.dto.js +1 -5
- package/server/applications/spaces/dto/delete-space.dto.js.map +1 -1
- package/server/applications/spaces/dto/search-space.dto.js +1 -5
- package/server/applications/spaces/dto/search-space.dto.js.map +1 -1
- package/server/applications/spaces/dto/space-roots.dto.js +1 -5
- package/server/applications/spaces/dto/space-roots.dto.js.map +1 -1
- package/server/applications/spaces/guards/space.guard.js +17 -9
- package/server/applications/spaces/guards/space.guard.js.map +1 -1
- package/server/applications/spaces/guards/space.guard.spec.js +1 -5
- package/server/applications/spaces/guards/space.guard.spec.js.map +1 -1
- package/server/applications/spaces/interfaces/space-diff.interface.js +1 -5
- package/server/applications/spaces/interfaces/space-diff.interface.js.map +1 -1
- package/server/applications/spaces/interfaces/space-files.interface.js +1 -5
- package/server/applications/spaces/interfaces/space-files.interface.js.map +1 -1
- package/server/applications/spaces/interfaces/space-request.interface.js +1 -5
- package/server/applications/spaces/interfaces/space-request.interface.js.map +1 -1
- package/server/applications/spaces/interfaces/space-trash.interface.js +1 -5
- package/server/applications/spaces/interfaces/space-trash.interface.js.map +1 -1
- package/server/applications/spaces/models/space-env.model.js +1 -5
- package/server/applications/spaces/models/space-env.model.js.map +1 -1
- package/server/applications/spaces/models/space-props.model.js +1 -5
- package/server/applications/spaces/models/space-props.model.js.map +1 -1
- package/server/applications/spaces/models/space-root-props.model.js +1 -5
- package/server/applications/spaces/models/space-root-props.model.js.map +1 -1
- package/server/applications/spaces/models/space.model.js +1 -5
- package/server/applications/spaces/models/space.model.js.map +1 -1
- package/server/applications/spaces/schemas/space-members.interface.js +1 -5
- package/server/applications/spaces/schemas/space-members.interface.js.map +1 -1
- package/server/applications/spaces/schemas/space-root.interface.js +1 -5
- package/server/applications/spaces/schemas/space-root.interface.js.map +1 -1
- package/server/applications/spaces/schemas/space.interface.js +1 -5
- package/server/applications/spaces/schemas/space.interface.js.map +1 -1
- package/server/applications/spaces/schemas/spaces-members.schema.js +1 -5
- package/server/applications/spaces/schemas/spaces-members.schema.js.map +1 -1
- package/server/applications/spaces/schemas/spaces-roots.schema.js +1 -5
- package/server/applications/spaces/schemas/spaces-roots.schema.js.map +1 -1
- package/server/applications/spaces/schemas/spaces.schema.js +1 -5
- package/server/applications/spaces/schemas/spaces.schema.js.map +1 -1
- package/server/applications/spaces/services/spaces-browser.service.js +77 -24
- package/server/applications/spaces/services/spaces-browser.service.js.map +1 -1
- package/server/applications/spaces/services/spaces-browser.service.spec.js +1 -5
- package/server/applications/spaces/services/spaces-browser.service.spec.js.map +1 -1
- package/server/applications/spaces/services/spaces-manager.service.js +193 -53
- package/server/applications/spaces/services/spaces-manager.service.js.map +1 -1
- package/server/applications/spaces/services/spaces-manager.service.spec.js +1 -5
- package/server/applications/spaces/services/spaces-manager.service.spec.js.map +1 -1
- package/server/applications/spaces/services/spaces-queries.service.js +65 -21
- package/server/applications/spaces/services/spaces-queries.service.js.map +1 -1
- package/server/applications/spaces/services/spaces-scheduler.service.js +49 -17
- package/server/applications/spaces/services/spaces-scheduler.service.js.map +1 -1
- package/server/applications/spaces/spaces.controller.js +1 -5
- package/server/applications/spaces/spaces.controller.js.map +1 -1
- package/server/applications/spaces/spaces.controller.spec.js +1 -5
- package/server/applications/spaces/spaces.controller.spec.js.map +1 -1
- package/server/applications/spaces/spaces.module.js +1 -5
- package/server/applications/spaces/spaces.module.js.map +1 -1
- package/server/applications/spaces/utils/paths.js +1 -5
- package/server/applications/spaces/utils/paths.js.map +1 -1
- package/server/applications/spaces/utils/permissions.js +1 -5
- package/server/applications/spaces/utils/permissions.js.map +1 -1
- package/server/applications/spaces/utils/routes.js +1 -5
- package/server/applications/spaces/utils/routes.js.map +1 -1
- package/server/applications/sync/constants/auth.js +1 -5
- package/server/applications/sync/constants/auth.js.map +1 -1
- package/server/applications/sync/constants/routes.js +6 -5
- package/server/applications/sync/constants/routes.js.map +1 -1
- package/server/applications/sync/constants/store.js +1 -9
- package/server/applications/sync/constants/store.js.map +1 -1
- package/server/applications/sync/constants/sync.js +2 -6
- package/server/applications/sync/constants/sync.js.map +1 -1
- package/server/applications/sync/decorators/sync-context.decorator.js +1 -5
- package/server/applications/sync/decorators/sync-context.decorator.js.map +1 -1
- package/server/applications/sync/decorators/sync-environment.decorator.js +1 -5
- package/server/applications/sync/decorators/sync-environment.decorator.js.map +1 -1
- package/server/applications/sync/dtos/sync-client-auth.dto.js +12 -8
- package/server/applications/sync/dtos/sync-client-auth.dto.js.map +1 -1
- package/server/applications/sync/dtos/sync-client-info.dto.js +49 -0
- package/server/applications/sync/dtos/sync-client-info.dto.js.map +1 -0
- package/server/applications/sync/dtos/sync-client-registration.dto.js +34 -11
- package/server/applications/sync/dtos/sync-client-registration.dto.js.map +1 -1
- package/server/applications/sync/dtos/sync-operations.dto.js +1 -5
- package/server/applications/sync/dtos/sync-operations.dto.js.map +1 -1
- package/server/applications/sync/dtos/sync-path.dto.js +1 -5
- package/server/applications/sync/dtos/sync-path.dto.js.map +1 -1
- package/server/applications/sync/dtos/sync-upload.dto.js +1 -5
- package/server/applications/sync/dtos/sync-upload.dto.js.map +1 -1
- package/server/applications/sync/interceptors/sync-diff-gzip-body.interceptor.js +1 -5
- package/server/applications/sync/interceptors/sync-diff-gzip-body.interceptor.js.map +1 -1
- package/server/applications/sync/interceptors/sync-diff-gzip-body.interceptor.spec.js +1 -5
- package/server/applications/sync/interceptors/sync-diff-gzip-body.interceptor.spec.js.map +1 -1
- package/server/applications/sync/interfaces/store-manifest.interface.js +1 -5
- package/server/applications/sync/interfaces/store-manifest.interface.js.map +1 -1
- package/server/applications/sync/interfaces/sync-client-auth.interface.js +1 -25
- package/server/applications/sync/interfaces/sync-client-auth.interface.js.map +1 -1
- package/server/applications/sync/interfaces/sync-client-paths.interface.js +1 -5
- package/server/applications/sync/interfaces/sync-client-paths.interface.js.map +1 -1
- package/server/applications/sync/interfaces/sync-client.interface.js +1 -5
- package/server/applications/sync/interfaces/sync-client.interface.js.map +1 -1
- package/server/applications/sync/interfaces/sync-diff.interface.js +1 -5
- package/server/applications/sync/interfaces/sync-diff.interface.js.map +1 -1
- package/server/applications/sync/interfaces/sync-path.interface.js +1 -5
- package/server/applications/sync/interfaces/sync-path.interface.js.map +1 -1
- package/server/applications/sync/schemas/sync-client.interface.js +1 -5
- package/server/applications/sync/schemas/sync-client.interface.js.map +1 -1
- package/server/applications/sync/schemas/sync-clients.schema.js +1 -5
- package/server/applications/sync/schemas/sync-clients.schema.js.map +1 -1
- package/server/applications/sync/schemas/sync-path.interface.js +1 -5
- package/server/applications/sync/schemas/sync-path.interface.js.map +1 -1
- package/server/applications/sync/schemas/sync-paths.schema.js +1 -5
- package/server/applications/sync/schemas/sync-paths.schema.js.map +1 -1
- package/server/applications/sync/services/sync-clients-manager.service.js +108 -44
- package/server/applications/sync/services/sync-clients-manager.service.js.map +1 -1
- package/server/applications/sync/services/sync-clients-manager.service.spec.js +14 -17
- package/server/applications/sync/services/sync-clients-manager.service.spec.js.map +1 -1
- package/server/applications/sync/services/sync-manager.service.js +29 -12
- package/server/applications/sync/services/sync-manager.service.js.map +1 -1
- package/server/applications/sync/services/sync-manager.service.spec.js +1 -5
- package/server/applications/sync/services/sync-manager.service.spec.js.map +1 -1
- package/server/applications/sync/services/sync-paths-manager.service.js +27 -17
- package/server/applications/sync/services/sync-paths-manager.service.js.map +1 -1
- package/server/applications/sync/services/sync-paths-manager.service.spec.js +11 -15
- package/server/applications/sync/services/sync-paths-manager.service.spec.js.map +1 -1
- package/server/applications/sync/services/sync-queries.service.js +1 -5
- package/server/applications/sync/services/sync-queries.service.js.map +1 -1
- package/server/applications/sync/sync.config.js +1 -5
- package/server/applications/sync/sync.config.js.map +1 -1
- package/server/applications/sync/sync.controller.js +21 -6
- package/server/applications/sync/sync.controller.js.map +1 -1
- package/server/applications/sync/sync.controller.spec.js +1 -5
- package/server/applications/sync/sync.controller.spec.js.map +1 -1
- package/server/applications/sync/sync.module.js +1 -5
- package/server/applications/sync/sync.module.js.map +1 -1
- package/server/applications/sync/utils/functions.js +1 -5
- package/server/applications/sync/utils/functions.js.map +1 -1
- package/server/applications/sync/utils/normalizedMap.js +1 -5
- package/server/applications/sync/utils/normalizedMap.js.map +1 -1
- package/server/applications/sync/utils/routes.js +1 -5
- package/server/applications/sync/utils/routes.js.map +1 -1
- package/server/applications/users/admin-users.controller.js +2 -6
- package/server/applications/users/admin-users.controller.js.map +1 -1
- package/server/applications/users/admin-users.controller.spec.js +6 -10
- package/server/applications/users/admin-users.controller.spec.js.map +1 -1
- package/server/applications/users/constants/group.js +1 -5
- package/server/applications/users/constants/group.js.map +1 -1
- package/server/applications/users/constants/member.js +1 -5
- package/server/applications/users/constants/member.js.map +1 -1
- package/server/applications/users/constants/routes.js +1 -5
- package/server/applications/users/constants/routes.js.map +1 -1
- package/server/applications/users/constants/user.js +1 -5
- package/server/applications/users/constants/user.js.map +1 -1
- package/server/applications/users/constants/websocket.js +1 -5
- package/server/applications/users/constants/websocket.js.map +1 -1
- package/server/applications/users/decorators/permissions.decorator.js +1 -5
- package/server/applications/users/decorators/permissions.decorator.js.map +1 -1
- package/server/applications/users/decorators/roles.decorator.js +1 -5
- package/server/applications/users/decorators/roles.decorator.js.map +1 -1
- package/server/applications/users/decorators/user.decorator.js +1 -5
- package/server/applications/users/decorators/user.decorator.js.map +1 -1
- package/server/applications/users/dto/create-or-update-group.dto.js +1 -5
- package/server/applications/users/dto/create-or-update-group.dto.js.map +1 -1
- package/server/applications/users/dto/create-or-update-user.dto.js +1 -5
- package/server/applications/users/dto/create-or-update-user.dto.js.map +1 -1
- package/server/applications/users/dto/delete-user.dto.js +1 -5
- package/server/applications/users/dto/delete-user.dto.js.map +1 -1
- package/server/applications/users/dto/search-members.dto.js +1 -5
- package/server/applications/users/dto/search-members.dto.js.map +1 -1
- package/server/applications/users/dto/user-properties.dto.js +1 -5
- package/server/applications/users/dto/user-properties.dto.js.map +1 -1
- package/server/applications/users/guards/permissions.guard.js +1 -5
- package/server/applications/users/guards/permissions.guard.js.map +1 -1
- package/server/applications/users/guards/permissions.guard.spec.js +1 -5
- package/server/applications/users/guards/permissions.guard.spec.js.map +1 -1
- package/server/applications/users/guards/roles.guard.js +1 -5
- package/server/applications/users/guards/roles.guard.js.map +1 -1
- package/server/applications/users/guards/roles.guard.spec.js +1 -5
- package/server/applications/users/guards/roles.guard.spec.js.map +1 -1
- package/server/applications/users/interfaces/admin-group.interface.js +1 -5
- package/server/applications/users/interfaces/admin-group.interface.js.map +1 -1
- package/server/applications/users/interfaces/admin-user.interface.js +1 -5
- package/server/applications/users/interfaces/admin-user.interface.js.map +1 -1
- package/server/applications/users/interfaces/group-browse.interface.js +1 -5
- package/server/applications/users/interfaces/group-browse.interface.js.map +1 -1
- package/server/applications/users/interfaces/group-member.js +1 -5
- package/server/applications/users/interfaces/group-member.js.map +1 -1
- package/server/applications/users/interfaces/guest-user.interface.js +1 -5
- package/server/applications/users/interfaces/guest-user.interface.js.map +1 -1
- package/server/applications/users/interfaces/member.interface.js +1 -5
- package/server/applications/users/interfaces/member.interface.js.map +1 -1
- package/server/applications/users/interfaces/owner.interface.js +1 -5
- package/server/applications/users/interfaces/owner.interface.js.map +1 -1
- package/server/applications/users/interfaces/user-secrets.interface.js +1 -5
- package/server/applications/users/interfaces/user-secrets.interface.js.map +1 -1
- package/server/applications/users/interfaces/websocket.interface.js +1 -5
- package/server/applications/users/interfaces/websocket.interface.js.map +1 -1
- package/server/applications/users/models/user.model.js +1 -5
- package/server/applications/users/models/user.model.js.map +1 -1
- package/server/applications/users/schemas/group.interface.js +1 -5
- package/server/applications/users/schemas/group.interface.js.map +1 -1
- package/server/applications/users/schemas/groups.schema.js +1 -5
- package/server/applications/users/schemas/groups.schema.js.map +1 -1
- package/server/applications/users/schemas/user-group.interface.js +1 -5
- package/server/applications/users/schemas/user-group.interface.js.map +1 -1
- package/server/applications/users/schemas/user.interface.js +1 -5
- package/server/applications/users/schemas/user.interface.js.map +1 -1
- package/server/applications/users/schemas/users-groups.schema.js +1 -5
- package/server/applications/users/schemas/users-groups.schema.js.map +1 -1
- package/server/applications/users/schemas/users-guests.schema.js +1 -5
- package/server/applications/users/schemas/users-guests.schema.js.map +1 -1
- package/server/applications/users/schemas/users.schema.js +1 -5
- package/server/applications/users/schemas/users.schema.js.map +1 -1
- package/server/applications/users/services/admin-users-manager.service.js +67 -23
- package/server/applications/users/services/admin-users-manager.service.js.map +1 -1
- package/server/applications/users/services/admin-users-manager.service.spec.js +3 -7
- package/server/applications/users/services/admin-users-manager.service.spec.js.map +1 -1
- package/server/applications/users/services/admin-users-queries.service.js +65 -21
- package/server/applications/users/services/admin-users-queries.service.js.map +1 -1
- package/server/applications/users/services/users-manager.service.js +81 -25
- package/server/applications/users/services/users-manager.service.js.map +1 -1
- package/server/applications/users/services/users-manager.service.spec.js +14 -12
- package/server/applications/users/services/users-manager.service.spec.js.map +1 -1
- package/server/applications/users/services/users-queries.service.js +49 -17
- package/server/applications/users/services/users-queries.service.js.map +1 -1
- package/server/applications/users/users.controller.js +2 -6
- package/server/applications/users/users.controller.js.map +1 -1
- package/server/applications/users/users.controller.spec.js +5 -9
- package/server/applications/users/users.controller.spec.js.map +1 -1
- package/server/applications/users/users.e2e-spec.js +3 -7
- package/server/applications/users/users.e2e-spec.js.map +1 -1
- package/server/applications/users/users.gateway.js +29 -12
- package/server/applications/users/users.gateway.js.map +1 -1
- package/server/applications/users/users.gateway.spec.js +1 -5
- package/server/applications/users/users.gateway.spec.js.map +1 -1
- package/server/applications/users/users.module.js +1 -5
- package/server/applications/users/users.module.js.map +1 -1
- package/server/applications/users/utils/avatar.js +1 -5
- package/server/applications/users/utils/avatar.js.map +1 -1
- package/server/applications/users/utils/test.js +1 -5
- package/server/applications/users/utils/test.js.map +1 -1
- package/server/applications/webdav/constants/routes.js +1 -5
- package/server/applications/webdav/constants/routes.js.map +1 -1
- package/server/applications/webdav/constants/webdav.js +1 -5
- package/server/applications/webdav/constants/webdav.js.map +1 -1
- package/server/applications/webdav/decorators/if-header.decorator.js +1 -5
- package/server/applications/webdav/decorators/if-header.decorator.js.map +1 -1
- package/server/applications/webdav/decorators/webdav-context.decorator.js +1 -5
- package/server/applications/webdav/decorators/webdav-context.decorator.js.map +1 -1
- package/server/applications/webdav/filters/webdav.filter.js +1 -5
- package/server/applications/webdav/filters/webdav.filter.js.map +1 -1
- package/server/applications/webdav/filters/webdav.filter.spec.js +1 -5
- package/server/applications/webdav/filters/webdav.filter.spec.js.map +1 -1
- package/server/applications/webdav/guards/webdav-protocol.guard.js +54 -20
- package/server/applications/webdav/guards/webdav-protocol.guard.js.map +1 -1
- package/server/applications/webdav/guards/webdav-protocol.guard.spec.js +54 -0
- package/server/applications/webdav/guards/webdav-protocol.guard.spec.js.map +1 -1
- package/server/applications/webdav/interfaces/if-header.interface.js +1 -5
- package/server/applications/webdav/interfaces/if-header.interface.js.map +1 -1
- package/server/applications/webdav/interfaces/webdav.interface.js +1 -5
- package/server/applications/webdav/interfaces/webdav.interface.js.map +1 -1
- package/server/applications/webdav/models/webdav-file.model.js +1 -5
- package/server/applications/webdav/models/webdav-file.model.js.map +1 -1
- package/server/applications/webdav/services/webdav-methods.service.js +74 -26
- package/server/applications/webdav/services/webdav-methods.service.js.map +1 -1
- package/server/applications/webdav/services/webdav-methods.service.spec.js +15 -18
- package/server/applications/webdav/services/webdav-methods.service.spec.js.map +1 -1
- package/server/applications/webdav/services/webdav-spaces.service.js +17 -9
- package/server/applications/webdav/services/webdav-spaces.service.js.map +1 -1
- package/server/applications/webdav/services/webdav-spaces.service.spec.js +1 -5
- package/server/applications/webdav/services/webdav-spaces.service.spec.js.map +1 -1
- package/server/applications/webdav/utils/bootstrap.js +1 -5
- package/server/applications/webdav/utils/bootstrap.js.map +1 -1
- package/server/applications/webdav/utils/if-header.js +1 -5
- package/server/applications/webdav/utils/if-header.js.map +1 -1
- package/server/applications/webdav/utils/routes.js +1 -5
- package/server/applications/webdav/utils/routes.js.map +1 -1
- package/server/applications/webdav/utils/webdav.js +1 -5
- package/server/applications/webdav/utils/webdav.js.map +1 -1
- package/server/applications/webdav/utils/xml.js +1 -5
- package/server/applications/webdav/utils/xml.js.map +1 -1
- package/server/applications/webdav/webdav.controller.js +1 -5
- package/server/applications/webdav/webdav.controller.js.map +1 -1
- package/server/applications/webdav/webdav.controller.spec.js +1 -5
- package/server/applications/webdav/webdav.controller.spec.js.map +1 -1
- package/server/applications/webdav/webdav.e2e-spec.js +1 -5
- package/server/applications/webdav/webdav.e2e-spec.js.map +1 -1
- package/server/applications/webdav/webdav.module.js +1 -5
- package/server/applications/webdav/webdav.module.js.map +1 -1
- package/server/authentication/auth.config.js +23 -123
- package/server/authentication/auth.config.js.map +1 -1
- package/server/authentication/auth.controller.js +27 -21
- package/server/authentication/auth.controller.js.map +1 -1
- package/server/authentication/auth.controller.spec.js +6 -10
- package/server/authentication/auth.controller.spec.js.map +1 -1
- package/server/authentication/auth.e2e-spec.js +1 -5
- package/server/authentication/auth.e2e-spec.js.map +1 -1
- package/server/authentication/auth.module.js +17 -20
- package/server/authentication/auth.module.js.map +1 -1
- package/server/authentication/{services/auth-manager.service.js → auth.service.js} +41 -18
- package/server/authentication/auth.service.js.map +1 -0
- package/server/authentication/{services/auth-manager.service.spec.js → auth.service.spec.js} +6 -10
- package/server/authentication/auth.service.spec.js.map +1 -0
- package/server/authentication/constants/auth.js +1 -5
- package/server/authentication/constants/auth.js.map +1 -1
- package/server/authentication/constants/routes.js +41 -30
- package/server/authentication/constants/routes.js.map +1 -1
- package/server/authentication/constants/scope.js +2 -5
- package/server/authentication/constants/scope.js.map +1 -1
- package/server/authentication/decorators/auth-token-optional.decorator.js +1 -5
- package/server/authentication/decorators/auth-token-optional.decorator.js.map +1 -1
- package/server/authentication/decorators/auth-token-skip.decorator.js +1 -5
- package/server/authentication/decorators/auth-token-skip.decorator.js.map +1 -1
- package/server/authentication/dto/login-response.dto.js +1 -10
- package/server/authentication/dto/login-response.dto.js.map +1 -1
- package/server/authentication/dto/token-response.dto.js +1 -5
- package/server/authentication/dto/token-response.dto.js.map +1 -1
- package/server/authentication/guards/auth-anonymous.guard.js +1 -5
- package/server/authentication/guards/auth-anonymous.guard.js.map +1 -1
- package/server/authentication/guards/auth-anonymous.guard.spec.js +1 -5
- package/server/authentication/guards/auth-anonymous.guard.spec.js.map +1 -1
- package/server/authentication/guards/auth-anonymous.strategy.js +1 -5
- package/server/authentication/guards/auth-anonymous.strategy.js.map +1 -1
- package/server/authentication/guards/auth-basic.guard.js +1 -5
- package/server/authentication/guards/auth-basic.guard.js.map +1 -1
- package/server/authentication/guards/auth-basic.guard.spec.js +13 -14
- package/server/authentication/guards/auth-basic.guard.spec.js.map +1 -1
- package/server/authentication/guards/auth-basic.strategy.js +10 -11
- package/server/authentication/guards/auth-basic.strategy.js.map +1 -1
- package/server/authentication/guards/auth-digest.guard.js +1 -5
- package/server/authentication/guards/auth-digest.guard.js.map +1 -1
- package/server/authentication/guards/auth-digest.strategy.js +1 -5
- package/server/authentication/guards/auth-digest.strategy.js.map +1 -1
- package/server/authentication/guards/auth-local.guard.js +1 -5
- package/server/authentication/guards/auth-local.guard.js.map +1 -1
- package/server/authentication/guards/auth-local.guard.spec.js +9 -13
- package/server/authentication/guards/auth-local.guard.spec.js.map +1 -1
- package/server/authentication/guards/auth-local.strategy.js +6 -10
- package/server/authentication/guards/auth-local.strategy.js.map +1 -1
- package/server/authentication/guards/auth-token-access.guard.js +1 -5
- package/server/authentication/guards/auth-token-access.guard.js.map +1 -1
- package/server/authentication/guards/auth-token-access.guard.spec.js +3 -7
- package/server/authentication/guards/auth-token-access.guard.spec.js.map +1 -1
- package/server/authentication/guards/auth-token-access.strategy.js +3 -7
- package/server/authentication/guards/auth-token-access.strategy.js.map +1 -1
- package/server/authentication/guards/auth-token-refresh.guard.js +1 -5
- package/server/authentication/guards/auth-token-refresh.guard.js.map +1 -1
- package/server/authentication/guards/auth-token-refresh.guard.spec.js +3 -7
- package/server/authentication/guards/auth-token-refresh.guard.spec.js.map +1 -1
- package/server/authentication/guards/auth-token-refresh.strategy.js +3 -7
- package/server/authentication/guards/auth-token-refresh.strategy.js.map +1 -1
- package/server/authentication/guards/implementations/http-basic.strategy.js +1 -5
- package/server/authentication/guards/implementations/http-basic.strategy.js.map +1 -1
- package/server/authentication/guards/implementations/http-digest.strategy.js +1 -5
- package/server/authentication/guards/implementations/http-digest.strategy.js.map +1 -1
- package/server/authentication/interfaces/auth-request.interface.js +1 -5
- package/server/authentication/interfaces/auth-request.interface.js.map +1 -1
- package/server/authentication/interfaces/jwt-payload.interface.js +1 -5
- package/server/authentication/interfaces/jwt-payload.interface.js.map +1 -1
- package/server/authentication/interfaces/token.interface.js +1 -5
- package/server/authentication/interfaces/token.interface.js.map +1 -1
- package/server/authentication/providers/auth-providers.constants.js +18 -0
- package/server/authentication/providers/auth-providers.constants.js.map +1 -0
- package/server/authentication/providers/auth-providers.models.js +14 -0
- package/server/authentication/providers/auth-providers.models.js.map +1 -0
- package/server/authentication/providers/auth-providers.utils.js +42 -0
- package/server/authentication/providers/auth-providers.utils.js.map +1 -0
- package/server/authentication/providers/ldap/auth-ldap.config.js +143 -0
- package/server/authentication/providers/ldap/auth-ldap.config.js.map +1 -0
- package/server/authentication/{constants/auth-ldap.js → providers/ldap/auth-ldap.constants.js} +12 -6
- package/server/authentication/providers/ldap/auth-ldap.constants.js.map +1 -0
- package/server/authentication/providers/ldap/auth-provider-ldap.service.js +506 -0
- package/server/authentication/providers/ldap/auth-provider-ldap.service.js.map +1 -0
- package/server/authentication/providers/ldap/auth-provider-ldap.service.spec.js +674 -0
- package/server/authentication/providers/ldap/auth-provider-ldap.service.spec.js.map +1 -0
- package/server/authentication/{services/auth-methods/auth-method-database.service.js → providers/mysql/auth-provider-mysql.service.js} +16 -14
- package/server/authentication/providers/mysql/auth-provider-mysql.service.js.map +1 -0
- package/server/authentication/{services/auth-methods/auth-method-database.service.spec.js → providers/mysql/auth-provider-mysql.service.spec.js} +15 -19
- package/server/authentication/providers/mysql/auth-provider-mysql.service.spec.js.map +1 -0
- package/server/authentication/providers/oidc/auth-oidc-desktop.constants.js +30 -0
- package/server/authentication/providers/oidc/auth-oidc-desktop.constants.js.map +1 -0
- package/server/authentication/providers/oidc/auth-oidc.config.js +149 -0
- package/server/authentication/providers/oidc/auth-oidc.config.js.map +1 -0
- package/server/authentication/providers/oidc/auth-oidc.constants.js +39 -0
- package/server/authentication/providers/oidc/auth-oidc.constants.js.map +1 -0
- package/server/authentication/providers/oidc/auth-oidc.controller.js +83 -0
- package/server/authentication/providers/oidc/auth-oidc.controller.js.map +1 -0
- package/server/authentication/providers/oidc/auth-oidc.interfaces.js +6 -0
- package/server/authentication/providers/oidc/auth-oidc.interfaces.js.map +1 -0
- package/server/authentication/providers/oidc/auth-provider-oidc.module.js +36 -0
- package/server/authentication/providers/oidc/auth-provider-oidc.module.js.map +1 -0
- package/server/authentication/providers/oidc/auth-provider-oidc.service.js +373 -0
- package/server/authentication/providers/oidc/auth-provider-oidc.service.js.map +1 -0
- package/server/authentication/providers/oidc/auth-provider-oidc.service.spec.js +270 -0
- package/server/authentication/providers/oidc/auth-provider-oidc.service.spec.js.map +1 -0
- package/server/authentication/{services/auth-methods/auth-method-two-fa.service.js → providers/two-fa/auth-provider-two-fa.service.js} +56 -38
- package/server/authentication/providers/two-fa/auth-provider-two-fa.service.js.map +1 -0
- package/server/authentication/{services/auth-methods/auth-method-two-fa.service.spec.js → providers/two-fa/auth-provider-two-fa.service.spec.js} +6 -10
- package/server/authentication/providers/two-fa/auth-provider-two-fa.service.spec.js.map +1 -0
- package/server/authentication/{guards → providers/two-fa}/auth-two-fa-guard.js +10 -14
- package/server/authentication/providers/two-fa/auth-two-fa-guard.js.map +1 -0
- package/server/authentication/providers/two-fa/auth-two-fa.config.js +57 -0
- package/server/authentication/providers/two-fa/auth-two-fa.config.js.map +1 -0
- package/server/authentication/{dto/two-fa-verify.dto.js → providers/two-fa/auth-two-fa.dtos.js} +8 -6
- package/server/authentication/providers/two-fa/auth-two-fa.dtos.js.map +1 -0
- package/server/authentication/providers/two-fa/auth-two-fa.interfaces.js +6 -0
- package/server/authentication/providers/two-fa/auth-two-fa.interfaces.js.map +1 -0
- package/server/authentication/utils/crypt-secret.js +1 -5
- package/server/authentication/utils/crypt-secret.js.map +1 -1
- package/server/common/constants.js +1 -5
- package/server/common/constants.js.map +1 -1
- package/server/common/decorators.js +1 -5
- package/server/common/decorators.js.map +1 -1
- package/server/common/functions.js +25 -9
- package/server/common/functions.js.map +1 -1
- package/server/common/i18n.js +1 -5
- package/server/common/i18n.js.map +1 -1
- package/server/common/image.js +1 -5
- package/server/common/image.js.map +1 -1
- package/server/common/interfaces.js +1 -5
- package/server/common/interfaces.js.map +1 -1
- package/server/common/qrcode.js +1 -5
- package/server/common/qrcode.js.map +1 -1
- package/server/common/shared.js +6 -6
- package/server/common/shared.js.map +1 -1
- package/server/configuration/config.constants.js +1 -5
- package/server/configuration/config.constants.js.map +1 -1
- package/server/configuration/config.environment.js +2 -6
- package/server/configuration/config.environment.js.map +1 -1
- package/server/configuration/config.interfaces.js +1 -5
- package/server/configuration/config.interfaces.js.map +1 -1
- package/server/configuration/config.loader.js +1 -5
- package/server/configuration/config.loader.js.map +1 -1
- package/server/configuration/config.logger.js +4 -8
- package/server/configuration/config.logger.js.map +1 -1
- package/server/configuration/config.validation.js +7 -5
- package/server/configuration/config.validation.js.map +1 -1
- package/server/infrastructure/cache/adapters/mysql-cache.adapter.js +9 -7
- package/server/infrastructure/cache/adapters/mysql-cache.adapter.js.map +1 -1
- package/server/infrastructure/cache/adapters/redis-cache.adapter.js +1 -5
- package/server/infrastructure/cache/adapters/redis-cache.adapter.js.map +1 -1
- package/server/infrastructure/cache/cache.config.js +1 -5
- package/server/infrastructure/cache/cache.config.js.map +1 -1
- package/server/infrastructure/cache/cache.decorator.js +9 -7
- package/server/infrastructure/cache/cache.decorator.js.map +1 -1
- package/server/infrastructure/cache/cache.e2e-spec.js +1 -5
- package/server/infrastructure/cache/cache.e2e-spec.js.map +1 -1
- package/server/infrastructure/cache/cache.module.js +1 -5
- package/server/infrastructure/cache/cache.module.js.map +1 -1
- package/server/infrastructure/cache/schemas/mysql-cache.interface.js +1 -5
- package/server/infrastructure/cache/schemas/mysql-cache.interface.js.map +1 -1
- package/server/infrastructure/cache/schemas/mysql-cache.schema.js +1 -5
- package/server/infrastructure/cache/schemas/mysql-cache.schema.js.map +1 -1
- package/server/infrastructure/cache/services/cache.service.js +1 -5
- package/server/infrastructure/cache/services/cache.service.js.map +1 -1
- package/server/infrastructure/context/context.module.js +1 -5
- package/server/infrastructure/context/context.module.js.map +1 -1
- package/server/infrastructure/context/interceptors/context.interceptor.js +1 -5
- package/server/infrastructure/context/interceptors/context.interceptor.js.map +1 -1
- package/server/infrastructure/context/interceptors/context.interceptor.spec.js +2 -6
- package/server/infrastructure/context/interceptors/context.interceptor.spec.js.map +1 -1
- package/server/infrastructure/context/interfaces/context-store.interface.js +1 -5
- package/server/infrastructure/context/interfaces/context-store.interface.js.map +1 -1
- package/server/infrastructure/context/services/context-manager.service.js +1 -5
- package/server/infrastructure/context/services/context-manager.service.js.map +1 -1
- package/server/infrastructure/context/services/context-manager.service.spec.js +1 -5
- package/server/infrastructure/context/services/context-manager.service.spec.js.map +1 -1
- package/server/infrastructure/database/columns.js +1 -5
- package/server/infrastructure/database/columns.js.map +1 -1
- package/server/infrastructure/database/configuration.js +1 -5
- package/server/infrastructure/database/configuration.js.map +1 -1
- package/server/infrastructure/database/constants.js +2 -6
- package/server/infrastructure/database/constants.js.map +1 -1
- package/server/infrastructure/database/database.config.js +1 -5
- package/server/infrastructure/database/database.config.js.map +1 -1
- package/server/infrastructure/database/database.logger.js +1 -5
- package/server/infrastructure/database/database.logger.js.map +1 -1
- package/server/infrastructure/database/database.module.js +1 -5
- package/server/infrastructure/database/database.module.js.map +1 -1
- package/server/infrastructure/database/interfaces/database.interface.js +1 -5
- package/server/infrastructure/database/interfaces/database.interface.js.map +1 -1
- package/server/infrastructure/database/schema.js +1 -5
- package/server/infrastructure/database/schema.js.map +1 -1
- package/server/infrastructure/database/scripts/create-user.js +1 -5
- package/server/infrastructure/database/scripts/create-user.js.map +1 -1
- package/server/infrastructure/database/scripts/db.js +1 -5
- package/server/infrastructure/database/scripts/db.js.map +1 -1
- package/server/infrastructure/database/scripts/seed/main.js +1 -5
- package/server/infrastructure/database/scripts/seed/main.js.map +1 -1
- package/server/infrastructure/database/scripts/seed/usersgroups.js +1 -5
- package/server/infrastructure/database/scripts/seed/usersgroups.js.map +1 -1
- package/server/infrastructure/database/utils.js +1 -5
- package/server/infrastructure/database/utils.js.map +1 -1
- package/server/infrastructure/mailer/interfaces/mail.interface.js +1 -5
- package/server/infrastructure/mailer/interfaces/mail.interface.js.map +1 -1
- package/server/infrastructure/mailer/mailer.config.js +1 -5
- package/server/infrastructure/mailer/mailer.config.js.map +1 -1
- package/server/infrastructure/mailer/mailer.module.js +1 -5
- package/server/infrastructure/mailer/mailer.module.js.map +1 -1
- package/server/infrastructure/mailer/mailer.service.js +1 -5
- package/server/infrastructure/mailer/mailer.service.js.map +1 -1
- package/server/infrastructure/mailer/mailer.service.spec.js +2 -6
- package/server/infrastructure/mailer/mailer.service.spec.js.map +1 -1
- package/server/infrastructure/scheduler/scheduler.constants.js +1 -5
- package/server/infrastructure/scheduler/scheduler.constants.js.map +1 -1
- package/server/infrastructure/scheduler/scheduler.module.js +1 -5
- package/server/infrastructure/scheduler/scheduler.module.js.map +1 -1
- package/server/infrastructure/websocket/adapters/cluster.adapter.js +1 -5
- package/server/infrastructure/websocket/adapters/cluster.adapter.js.map +1 -1
- package/server/infrastructure/websocket/adapters/redis.adapter.js +1 -5
- package/server/infrastructure/websocket/adapters/redis.adapter.js.map +1 -1
- package/server/infrastructure/websocket/adapters/web-socket.adapter.js +1 -5
- package/server/infrastructure/websocket/adapters/web-socket.adapter.js.map +1 -1
- package/server/infrastructure/websocket/decorators/web-socket-user.decorator.js +1 -5
- package/server/infrastructure/websocket/decorators/web-socket-user.decorator.js.map +1 -1
- package/server/infrastructure/websocket/interfaces/auth-socket-io.interface.js +1 -5
- package/server/infrastructure/websocket/interfaces/auth-socket-io.interface.js.map +1 -1
- package/server/infrastructure/websocket/utils.js +1 -5
- package/server/infrastructure/websocket/utils.js.map +1 -1
- package/server/infrastructure/websocket/web-socket.config.js +1 -5
- package/server/infrastructure/websocket/web-socket.config.js.map +1 -1
- package/server/main.js +5 -0
- package/server/main.js.map +1 -1
- package/static/assets/pdfjs/build/pdf.mjs +724 -745
- package/static/assets/pdfjs/build/pdf.mjs.map +1 -1
- package/static/assets/pdfjs/build/pdf.sandbox.mjs +2 -2
- package/static/assets/pdfjs/build/pdf.worker.mjs +706 -193
- package/static/assets/pdfjs/build/pdf.worker.mjs.map +1 -1
- package/static/assets/pdfjs/version +1 -1
- package/static/assets/pdfjs/web/locale/dsb/viewer.ftl +5 -5
- package/static/assets/pdfjs/web/locale/en-US/viewer.ftl +1 -0
- package/static/assets/pdfjs/web/locale/fur/viewer.ftl +5 -0
- package/static/assets/pdfjs/web/locale/kk/viewer.ftl +28 -0
- package/static/assets/pdfjs/web/locale/ml/viewer.ftl +4 -0
- package/static/assets/pdfjs/web/locale/ru/viewer.ftl +3 -3
- package/static/assets/pdfjs/web/viewer.css +207 -65
- package/static/assets/pdfjs/web/viewer.html +11 -10
- package/static/assets/pdfjs/web/viewer.mjs +850 -270
- package/static/assets/pdfjs/web/viewer.mjs.map +1 -1
- package/static/assets/pdfjs/web/wasm/LICENSE_JBIG2 +196 -0
- package/static/assets/pdfjs/web/wasm/LICENSE_PDFJS_JBIG2 +13 -0
- package/static/assets/pdfjs/web/wasm/jbig2.wasm +0 -0
- package/static/chunk-22TZP6HW.js +1 -0
- package/static/{chunk-U5E5H2DD.js → chunk-27ATUHBH.js} +1 -1
- package/static/{chunk-HZAB6F4Q.js → chunk-2CKLZ3FM.js} +1 -1
- package/static/{chunk-XZHWESIY.js → chunk-2QZPX7LO.js} +1 -1
- package/static/{chunk-UOK3LKSX.js → chunk-2R6IBBPZ.js} +1 -1
- package/static/{chunk-DVCN3P7Q.js → chunk-4FIGEBNL.js} +1 -1
- package/static/chunk-4P3JABAP.js +13 -0
- package/static/chunk-5CZOSAMZ.js +1 -0
- package/static/{chunk-RBTLSPYJ.js → chunk-677WUBCT.js} +1 -1
- package/static/{chunk-KEZNIIFH.js → chunk-74CAHBFM.js} +1 -1
- package/static/{chunk-WRK2FTKU.js → chunk-7GWW6MJO.js} +1 -1
- package/static/{chunk-EKWB5W72.js → chunk-7WOPGQXB.js} +1 -1
- package/static/{chunk-IMFO2MI7.js → chunk-A4UGPSWX.js} +1 -1
- package/static/{chunk-KDUAB76O.js → chunk-AHO37FKW.js} +1 -1
- package/static/chunk-AQCXMKP3.js +1 -0
- package/static/chunk-B6PDYCRO.js +3 -0
- package/static/{chunk-PPJCVBJH.js → chunk-CU76ATCF.js} +1 -1
- package/static/{chunk-ARS47O5X.js → chunk-CWYHOPOP.js} +1 -1
- package/static/{chunk-CSVPAZHK.js → chunk-E5WI5725.js} +1 -1
- package/static/{chunk-XX3JPJUM.js → chunk-FC5HTKVM.js} +1 -1
- package/static/{chunk-QGHNJVJ6.js → chunk-FOSM7EYI.js} +1 -1
- package/static/{chunk-JAJ7VXMB.js → chunk-GAZO25PI.js} +1 -1
- package/static/{chunk-IHS5LSJJ.js → chunk-GB7ABR5N.js} +1 -1
- package/static/{chunk-27V66YJV.js → chunk-GEHFKZQ5.js} +2 -2
- package/static/{chunk-3QTROEHV.js → chunk-GQFMWVFD.js} +1 -1
- package/static/{chunk-FWQJ4ZCD.js → chunk-GVNTC564.js} +1 -1
- package/static/{chunk-4NIYCYRS.js → chunk-HGL3NYP2.js} +2 -2
- package/static/chunk-HLIWPWRA.js +1 -0
- package/static/{chunk-3VRUIWQG.js → chunk-HNYB3M4S.js} +1 -1
- package/static/{chunk-7HJFIMNF.js → chunk-HUXAUQMN.js} +1 -1
- package/static/chunk-I2XA6PPK.js +1 -0
- package/static/{chunk-RJULB733.js → chunk-ISV3BO6R.js} +1 -1
- package/static/{chunk-R4VYKZVJ.js → chunk-IWWBV6EM.js} +1 -1
- package/static/{chunk-TTWMFWEC.js → chunk-JV3AGU5B.js} +1 -1
- package/static/{chunk-X7NHX5C7.js → chunk-K25E7YGG.js} +1 -1
- package/static/chunk-K46PUTZB.js +1 -0
- package/static/{chunk-D2MLAO5N.js → chunk-KERFLJ56.js} +1 -7
- package/static/{chunk-LZUHREOF.js → chunk-KJD3KFF3.js} +1 -1
- package/static/chunk-KPKSI23S.js +1 -0
- package/static/{chunk-CMNMPG6Z.js → chunk-KZS7CTNR.js} +1 -1
- package/static/{chunk-RNVPQQKT.js → chunk-L5IHUVXL.js} +1 -1
- package/static/{chunk-2GXOVGTD.js → chunk-L7RRX2M3.js} +1 -1
- package/static/{chunk-WFMEUST4.js → chunk-LGWJ2WKU.js} +1 -1
- package/static/{chunk-ZOMRIN3G.js → chunk-MLC7JK2H.js} +2 -2
- package/static/{chunk-76REYAEA.js → chunk-MOHNYW2A.js} +1 -1
- package/static/{chunk-ZHUBWKA2.js → chunk-MTRXBVWZ.js} +1 -1
- package/static/{chunk-QJ22N76V.js → chunk-MZQK6LNV.js} +1 -1
- package/static/{chunk-SDJNZULP.js → chunk-NCDUOVMW.js} +1 -1
- package/static/chunk-NGUAJIGI.js +1 -0
- package/static/chunk-NIPP6JDI.js +1 -0
- package/static/{chunk-VD5JHSDS.js → chunk-NMTBMHUL.js} +1 -1
- package/static/chunk-O4XXMZFX.js +4 -0
- package/static/{chunk-WZPF4LS2.js → chunk-OANZITPM.js} +1 -1
- package/static/{chunk-JNTNMIUH.js → chunk-OGE4SAHU.js} +1 -1
- package/static/{chunk-S6H2ELRY.js → chunk-OI3ME22C.js} +1 -1
- package/static/{chunk-7KAYOR3A.js → chunk-Q3EGCMF5.js} +1 -1
- package/static/chunk-QF2NSHZA.js +1 -0
- package/static/{chunk-3ZBAQTHJ.js → chunk-QIGUDEZF.js} +1 -1
- package/static/{chunk-76M3BMK6.js → chunk-QJVC3SRJ.js} +11 -11
- package/static/{chunk-VBTZDHZ3.js → chunk-QKN6LAAA.js} +1 -1
- package/static/{chunk-JRXG43AA.js → chunk-QRFESU5O.js} +2 -2
- package/static/chunk-QVRVFYJH.js +1 -0
- package/static/{chunk-BCN4T5DO.js → chunk-RFJIPIOK.js} +2 -2
- package/static/{chunk-2RWLNKZH.js → chunk-RLL634K4.js} +1 -1
- package/static/{chunk-D5FQ72R4.js → chunk-RS2OFKWP.js} +1 -1
- package/static/{chunk-CN5YVRFT.js → chunk-RWAAC3A4.js} +1 -1
- package/static/{chunk-LWSCODLD.js → chunk-RWCNTCU5.js} +1 -1
- package/static/{chunk-FTFEQDWH.js → chunk-S5Y64DDS.js} +1 -1
- package/static/{chunk-J7474P3L.js → chunk-SLG5KDU6.js} +1 -1
- package/static/chunk-TJ4CVFEL.js +1 -0
- package/static/{chunk-KAUCN24H.js → chunk-TWCGKSYE.js} +1 -1
- package/static/{chunk-PDG7DOEF.js → chunk-UMDRE4S7.js} +1 -1
- package/static/chunk-VRIOLRYR.js +5 -0
- package/static/chunk-VS4O2XDP.js +1 -0
- package/static/{chunk-ZEJLIGAY.js → chunk-VSBFNFOM.js} +1 -1
- package/static/{chunk-XSURUW7C.js → chunk-WN4WXCVK.js} +1 -1
- package/static/{chunk-S44QIK3G.js → chunk-WX7RXW7K.js} +1 -1
- package/static/{chunk-3ZLBVUCX.js → chunk-XC4POKR3.js} +2 -2
- package/static/{chunk-TNCKNU6I.js → chunk-Y4AUYQTG.js} +1 -1
- package/static/{chunk-3MVPXC3U.js → chunk-Y67J3BOL.js} +1 -1
- package/static/{chunk-QTPIEEZW.js → chunk-YMIXHRJQ.js} +1 -7
- package/static/{chunk-VZFZUI6D.js → chunk-ZUNKFAKP.js} +1 -1
- package/static/index.html +3 -3
- package/static/main-QN4UCOC5.js +5 -0
- package/static/{styles-XLLEY5Y3.css → styles-46GLIE7Y.css} +1 -1
- package/server/authentication/constants/auth-ldap.js.map +0 -1
- package/server/authentication/dto/two-fa-verify.dto.js.map +0 -1
- package/server/authentication/guards/auth-two-fa-guard.js.map +0 -1
- package/server/authentication/interfaces/two-fa-setup.interface.js +0 -10
- package/server/authentication/interfaces/two-fa-setup.interface.js.map +0 -1
- package/server/authentication/models/auth-method.js +0 -18
- package/server/authentication/models/auth-method.js.map +0 -1
- package/server/authentication/services/auth-manager.service.js.map +0 -1
- package/server/authentication/services/auth-manager.service.spec.js.map +0 -1
- package/server/authentication/services/auth-methods/auth-method-database.service.js.map +0 -1
- package/server/authentication/services/auth-methods/auth-method-database.service.spec.js.map +0 -1
- package/server/authentication/services/auth-methods/auth-method-ldap.service.js +0 -326
- package/server/authentication/services/auth-methods/auth-method-ldap.service.js.map +0 -1
- package/server/authentication/services/auth-methods/auth-method-ldap.service.spec.js +0 -534
- package/server/authentication/services/auth-methods/auth-method-ldap.service.spec.js.map +0 -1
- package/server/authentication/services/auth-methods/auth-method-two-fa.service.js.map +0 -1
- package/server/authentication/services/auth-methods/auth-method-two-fa.service.spec.js.map +0 -1
- package/static/chunk-2YQ4SX3A.js +0 -13
- package/static/chunk-46TJLPJY.js +0 -1
- package/static/chunk-6OEOADR6.js +0 -1
- package/static/chunk-AALPWGPB.js +0 -3
- package/static/chunk-CVXLHSO5.js +0 -1
- package/static/chunk-G7RZN7HN.js +0 -1
- package/static/chunk-LTJNLOX2.js +0 -1
- package/static/chunk-NIKNG2FX.js +0 -1
- package/static/chunk-NNZWSNAW.js +0 -1
- package/static/chunk-NWKBB7J4.js +0 -1
- package/static/chunk-PVYVY3GD.js +0 -1
- package/static/chunk-Q5X5TPAG.js +0 -1
- package/static/chunk-R4VMWCM5.js +0 -1
- package/static/chunk-SNOOCDJD.js +0 -1
- package/static/chunk-SPQH3ATC.js +0 -5
- package/static/chunk-ZCSHU3D7.js +0 -1
- package/static/chunk-ZU5MQTFN.js +0 -4
- package/static/main-5O3KLGIR.js +0 -11
|
@@ -0,0 +1,506 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "AuthProviderLDAP", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return AuthProviderLDAP;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _common = require("@nestjs/common");
|
|
12
|
+
const _ldapts = require("ldapts");
|
|
13
|
+
const _appconstants = require("../../../app.constants");
|
|
14
|
+
const _user = require("../../../applications/users/constants/user");
|
|
15
|
+
const _adminusersmanagerservice = require("../../../applications/users/services/admin-users-manager.service");
|
|
16
|
+
const _usersmanagerservice = require("../../../applications/users/services/users-manager.service");
|
|
17
|
+
const _functions = require("../../../common/functions");
|
|
18
|
+
const _configenvironment = require("../../../configuration/config.environment");
|
|
19
|
+
const _authldapconstants = require("./auth-ldap.constants");
|
|
20
|
+
function _ts_decorate(decorators, target, key, desc) {
|
|
21
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
22
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
23
|
+
else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
24
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
25
|
+
}
|
|
26
|
+
function _ts_metadata(k, v) {
|
|
27
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
28
|
+
}
|
|
29
|
+
let AuthProviderLDAP = class AuthProviderLDAP {
|
|
30
|
+
async validateUser(loginOrEmail, password, ip, scope) {
|
|
31
|
+
// Authenticate user via LDAP and sync local user state.
|
|
32
|
+
// Find user from his login or email
|
|
33
|
+
let user = await this.usersManager.findUser(this.dbLogin(loginOrEmail), false);
|
|
34
|
+
if (user) {
|
|
35
|
+
if (user.isGuest || scope) {
|
|
36
|
+
// Allow local password authentication for guest users and application scopes (app passwords)
|
|
37
|
+
return this.usersManager.logUser(user, password, ip, scope);
|
|
38
|
+
}
|
|
39
|
+
if (!user.isActive) {
|
|
40
|
+
this.logger.error({
|
|
41
|
+
tag: this.validateUser.name,
|
|
42
|
+
msg: `user *${user.login}* is locked`
|
|
43
|
+
});
|
|
44
|
+
throw new _common.HttpException('Account locked', _common.HttpStatus.FORBIDDEN);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
let ldapErrorMessage;
|
|
48
|
+
let entry = false;
|
|
49
|
+
try {
|
|
50
|
+
// If a user was found, use the stored login. This allows logging in with an email.
|
|
51
|
+
entry = await this.checkAuth(user?.login || loginOrEmail, password);
|
|
52
|
+
} catch (e) {
|
|
53
|
+
ldapErrorMessage = e.message;
|
|
54
|
+
}
|
|
55
|
+
// LDAP auth failed or exception raised
|
|
56
|
+
if (entry === false) {
|
|
57
|
+
// If LDAP is unavailable (connectivity/service error), allow local password fallback.
|
|
58
|
+
// Allow local password authentication for:
|
|
59
|
+
// - admin users (break-glass access)
|
|
60
|
+
// - regular users when password authentication fallback is enabled
|
|
61
|
+
if (user && (user.isAdmin || Boolean(ldapErrorMessage) && this.ldapConfig.options.enablePasswordAuthFallback)) {
|
|
62
|
+
const localUser = await this.usersManager.logUser(user, password, ip);
|
|
63
|
+
if (localUser) return localUser;
|
|
64
|
+
}
|
|
65
|
+
if (ldapErrorMessage) {
|
|
66
|
+
throw new _common.HttpException(ldapErrorMessage, _common.HttpStatus.SERVICE_UNAVAILABLE);
|
|
67
|
+
}
|
|
68
|
+
return null;
|
|
69
|
+
}
|
|
70
|
+
if (!entry[this.ldapConfig.attributes.login] || !entry[this.ldapConfig.attributes.email]) {
|
|
71
|
+
this.logger.error({
|
|
72
|
+
tag: this.validateUser.name,
|
|
73
|
+
msg: `required ldap fields are missing :
|
|
74
|
+
[${this.ldapConfig.attributes.login}, ${this.ldapConfig.attributes.email}] =>
|
|
75
|
+
(${JSON.stringify(entry)})`
|
|
76
|
+
});
|
|
77
|
+
return null;
|
|
78
|
+
}
|
|
79
|
+
if (!user && !this.ldapConfig.options.autoCreateUser) {
|
|
80
|
+
this.logger.warn({
|
|
81
|
+
tag: this.validateUser.name,
|
|
82
|
+
msg: `User not found and autoCreateUser is disabled`
|
|
83
|
+
});
|
|
84
|
+
throw new _common.HttpException('User not found', _common.HttpStatus.UNAUTHORIZED);
|
|
85
|
+
}
|
|
86
|
+
const identity = this.createIdentity(entry, password);
|
|
87
|
+
user = await this.updateOrCreateUser(identity, user);
|
|
88
|
+
this.usersManager.updateAccesses(user, ip, true).catch((e)=>this.logger.error({
|
|
89
|
+
tag: this.validateUser.name,
|
|
90
|
+
msg: `${e}`
|
|
91
|
+
}));
|
|
92
|
+
return user;
|
|
93
|
+
}
|
|
94
|
+
async checkAuth(login, password) {
|
|
95
|
+
// Bind and fetch LDAP entry, optionally via service account.
|
|
96
|
+
const ldapLogin = this.buildLdapLogin(login);
|
|
97
|
+
// AD: bind directly with the user input (UPN or DOMAIN\user)
|
|
98
|
+
// Generic LDAP: build DN from login attribute + baseDN
|
|
99
|
+
const bindUserDN = this.buildBindUserDN(ldapLogin);
|
|
100
|
+
let error;
|
|
101
|
+
for (const s of this.ldapConfig.servers){
|
|
102
|
+
const client = new _ldapts.Client({
|
|
103
|
+
...this.clientOptions,
|
|
104
|
+
url: s
|
|
105
|
+
});
|
|
106
|
+
let attemptedBindDN = bindUserDN;
|
|
107
|
+
try {
|
|
108
|
+
if (this.hasServiceBind) {
|
|
109
|
+
attemptedBindDN = this.ldapConfig.serviceBindDN;
|
|
110
|
+
await client.bind(this.ldapConfig.serviceBindDN, this.ldapConfig.serviceBindPassword);
|
|
111
|
+
const result = await this.findUserEntry(ldapLogin, client);
|
|
112
|
+
if (!result || !result.userDn) {
|
|
113
|
+
this.logger.warn({
|
|
114
|
+
tag: this.checkAuth.name,
|
|
115
|
+
msg: `no LDAP entry found for : ${login}`
|
|
116
|
+
});
|
|
117
|
+
return false;
|
|
118
|
+
}
|
|
119
|
+
const { entry, userDn } = result;
|
|
120
|
+
attemptedBindDN = userDn;
|
|
121
|
+
await client.bind(userDn, password);
|
|
122
|
+
return entry;
|
|
123
|
+
}
|
|
124
|
+
attemptedBindDN = bindUserDN;
|
|
125
|
+
await client.bind(bindUserDN, password);
|
|
126
|
+
return await this.checkAccess(ldapLogin, client, bindUserDN);
|
|
127
|
+
} catch (e) {
|
|
128
|
+
error = this.handleBindError(e, attemptedBindDN);
|
|
129
|
+
if (error instanceof _ldapts.InvalidCredentialsError) {
|
|
130
|
+
return false;
|
|
131
|
+
}
|
|
132
|
+
} finally{
|
|
133
|
+
await client.unbind();
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
if (error) {
|
|
137
|
+
this.logger.error({
|
|
138
|
+
tag: this.checkAuth.name,
|
|
139
|
+
msg: `${error}`
|
|
140
|
+
});
|
|
141
|
+
if (_appconstants.CONNECT_ERROR_CODE.has(error.code)) {
|
|
142
|
+
throw new Error('Authentication service error');
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
return false;
|
|
146
|
+
}
|
|
147
|
+
async checkAccess(login, client, bindUserDN) {
|
|
148
|
+
// Search for the LDAP entry and normalize attributes.
|
|
149
|
+
const result = await this.findUserEntry(login, client, bindUserDN);
|
|
150
|
+
return result ? result.entry : false;
|
|
151
|
+
}
|
|
152
|
+
async findUserEntry(login, client, bindUserDN) {
|
|
153
|
+
const searchFilter = this.buildUserFilter(login, this.ldapConfig.filter);
|
|
154
|
+
try {
|
|
155
|
+
const { searchEntries } = await client.search(this.ldapConfig.baseDN, {
|
|
156
|
+
scope: _authldapconstants.LDAP_SEARCH_ATTR.SUB,
|
|
157
|
+
filter: searchFilter,
|
|
158
|
+
attributes: _authldapconstants.ALL_LDAP_ATTRIBUTES
|
|
159
|
+
});
|
|
160
|
+
if (searchEntries.length === 0) {
|
|
161
|
+
this.logger.debug({
|
|
162
|
+
tag: this.findUserEntry.name,
|
|
163
|
+
msg: `search filter : ${searchFilter}`
|
|
164
|
+
});
|
|
165
|
+
this.logger.warn({
|
|
166
|
+
tag: this.findUserEntry.name,
|
|
167
|
+
msg: `no LDAP entry found for : ${login}`
|
|
168
|
+
});
|
|
169
|
+
return false;
|
|
170
|
+
}
|
|
171
|
+
if (searchEntries.length > 1) {
|
|
172
|
+
this.logger.warn({
|
|
173
|
+
tag: this.findUserEntry.name,
|
|
174
|
+
msg: `multiple LDAP entries found for : ${login}, using first one`
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
const rawEntry = searchEntries[0];
|
|
178
|
+
const entry = this.convertToLdapUserEntry(rawEntry);
|
|
179
|
+
const userDn = rawEntry.dn || bindUserDN;
|
|
180
|
+
if (this.ldapConfig.options.adminGroup && !this.hasAdminGroup(entry, this.ldapConfig.options.adminGroup)) {
|
|
181
|
+
if (userDn && await this.isMemberOfGroupOfNames(this.ldapConfig.options.adminGroup, userDn, client)) {
|
|
182
|
+
const existing = Array.isArray(entry[_authldapconstants.LDAP_COMMON_ATTR.MEMBER_OF]) ? entry[_authldapconstants.LDAP_COMMON_ATTR.MEMBER_OF] : [];
|
|
183
|
+
entry[_authldapconstants.LDAP_COMMON_ATTR.MEMBER_OF] = [
|
|
184
|
+
...new Set([
|
|
185
|
+
...existing,
|
|
186
|
+
this.ldapConfig.options.adminGroup
|
|
187
|
+
])
|
|
188
|
+
];
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
// Return the first matching entry.
|
|
192
|
+
return {
|
|
193
|
+
entry,
|
|
194
|
+
userDn
|
|
195
|
+
};
|
|
196
|
+
} catch (e) {
|
|
197
|
+
this.logger.debug({
|
|
198
|
+
tag: this.findUserEntry.name,
|
|
199
|
+
msg: `search filter : ${searchFilter}`
|
|
200
|
+
});
|
|
201
|
+
this.logger.error({
|
|
202
|
+
tag: this.findUserEntry.name,
|
|
203
|
+
msg: `${login} : ${e}`
|
|
204
|
+
});
|
|
205
|
+
return false;
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
async updateOrCreateUser(identity, user) {
|
|
209
|
+
// Create or update the local user record from LDAP identity.
|
|
210
|
+
if (user === null) {
|
|
211
|
+
// Create
|
|
212
|
+
identity.permissions = this.ldapConfig.options.autoCreatePermissions.join(',');
|
|
213
|
+
const createdUser = await this.adminUsersManager.createUserOrGuest(identity, identity.role);
|
|
214
|
+
const freshUser = await this.usersManager.fromUserId(createdUser.id);
|
|
215
|
+
if (!freshUser) {
|
|
216
|
+
this.logger.error({
|
|
217
|
+
tag: this.updateOrCreateUser.name,
|
|
218
|
+
msg: `user was not found : ${createdUser.login} (${createdUser.id})`
|
|
219
|
+
});
|
|
220
|
+
throw new _common.HttpException('User not found', _common.HttpStatus.NOT_FOUND);
|
|
221
|
+
}
|
|
222
|
+
return freshUser;
|
|
223
|
+
}
|
|
224
|
+
if (identity.login !== user.login) {
|
|
225
|
+
this.logger.error({
|
|
226
|
+
tag: this.updateOrCreateUser.name,
|
|
227
|
+
msg: `user login mismatch : ${identity.login} !== ${user.login}`
|
|
228
|
+
});
|
|
229
|
+
throw new _common.HttpException('Account matching error', _common.HttpStatus.FORBIDDEN);
|
|
230
|
+
}
|
|
231
|
+
// Update: check if user information has changed
|
|
232
|
+
const identityHasChanged = Object.fromEntries((await Promise.all(Object.keys(identity).map(async (key)=>{
|
|
233
|
+
if (key === 'password') {
|
|
234
|
+
const isSame = await (0, _functions.comparePassword)(identity[key], user.password);
|
|
235
|
+
return isSame ? null : [
|
|
236
|
+
key,
|
|
237
|
+
identity[key]
|
|
238
|
+
];
|
|
239
|
+
}
|
|
240
|
+
return identity[key] !== user[key] ? [
|
|
241
|
+
key,
|
|
242
|
+
identity[key]
|
|
243
|
+
] : null;
|
|
244
|
+
}))).filter(Boolean));
|
|
245
|
+
if (Object.keys(identityHasChanged).length > 0) {
|
|
246
|
+
try {
|
|
247
|
+
if (identityHasChanged?.role != null) {
|
|
248
|
+
if (user.role === _user.USER_ROLE.ADMINISTRATOR && !this.ldapConfig.options.adminGroup) {
|
|
249
|
+
// Prevent removing the admin role when adminGroup was removed or not defined
|
|
250
|
+
delete identityHasChanged.role;
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
// Update user properties
|
|
254
|
+
await this.adminUsersManager.updateUserOrGuest(user.id, identityHasChanged);
|
|
255
|
+
// Extra stuff
|
|
256
|
+
if (identityHasChanged?.password) {
|
|
257
|
+
delete identityHasChanged.password;
|
|
258
|
+
}
|
|
259
|
+
Object.assign(user, identityHasChanged);
|
|
260
|
+
if ('lastName' in identityHasChanged || 'firstName' in identityHasChanged) {
|
|
261
|
+
// Force fullName update in the current user model
|
|
262
|
+
user.setFullName(true);
|
|
263
|
+
}
|
|
264
|
+
} catch (e) {
|
|
265
|
+
this.logger.warn({
|
|
266
|
+
tag: this.updateOrCreateUser.name,
|
|
267
|
+
msg: `unable to update user *${user.login}* : ${e}`
|
|
268
|
+
});
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
return user;
|
|
272
|
+
}
|
|
273
|
+
convertToLdapUserEntry(entry) {
|
|
274
|
+
// Normalize memberOf and other LDAP attributes for downstream usage.
|
|
275
|
+
for (const attr of _authldapconstants.ALL_LDAP_ATTRIBUTES){
|
|
276
|
+
if (attr === _authldapconstants.LDAP_COMMON_ATTR.MEMBER_OF && entry[attr]) {
|
|
277
|
+
const values = (Array.isArray(entry[attr]) ? entry[attr] : entry[attr] ? [
|
|
278
|
+
entry[attr]
|
|
279
|
+
] : []).filter((v)=>typeof v === 'string');
|
|
280
|
+
const normalized = new Set();
|
|
281
|
+
for (const value of values){
|
|
282
|
+
normalized.add(value);
|
|
283
|
+
const cn = value.match(/cn\s*=\s*([^,]+)/i)?.[1]?.trim();
|
|
284
|
+
if (cn) {
|
|
285
|
+
normalized.add(cn);
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
entry[attr] = Array.from(normalized);
|
|
289
|
+
continue;
|
|
290
|
+
}
|
|
291
|
+
if (Array.isArray(entry[attr])) {
|
|
292
|
+
// Keep only the first value for all other attributes (e.g., email)
|
|
293
|
+
entry[attr] = entry[attr].length > 0 ? entry[attr][0] : null;
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
return entry;
|
|
297
|
+
}
|
|
298
|
+
createIdentity(entry, password) {
|
|
299
|
+
// Build the local identity payload from LDAP entry.
|
|
300
|
+
const isAdmin = typeof this.ldapConfig.options.adminGroup === 'string' && this.ldapConfig.options.adminGroup && entry[_authldapconstants.LDAP_COMMON_ATTR.MEMBER_OF]?.includes(this.ldapConfig.options.adminGroup);
|
|
301
|
+
return {
|
|
302
|
+
login: this.dbLogin(entry[this.ldapConfig.attributes.login]),
|
|
303
|
+
email: entry[this.ldapConfig.attributes.email],
|
|
304
|
+
password: password,
|
|
305
|
+
role: isAdmin ? _user.USER_ROLE.ADMINISTRATOR : _user.USER_ROLE.USER,
|
|
306
|
+
...this.getFirstNameAndLastName(entry)
|
|
307
|
+
};
|
|
308
|
+
}
|
|
309
|
+
getFirstNameAndLastName(entry) {
|
|
310
|
+
// Resolve name fields with structured and fallback attributes.
|
|
311
|
+
// 1) Prefer structured attributes
|
|
312
|
+
if (entry.sn && entry.givenName) {
|
|
313
|
+
return {
|
|
314
|
+
firstName: entry.givenName,
|
|
315
|
+
lastName: entry.sn
|
|
316
|
+
};
|
|
317
|
+
}
|
|
318
|
+
// 2) Fallback to displayName if available
|
|
319
|
+
if (entry.displayName && entry.displayName.trim()) {
|
|
320
|
+
return (0, _functions.splitFullName)(entry.displayName);
|
|
321
|
+
}
|
|
322
|
+
// 3) Fallback to cn
|
|
323
|
+
if (entry.cn && entry.cn.trim()) {
|
|
324
|
+
return (0, _functions.splitFullName)(entry.cn);
|
|
325
|
+
}
|
|
326
|
+
// 4) Nothing usable
|
|
327
|
+
return {
|
|
328
|
+
firstName: '',
|
|
329
|
+
lastName: ''
|
|
330
|
+
};
|
|
331
|
+
}
|
|
332
|
+
dbLogin(login) {
|
|
333
|
+
// Normalize domain-qualified logins to the user part.
|
|
334
|
+
if (login.includes('\\')) {
|
|
335
|
+
return login.split('\\').slice(-1)[0];
|
|
336
|
+
}
|
|
337
|
+
return login;
|
|
338
|
+
}
|
|
339
|
+
buildLdapLogin(login) {
|
|
340
|
+
// Build the bind login string based on LDAP config.
|
|
341
|
+
if (this.ldapConfig.attributes.login === _authldapconstants.LDAP_LOGIN_ATTR.UPN) {
|
|
342
|
+
if (this.ldapConfig.upnSuffix && !login.includes('@')) {
|
|
343
|
+
return `${login}@${this.ldapConfig.upnSuffix}`;
|
|
344
|
+
}
|
|
345
|
+
} else if (this.ldapConfig.attributes.login === _authldapconstants.LDAP_LOGIN_ATTR.SAM) {
|
|
346
|
+
if (this.ldapConfig.netbiosName && !login.includes('\\')) {
|
|
347
|
+
return `${this.ldapConfig.netbiosName}\\${login}`;
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
return login;
|
|
351
|
+
}
|
|
352
|
+
buildBindUserDN(ldapLogin) {
|
|
353
|
+
return this.isAD ? ldapLogin : `${this.ldapConfig.attributes.login}=${ldapLogin},${this.ldapConfig.baseDN}`;
|
|
354
|
+
}
|
|
355
|
+
buildUserFilter(login, extraFilter) {
|
|
356
|
+
// Build a safe LDAP filter to search for the user entry.
|
|
357
|
+
// Important: - Values passed to EqualityFilter are auto-escaped by ldapts
|
|
358
|
+
// - extraFilter is appended as-is (assumed trusted configuration)
|
|
359
|
+
// Note: The OR clause differs between AD and generic LDAP.
|
|
360
|
+
// Handle the case where the sAMAccountName is provided in domain-qualified format (e.g., SYNC_IN\\user)
|
|
361
|
+
// Note: sAMAccountName is always stored without the domain in Active Directory.
|
|
362
|
+
const dbLogin = this.dbLogin(login);
|
|
363
|
+
const or = new _ldapts.OrFilter({
|
|
364
|
+
filters: this.isAD ? [
|
|
365
|
+
new _ldapts.EqualityFilter({
|
|
366
|
+
attribute: _authldapconstants.LDAP_LOGIN_ATTR.SAM,
|
|
367
|
+
value: dbLogin
|
|
368
|
+
}),
|
|
369
|
+
new _ldapts.EqualityFilter({
|
|
370
|
+
attribute: _authldapconstants.LDAP_LOGIN_ATTR.UPN,
|
|
371
|
+
value: dbLogin
|
|
372
|
+
}),
|
|
373
|
+
new _ldapts.EqualityFilter({
|
|
374
|
+
attribute: _authldapconstants.LDAP_LOGIN_ATTR.MAIL,
|
|
375
|
+
value: dbLogin
|
|
376
|
+
})
|
|
377
|
+
] : [
|
|
378
|
+
new _ldapts.EqualityFilter({
|
|
379
|
+
attribute: _authldapconstants.LDAP_LOGIN_ATTR.UID,
|
|
380
|
+
value: dbLogin
|
|
381
|
+
}),
|
|
382
|
+
new _ldapts.EqualityFilter({
|
|
383
|
+
attribute: _authldapconstants.LDAP_LOGIN_ATTR.CN,
|
|
384
|
+
value: dbLogin
|
|
385
|
+
}),
|
|
386
|
+
new _ldapts.EqualityFilter({
|
|
387
|
+
attribute: _authldapconstants.LDAP_LOGIN_ATTR.MAIL,
|
|
388
|
+
value: dbLogin
|
|
389
|
+
})
|
|
390
|
+
]
|
|
391
|
+
});
|
|
392
|
+
// Convert to LDAP filter string
|
|
393
|
+
let filterString = new _ldapts.AndFilter({
|
|
394
|
+
filters: [
|
|
395
|
+
or
|
|
396
|
+
]
|
|
397
|
+
}).toString();
|
|
398
|
+
// Optionally append an extra filter from config (trusted source)
|
|
399
|
+
if (extraFilter && extraFilter.trim()) {
|
|
400
|
+
filterString = `(&${filterString}${extraFilter})`;
|
|
401
|
+
}
|
|
402
|
+
return filterString;
|
|
403
|
+
}
|
|
404
|
+
hasAdminGroup(entry, adminGroup) {
|
|
405
|
+
// Check for the admin group in the normalized `memberOf` list.
|
|
406
|
+
return Array.isArray(entry[_authldapconstants.LDAP_COMMON_ATTR.MEMBER_OF]) && entry[_authldapconstants.LDAP_COMMON_ATTR.MEMBER_OF].includes(adminGroup);
|
|
407
|
+
}
|
|
408
|
+
async isMemberOfGroupOfNames(adminGroup, userDn, client) {
|
|
409
|
+
// Check groupOfNames membership by querying group entries.
|
|
410
|
+
// When adminGroup is a DN, search at the group DN; otherwise search under baseDN.
|
|
411
|
+
const { dn, cn } = this.parseAdminGroup(adminGroup);
|
|
412
|
+
// Build a filter that matches groupOfNames entries containing the user's DN as a member.
|
|
413
|
+
const filters = [
|
|
414
|
+
new _ldapts.EqualityFilter({
|
|
415
|
+
attribute: _authldapconstants.LDAP_SEARCH_ATTR.OBJECT_CLASS,
|
|
416
|
+
value: _authldapconstants.LDAP_SEARCH_ATTR.GROUP_OF_NAMES
|
|
417
|
+
}),
|
|
418
|
+
new _ldapts.EqualityFilter({
|
|
419
|
+
attribute: _authldapconstants.LDAP_SEARCH_ATTR.MEMBER,
|
|
420
|
+
value: userDn
|
|
421
|
+
})
|
|
422
|
+
];
|
|
423
|
+
// If a CN is available, narrow the query to that specific group name.
|
|
424
|
+
if (cn) {
|
|
425
|
+
filters.splice(1, 0, new _ldapts.EqualityFilter({
|
|
426
|
+
attribute: _authldapconstants.LDAP_COMMON_ATTR.CN,
|
|
427
|
+
value: cn
|
|
428
|
+
}));
|
|
429
|
+
}
|
|
430
|
+
const filter = new _ldapts.AndFilter({
|
|
431
|
+
filters
|
|
432
|
+
}).toString();
|
|
433
|
+
try {
|
|
434
|
+
// Use BASE scope for an exact DN lookup, otherwise SUB to scan within baseDN.
|
|
435
|
+
const { searchEntries } = await client.search(dn || this.ldapConfig.baseDN, {
|
|
436
|
+
scope: dn ? _authldapconstants.LDAP_SEARCH_ATTR.BASE : _authldapconstants.LDAP_SEARCH_ATTR.SUB,
|
|
437
|
+
filter,
|
|
438
|
+
attributes: [
|
|
439
|
+
_authldapconstants.LDAP_COMMON_ATTR.CN
|
|
440
|
+
]
|
|
441
|
+
});
|
|
442
|
+
// Any matching entry implies membership.
|
|
443
|
+
return searchEntries.length > 0;
|
|
444
|
+
} catch (e) {
|
|
445
|
+
this.logger.warn({
|
|
446
|
+
tag: this.isMemberOfGroupOfNames.name,
|
|
447
|
+
msg: `${e}`
|
|
448
|
+
});
|
|
449
|
+
return false;
|
|
450
|
+
}
|
|
451
|
+
}
|
|
452
|
+
parseAdminGroup(adminGroup) {
|
|
453
|
+
// Accept either full DN or simple CN and extract what we can for lookups.
|
|
454
|
+
const looksLikeDn = adminGroup.includes('=') && adminGroup.includes(',');
|
|
455
|
+
if (!looksLikeDn) {
|
|
456
|
+
return {
|
|
457
|
+
cn: adminGroup
|
|
458
|
+
};
|
|
459
|
+
}
|
|
460
|
+
const cn = adminGroup.match(/cn\s*=\s*([^,]+)/i)?.[1]?.trim();
|
|
461
|
+
return {
|
|
462
|
+
dn: adminGroup,
|
|
463
|
+
cn
|
|
464
|
+
};
|
|
465
|
+
}
|
|
466
|
+
handleBindError(error, attemptedBindDN) {
|
|
467
|
+
// Prefer the most specific LDAP error when multiple errors are returned.
|
|
468
|
+
if (error?.errors?.length) {
|
|
469
|
+
for (const err of error.errors){
|
|
470
|
+
this.logger.warn({
|
|
471
|
+
tag: this.handleBindError.name,
|
|
472
|
+
msg: `${attemptedBindDN} : ${err}`
|
|
473
|
+
});
|
|
474
|
+
}
|
|
475
|
+
return error.errors[error.errors.length - 1];
|
|
476
|
+
}
|
|
477
|
+
this.logger.warn({
|
|
478
|
+
tag: this.handleBindError.name,
|
|
479
|
+
msg: `${attemptedBindDN} : ${error}`
|
|
480
|
+
});
|
|
481
|
+
return error;
|
|
482
|
+
}
|
|
483
|
+
constructor(usersManager, adminUsersManager){
|
|
484
|
+
this.usersManager = usersManager;
|
|
485
|
+
this.adminUsersManager = adminUsersManager;
|
|
486
|
+
this.logger = new _common.Logger(AuthProviderLDAP.name);
|
|
487
|
+
this.ldapConfig = _configenvironment.configuration.auth.ldap;
|
|
488
|
+
this.hasServiceBind = Boolean(this.ldapConfig.serviceBindDN && this.ldapConfig.serviceBindPassword);
|
|
489
|
+
this.isAD = this.ldapConfig.attributes.login === _authldapconstants.LDAP_LOGIN_ATTR.SAM || this.ldapConfig.attributes.login === _authldapconstants.LDAP_LOGIN_ATTR.UPN;
|
|
490
|
+
this.clientOptions = {
|
|
491
|
+
timeout: 6000,
|
|
492
|
+
connectTimeout: 6000,
|
|
493
|
+
url: ''
|
|
494
|
+
};
|
|
495
|
+
}
|
|
496
|
+
};
|
|
497
|
+
AuthProviderLDAP = _ts_decorate([
|
|
498
|
+
(0, _common.Injectable)(),
|
|
499
|
+
_ts_metadata("design:type", Function),
|
|
500
|
+
_ts_metadata("design:paramtypes", [
|
|
501
|
+
typeof _usersmanagerservice.UsersManager === "undefined" ? Object : _usersmanagerservice.UsersManager,
|
|
502
|
+
typeof _adminusersmanagerservice.AdminUsersManager === "undefined" ? Object : _adminusersmanagerservice.AdminUsersManager
|
|
503
|
+
])
|
|
504
|
+
], AuthProviderLDAP);
|
|
505
|
+
|
|
506
|
+
//# sourceMappingURL=auth-provider-ldap.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../backend/src/authentication/providers/ldap/auth-provider-ldap.service.ts"],"sourcesContent":["import { HttpException, HttpStatus, Injectable, Logger } from '@nestjs/common'\nimport { AndFilter, Client, ClientOptions, Entry, EqualityFilter, InvalidCredentialsError, OrFilter } from 'ldapts'\nimport { CONNECT_ERROR_CODE } from '../../../app.constants'\nimport { USER_ROLE } from '../../../applications/users/constants/user'\nimport type { CreateUserDto, UpdateUserDto } from '../../../applications/users/dto/create-or-update-user.dto'\nimport { UserModel } from '../../../applications/users/models/user.model'\nimport { AdminUsersManager } from '../../../applications/users/services/admin-users-manager.service'\nimport { UsersManager } from '../../../applications/users/services/users-manager.service'\nimport { comparePassword, splitFullName } from '../../../common/functions'\nimport { configuration } from '../../../configuration/config.environment'\nimport type { AUTH_SCOPE } from '../../constants/scope'\nimport { AuthProvider } from '../auth-providers.models'\nimport type { AuthProviderLDAPConfig } from './auth-ldap.config'\nimport { ALL_LDAP_ATTRIBUTES, LDAP_COMMON_ATTR, LDAP_LOGIN_ATTR, LDAP_SEARCH_ATTR } from './auth-ldap.constants'\n\ntype LdapUserEntry = Entry &\n Record<LDAP_LOGIN_ATTR | Exclude<(typeof LDAP_COMMON_ATTR)[keyof typeof LDAP_COMMON_ATTR], typeof LDAP_COMMON_ATTR.MEMBER_OF>, string> & {\n [LDAP_COMMON_ATTR.MEMBER_OF]?: string[]\n }\n\n@Injectable()\nexport class AuthProviderLDAP implements AuthProvider {\n private readonly logger = new Logger(AuthProviderLDAP.name)\n private readonly ldapConfig: AuthProviderLDAPConfig = configuration.auth.ldap\n private readonly hasServiceBind = Boolean(this.ldapConfig.serviceBindDN && this.ldapConfig.serviceBindPassword)\n private readonly isAD = this.ldapConfig.attributes.login === LDAP_LOGIN_ATTR.SAM || this.ldapConfig.attributes.login === LDAP_LOGIN_ATTR.UPN\n private clientOptions: ClientOptions = { timeout: 6000, connectTimeout: 6000, url: '' }\n\n constructor(\n private readonly usersManager: UsersManager,\n private readonly adminUsersManager: AdminUsersManager\n ) {}\n\n async validateUser(loginOrEmail: string, password: string, ip?: string, scope?: AUTH_SCOPE): Promise<UserModel> {\n // Authenticate user via LDAP and sync local user state.\n // Find user from his login or email\n let user: UserModel = await this.usersManager.findUser(this.dbLogin(loginOrEmail), false)\n if (user) {\n if (user.isGuest || scope) {\n // Allow local password authentication for guest users and application scopes (app passwords)\n return this.usersManager.logUser(user, password, ip, scope)\n }\n if (!user.isActive) {\n this.logger.error({ tag: this.validateUser.name, msg: `user *${user.login}* is locked` })\n throw new HttpException('Account locked', HttpStatus.FORBIDDEN)\n }\n }\n let ldapErrorMessage: string\n let entry: false | LdapUserEntry = false\n try {\n // If a user was found, use the stored login. This allows logging in with an email.\n entry = await this.checkAuth(user?.login || loginOrEmail, password)\n } catch (e) {\n ldapErrorMessage = e.message\n }\n\n // LDAP auth failed or exception raised\n if (entry === false) {\n // If LDAP is unavailable (connectivity/service error), allow local password fallback.\n // Allow local password authentication for:\n // - admin users (break-glass access)\n // - regular users when password authentication fallback is enabled\n if (user && (user.isAdmin || (Boolean(ldapErrorMessage) && this.ldapConfig.options.enablePasswordAuthFallback))) {\n const localUser = await this.usersManager.logUser(user, password, ip)\n if (localUser) return localUser\n }\n\n if (ldapErrorMessage) {\n throw new HttpException(ldapErrorMessage, HttpStatus.SERVICE_UNAVAILABLE)\n }\n\n return null\n }\n\n if (!entry[this.ldapConfig.attributes.login] || !entry[this.ldapConfig.attributes.email]) {\n this.logger.error({\n tag: this.validateUser.name,\n msg: `required ldap fields are missing : \n [${this.ldapConfig.attributes.login}, ${this.ldapConfig.attributes.email}] => \n (${JSON.stringify(entry)})`\n })\n return null\n }\n\n if (!user && !this.ldapConfig.options.autoCreateUser) {\n this.logger.warn({ tag: this.validateUser.name, msg: `User not found and autoCreateUser is disabled` })\n throw new HttpException('User not found', HttpStatus.UNAUTHORIZED)\n }\n\n const identity = this.createIdentity(entry, password)\n user = await this.updateOrCreateUser(identity, user)\n this.usersManager.updateAccesses(user, ip, true).catch((e: Error) => this.logger.error({ tag: this.validateUser.name, msg: `${e}` }))\n return user\n }\n\n private async checkAuth(login: string, password: string): Promise<LdapUserEntry | false> {\n // Bind and fetch LDAP entry, optionally via service account.\n const ldapLogin = this.buildLdapLogin(login)\n // AD: bind directly with the user input (UPN or DOMAIN\\user)\n // Generic LDAP: build DN from login attribute + baseDN\n const bindUserDN = this.buildBindUserDN(ldapLogin)\n let error: InvalidCredentialsError | any\n for (const s of this.ldapConfig.servers) {\n const client = new Client({ ...this.clientOptions, url: s })\n let attemptedBindDN = bindUserDN\n try {\n if (this.hasServiceBind) {\n attemptedBindDN = this.ldapConfig.serviceBindDN\n await client.bind(this.ldapConfig.serviceBindDN, this.ldapConfig.serviceBindPassword)\n const result = await this.findUserEntry(ldapLogin, client)\n if (!result || !result.userDn) {\n this.logger.warn({ tag: this.checkAuth.name, msg: `no LDAP entry found for : ${login}` })\n return false\n }\n const { entry, userDn } = result\n attemptedBindDN = userDn\n await client.bind(userDn, password)\n return entry\n }\n attemptedBindDN = bindUserDN\n await client.bind(bindUserDN, password)\n return await this.checkAccess(ldapLogin, client, bindUserDN)\n } catch (e) {\n error = this.handleBindError(e, attemptedBindDN)\n if (error instanceof InvalidCredentialsError) {\n return false\n }\n } finally {\n await client.unbind()\n }\n }\n if (error) {\n this.logger.error({ tag: this.checkAuth.name, msg: `${error}` })\n if (CONNECT_ERROR_CODE.has(error.code)) {\n throw new Error('Authentication service error')\n }\n }\n return false\n }\n\n private async checkAccess(login: string, client: Client, bindUserDN?: string): Promise<LdapUserEntry | false> {\n // Search for the LDAP entry and normalize attributes.\n const result = await this.findUserEntry(login, client, bindUserDN)\n return result ? result.entry : false\n }\n\n private async findUserEntry(login: string, client: Client, bindUserDN?: string): Promise<{ entry: LdapUserEntry; userDn?: string } | false> {\n const searchFilter = this.buildUserFilter(login, this.ldapConfig.filter)\n try {\n const { searchEntries } = await client.search(this.ldapConfig.baseDN, {\n scope: LDAP_SEARCH_ATTR.SUB,\n filter: searchFilter,\n attributes: ALL_LDAP_ATTRIBUTES\n })\n\n if (searchEntries.length === 0) {\n this.logger.debug({ tag: this.findUserEntry.name, msg: `search filter : ${searchFilter}` })\n this.logger.warn({ tag: this.findUserEntry.name, msg: `no LDAP entry found for : ${login}` })\n return false\n }\n\n if (searchEntries.length > 1) {\n this.logger.warn({ tag: this.findUserEntry.name, msg: `multiple LDAP entries found for : ${login}, using first one` })\n }\n\n const rawEntry = searchEntries[0]\n const entry: LdapUserEntry = this.convertToLdapUserEntry(rawEntry)\n const userDn = (rawEntry as { dn?: string }).dn || bindUserDN\n\n if (this.ldapConfig.options.adminGroup && !this.hasAdminGroup(entry, this.ldapConfig.options.adminGroup)) {\n if (userDn && (await this.isMemberOfGroupOfNames(this.ldapConfig.options.adminGroup, userDn, client))) {\n const existing = Array.isArray(entry[LDAP_COMMON_ATTR.MEMBER_OF]) ? entry[LDAP_COMMON_ATTR.MEMBER_OF] : []\n entry[LDAP_COMMON_ATTR.MEMBER_OF] = [...new Set([...existing, this.ldapConfig.options.adminGroup])]\n }\n }\n\n // Return the first matching entry.\n return { entry, userDn }\n } catch (e) {\n this.logger.debug({ tag: this.findUserEntry.name, msg: `search filter : ${searchFilter}` })\n this.logger.error({ tag: this.findUserEntry.name, msg: `${login} : ${e}` })\n return false\n }\n }\n\n private async updateOrCreateUser(identity: CreateUserDto, user: UserModel): Promise<UserModel> {\n // Create or update the local user record from LDAP identity.\n if (user === null) {\n // Create\n identity.permissions = this.ldapConfig.options.autoCreatePermissions.join(',')\n const createdUser = await this.adminUsersManager.createUserOrGuest(identity, identity.role)\n const freshUser = await this.usersManager.fromUserId(createdUser.id)\n if (!freshUser) {\n this.logger.error({ tag: this.updateOrCreateUser.name, msg: `user was not found : ${createdUser.login} (${createdUser.id})` })\n throw new HttpException('User not found', HttpStatus.NOT_FOUND)\n }\n return freshUser\n }\n\n if (identity.login !== user.login) {\n this.logger.error({ tag: this.updateOrCreateUser.name, msg: `user login mismatch : ${identity.login} !== ${user.login}` })\n throw new HttpException('Account matching error', HttpStatus.FORBIDDEN)\n }\n\n // Update: check if user information has changed\n const identityHasChanged: UpdateUserDto = Object.fromEntries(\n (\n await Promise.all(\n Object.keys(identity).map(async (key: string) => {\n if (key === 'password') {\n const isSame = await comparePassword(identity[key], user.password)\n return isSame ? null : [key, identity[key]]\n }\n return identity[key] !== user[key] ? [key, identity[key]] : null\n })\n )\n ).filter(Boolean)\n )\n\n if (Object.keys(identityHasChanged).length > 0) {\n try {\n if (identityHasChanged?.role != null) {\n if (user.role === USER_ROLE.ADMINISTRATOR && !this.ldapConfig.options.adminGroup) {\n // Prevent removing the admin role when adminGroup was removed or not defined\n delete identityHasChanged.role\n }\n }\n\n // Update user properties\n await this.adminUsersManager.updateUserOrGuest(user.id, identityHasChanged)\n\n // Extra stuff\n if (identityHasChanged?.password) {\n delete identityHasChanged.password\n }\n\n Object.assign(user, identityHasChanged)\n\n if ('lastName' in identityHasChanged || 'firstName' in identityHasChanged) {\n // Force fullName update in the current user model\n user.setFullName(true)\n }\n } catch (e) {\n this.logger.warn({ tag: this.updateOrCreateUser.name, msg: `unable to update user *${user.login}* : ${e}` })\n }\n }\n return user\n }\n\n private convertToLdapUserEntry(entry: Entry): LdapUserEntry {\n // Normalize memberOf and other LDAP attributes for downstream usage.\n for (const attr of ALL_LDAP_ATTRIBUTES) {\n if (attr === LDAP_COMMON_ATTR.MEMBER_OF && entry[attr]) {\n const values = (Array.isArray(entry[attr]) ? entry[attr] : entry[attr] ? [entry[attr]] : []).filter(\n (v: any) => typeof v === 'string'\n ) as string[]\n const normalized = new Set<string>()\n for (const value of values) {\n normalized.add(value)\n const cn = value.match(/cn\\s*=\\s*([^,]+)/i)?.[1]?.trim()\n if (cn) {\n normalized.add(cn)\n }\n }\n entry[attr] = Array.from(normalized)\n continue\n }\n if (Array.isArray(entry[attr])) {\n // Keep only the first value for all other attributes (e.g., email)\n entry[attr] = entry[attr].length > 0 ? entry[attr][0] : null\n }\n }\n return entry as LdapUserEntry\n }\n\n private createIdentity(entry: LdapUserEntry, password: string): CreateUserDto {\n // Build the local identity payload from LDAP entry.\n const isAdmin =\n typeof this.ldapConfig.options.adminGroup === 'string' &&\n this.ldapConfig.options.adminGroup &&\n entry[LDAP_COMMON_ATTR.MEMBER_OF]?.includes(this.ldapConfig.options.adminGroup)\n return {\n login: this.dbLogin(entry[this.ldapConfig.attributes.login]),\n email: entry[this.ldapConfig.attributes.email] as string,\n password: password,\n role: isAdmin ? USER_ROLE.ADMINISTRATOR : USER_ROLE.USER,\n ...this.getFirstNameAndLastName(entry)\n } satisfies CreateUserDto\n }\n\n private getFirstNameAndLastName(entry: LdapUserEntry): { firstName: string; lastName: string } {\n // Resolve name fields with structured and fallback attributes.\n // 1) Prefer structured attributes\n if (entry.sn && entry.givenName) {\n return { firstName: entry.givenName, lastName: entry.sn }\n }\n // 2) Fallback to displayName if available\n if (entry.displayName && entry.displayName.trim()) {\n return splitFullName(entry.displayName)\n }\n // 3) Fallback to cn\n if (entry.cn && entry.cn.trim()) {\n return splitFullName(entry.cn)\n }\n // 4) Nothing usable\n return { firstName: '', lastName: '' }\n }\n\n private dbLogin(login: string): string {\n // Normalize domain-qualified logins to the user part.\n if (login.includes('\\\\')) {\n return login.split('\\\\').slice(-1)[0]\n }\n return login\n }\n\n private buildLdapLogin(login: string): string {\n // Build the bind login string based on LDAP config.\n if (this.ldapConfig.attributes.login === LDAP_LOGIN_ATTR.UPN) {\n if (this.ldapConfig.upnSuffix && !login.includes('@')) {\n return `${login}@${this.ldapConfig.upnSuffix}`\n }\n } else if (this.ldapConfig.attributes.login === LDAP_LOGIN_ATTR.SAM) {\n if (this.ldapConfig.netbiosName && !login.includes('\\\\')) {\n return `${this.ldapConfig.netbiosName}\\\\${login}`\n }\n }\n return login\n }\n\n private buildBindUserDN(ldapLogin: string): string {\n return this.isAD ? ldapLogin : `${this.ldapConfig.attributes.login}=${ldapLogin},${this.ldapConfig.baseDN}`\n }\n\n private buildUserFilter(login: string, extraFilter?: string): string {\n // Build a safe LDAP filter to search for the user entry.\n // Important: - Values passed to EqualityFilter are auto-escaped by ldapts\n // - extraFilter is appended as-is (assumed trusted configuration)\n // Note: The OR clause differs between AD and generic LDAP.\n\n // Handle the case where the sAMAccountName is provided in domain-qualified format (e.g., SYNC_IN\\\\user)\n // Note: sAMAccountName is always stored without the domain in Active Directory.\n const dbLogin = this.dbLogin(login)\n\n const or = new OrFilter({\n filters: this.isAD\n ? [\n new EqualityFilter({ attribute: LDAP_LOGIN_ATTR.SAM, value: dbLogin }),\n new EqualityFilter({ attribute: LDAP_LOGIN_ATTR.UPN, value: dbLogin }),\n new EqualityFilter({ attribute: LDAP_LOGIN_ATTR.MAIL, value: dbLogin })\n ]\n : [\n new EqualityFilter({ attribute: LDAP_LOGIN_ATTR.UID, value: dbLogin }),\n new EqualityFilter({ attribute: LDAP_LOGIN_ATTR.CN, value: dbLogin }),\n new EqualityFilter({ attribute: LDAP_LOGIN_ATTR.MAIL, value: dbLogin })\n ]\n })\n\n // Convert to LDAP filter string\n let filterString = new AndFilter({ filters: [or] }).toString()\n\n // Optionally append an extra filter from config (trusted source)\n if (extraFilter && extraFilter.trim()) {\n filterString = `(&${filterString}${extraFilter})`\n }\n return filterString\n }\n\n private hasAdminGroup(entry: LdapUserEntry, adminGroup: string): boolean {\n // Check for the admin group in the normalized `memberOf` list.\n return Array.isArray(entry[LDAP_COMMON_ATTR.MEMBER_OF]) && entry[LDAP_COMMON_ATTR.MEMBER_OF].includes(adminGroup)\n }\n\n private async isMemberOfGroupOfNames(adminGroup: string, userDn: string, client: Client): Promise<boolean> {\n // Check groupOfNames membership by querying group entries.\n // When adminGroup is a DN, search at the group DN; otherwise search under baseDN.\n const { dn, cn } = this.parseAdminGroup(adminGroup)\n // Build a filter that matches groupOfNames entries containing the user's DN as a member.\n const filters = [\n new EqualityFilter({ attribute: LDAP_SEARCH_ATTR.OBJECT_CLASS, value: LDAP_SEARCH_ATTR.GROUP_OF_NAMES }),\n new EqualityFilter({ attribute: LDAP_SEARCH_ATTR.MEMBER, value: userDn })\n ]\n // If a CN is available, narrow the query to that specific group name.\n if (cn) {\n filters.splice(1, 0, new EqualityFilter({ attribute: LDAP_COMMON_ATTR.CN, value: cn }))\n }\n const filter = new AndFilter({ filters }).toString()\n\n try {\n // Use BASE scope for an exact DN lookup, otherwise SUB to scan within baseDN.\n const { searchEntries } = await client.search(dn || this.ldapConfig.baseDN, {\n scope: dn ? LDAP_SEARCH_ATTR.BASE : LDAP_SEARCH_ATTR.SUB,\n filter,\n attributes: [LDAP_COMMON_ATTR.CN]\n })\n // Any matching entry implies membership.\n return searchEntries.length > 0\n } catch (e) {\n this.logger.warn({ tag: this.isMemberOfGroupOfNames.name, msg: `${e}` })\n return false\n }\n }\n\n private parseAdminGroup(adminGroup: string): { dn?: string; cn?: string } {\n // Accept either full DN or simple CN and extract what we can for lookups.\n const looksLikeDn = adminGroup.includes('=') && adminGroup.includes(',')\n if (!looksLikeDn) {\n return { cn: adminGroup }\n }\n const cn = adminGroup.match(/cn\\s*=\\s*([^,]+)/i)?.[1]?.trim()\n return { dn: adminGroup, cn }\n }\n\n private handleBindError(error: any, attemptedBindDN: string): InvalidCredentialsError | any {\n // Prefer the most specific LDAP error when multiple errors are returned.\n if (error?.errors?.length) {\n for (const err of error.errors) {\n this.logger.warn({ tag: this.handleBindError.name, msg: `${attemptedBindDN} : ${err}` })\n }\n return error.errors[error.errors.length - 1]\n }\n this.logger.warn({ tag: this.handleBindError.name, msg: `${attemptedBindDN} : ${error}` })\n return error\n }\n}\n"],"names":["AuthProviderLDAP","validateUser","loginOrEmail","password","ip","scope","user","usersManager","findUser","dbLogin","isGuest","logUser","isActive","logger","error","tag","name","msg","login","HttpException","HttpStatus","FORBIDDEN","ldapErrorMessage","entry","checkAuth","e","message","isAdmin","Boolean","ldapConfig","options","enablePasswordAuthFallback","localUser","SERVICE_UNAVAILABLE","attributes","email","JSON","stringify","autoCreateUser","warn","UNAUTHORIZED","identity","createIdentity","updateOrCreateUser","updateAccesses","catch","ldapLogin","buildLdapLogin","bindUserDN","buildBindUserDN","s","servers","client","Client","clientOptions","url","attemptedBindDN","hasServiceBind","serviceBindDN","bind","serviceBindPassword","result","findUserEntry","userDn","checkAccess","handleBindError","InvalidCredentialsError","unbind","CONNECT_ERROR_CODE","has","code","Error","searchFilter","buildUserFilter","filter","searchEntries","search","baseDN","LDAP_SEARCH_ATTR","SUB","ALL_LDAP_ATTRIBUTES","length","debug","rawEntry","convertToLdapUserEntry","dn","adminGroup","hasAdminGroup","isMemberOfGroupOfNames","existing","Array","isArray","LDAP_COMMON_ATTR","MEMBER_OF","Set","permissions","autoCreatePermissions","join","createdUser","adminUsersManager","createUserOrGuest","role","freshUser","fromUserId","id","NOT_FOUND","identityHasChanged","Object","fromEntries","Promise","all","keys","map","key","isSame","comparePassword","USER_ROLE","ADMINISTRATOR","updateUserOrGuest","assign","setFullName","attr","values","v","normalized","value","add","cn","match","trim","from","includes","USER","getFirstNameAndLastName","sn","givenName","firstName","lastName","displayName","splitFullName","split","slice","LDAP_LOGIN_ATTR","UPN","upnSuffix","SAM","netbiosName","isAD","extraFilter","or","OrFilter","filters","EqualityFilter","attribute","MAIL","UID","CN","filterString","AndFilter","toString","parseAdminGroup","OBJECT_CLASS","GROUP_OF_NAMES","MEMBER","splice","BASE","looksLikeDn","errors","err","Logger","configuration","auth","ldap","timeout","connectTimeout"],"mappings":"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"}
|