@researchdatabox/redbox-core 5.0.4-beta.12498 → 5.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/CoreController.d.ts +3 -7
- package/dist/CoreController.d.ts.map +1 -1
- package/dist/CoreController.js +3 -85
- package/dist/DatastreamService.d.ts +2 -4
- package/dist/DatastreamService.d.ts.map +1 -1
- package/dist/HarvestRunService.d.ts +3 -4
- package/dist/HarvestRunService.d.ts.map +1 -1
- package/dist/HarvestRunService.js +1 -1
- package/dist/QueueService.d.ts +1 -1
- package/dist/QueueService.d.ts.map +1 -1
- package/dist/RecordWriteOptions.d.ts +21 -0
- package/dist/RecordWriteOptions.d.ts.map +1 -0
- package/dist/RecordWriteOptions.js +17 -0
- package/dist/RecordsService.d.ts +14 -105
- package/dist/RecordsService.d.ts.map +1 -1
- package/dist/RecordsService.js +1 -44
- package/dist/SearchService.d.ts +1 -2
- package/dist/SearchService.d.ts.map +1 -1
- package/dist/StorageService.d.ts +20 -48
- package/dist/StorageService.d.ts.map +1 -1
- package/dist/StorageService.js +1 -19
- package/dist/StorageServiceResponse.d.ts +1 -22
- package/dist/StorageServiceResponse.d.ts.map +1 -1
- package/dist/StorageServiceResponse.js +4 -22
- package/dist/api-routes/groups/branding.d.ts +0 -8
- package/dist/api-routes/groups/branding.d.ts.map +1 -1
- package/dist/api-routes/groups/branding.js +11 -86
- package/dist/api-routes/groups/dashboard-config.d.ts +9 -12
- package/dist/api-routes/groups/dashboard-config.d.ts.map +1 -1
- package/dist/api-routes/groups/dashboard-config.js +73 -136
- package/dist/api-routes/groups/forms.d.ts.map +1 -1
- package/dist/api-routes/groups/forms.js +2 -10
- package/dist/api-routes/groups/records.d.ts +0 -1
- package/dist/api-routes/groups/records.d.ts.map +1 -1
- package/dist/api-routes/groups/records.js +26 -141
- package/dist/api-routes/index.d.ts +0 -3
- package/dist/api-routes/index.d.ts.map +1 -1
- package/dist/api-routes/index.js +1 -4
- package/dist/api-routes/openapi.d.ts.map +1 -1
- package/dist/api-routes/openapi.js +5 -7
- package/dist/api-routes/request-extraction.d.ts.map +1 -1
- package/dist/api-routes/request-extraction.js +8 -10
- package/dist/api-routes/route-factory.d.ts.map +1 -1
- package/dist/api-routes/route-factory.js +1 -2
- package/dist/api-routes/route-registry.d.ts.map +1 -1
- package/dist/api-routes/route-registry.js +1 -3
- package/dist/api-routes/schemas/common.d.ts +0 -36
- package/dist/api-routes/schemas/common.d.ts.map +1 -1
- package/dist/api-routes/schemas/common.js +5 -95
- package/dist/api-routes/schemas/responses.d.ts +1 -1424
- package/dist/api-routes/schemas/responses.d.ts.map +1 -1
- package/dist/api-routes/schemas/responses.js +60 -382
- package/dist/api-routes/types.d.ts +0 -1
- package/dist/api-routes/types.d.ts.map +1 -1
- package/dist/api-routes/validation.d.ts +1 -5
- package/dist/api-routes/validation.d.ts.map +1 -1
- package/dist/api-routes/validation.js +15 -14
- package/dist/bootstrap.d.ts +1 -3
- package/dist/bootstrap.d.ts.map +1 -1
- package/dist/bootstrap.js +41 -58
- package/dist/config/agendaQueue.config.d.ts +0 -3
- package/dist/config/agendaQueue.config.d.ts.map +1 -1
- package/dist/config/agendaQueue.config.js +11 -29
- package/dist/config/branding.config.d.ts +0 -13
- package/dist/config/branding.config.d.ts.map +1 -1
- package/dist/config/branding.config.js +2 -34
- package/dist/config/brandingConfigurationDefaults.config.d.ts +0 -4
- package/dist/config/brandingConfigurationDefaults.config.d.ts.map +1 -1
- package/dist/config/brandingConfigurationDefaults.config.js +3 -42
- package/dist/config/datapubs.config.d.ts +72 -0
- package/dist/config/datapubs.config.d.ts.map +1 -0
- package/dist/config/datapubs.config.js +74 -0
- package/dist/config/i18n.config.d.ts +4 -0
- package/dist/config/i18n.config.d.ts.map +1 -1
- package/dist/config/i18n.config.js +1 -1
- package/dist/config/index.d.ts +4 -12
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +4 -7
- package/dist/config/policies.config.d.ts.map +1 -1
- package/dist/config/policies.config.js +23 -37
- package/dist/config/raid.config.d.ts +4 -7
- package/dist/config/raid.config.d.ts.map +1 -1
- package/dist/config/raid.config.js +35 -21
- package/dist/config/record.config.d.ts +0 -3
- package/dist/config/record.config.d.ts.map +1 -1
- package/dist/config/record.config.js +35 -37
- package/dist/config/recordtype.config.d.ts +9 -32
- package/dist/config/recordtype.config.d.ts.map +1 -1
- package/dist/config/recordtype.config.js +7 -4
- package/dist/config/routes.config.d.ts.map +1 -1
- package/dist/config/routes.config.js +53 -135
- package/dist/config/workflow.config.d.ts +0 -6
- package/dist/config/workflow.config.d.ts.map +1 -1
- package/dist/config/workflow.config.js +1 -1
- package/dist/configmodels/AdminSidebarConfig.d.ts.map +1 -1
- package/dist/configmodels/AdminSidebarConfig.js +2 -4
- package/dist/configmodels/ConfigModels.d.ts +1 -1
- package/dist/configmodels/ConfigModels.d.ts.map +1 -1
- package/dist/configmodels/ConfigModels.js +9 -26
- package/dist/configmodels/FigsharePublishing.d.ts +103 -0
- package/dist/configmodels/FigsharePublishing.d.ts.map +1 -1
- package/dist/configmodels/FigsharePublishing.js +36 -2
- package/dist/controllers/AppConfigController.d.ts.map +1 -1
- package/dist/controllers/AppConfigController.js +1 -4
- package/dist/controllers/BrandingAppController.d.ts +7 -29
- package/dist/controllers/BrandingAppController.d.ts.map +1 -1
- package/dist/controllers/BrandingAppController.js +69 -265
- package/dist/controllers/BrandingController.d.ts +1 -24
- package/dist/controllers/BrandingController.d.ts.map +1 -1
- package/dist/controllers/BrandingController.js +43 -173
- package/dist/controllers/DashboardConfigController.d.ts +2 -6
- package/dist/controllers/DashboardConfigController.d.ts.map +1 -1
- package/dist/controllers/DashboardConfigController.js +4 -18
- package/dist/controllers/DynamicAssetController.d.ts +5 -7
- package/dist/controllers/DynamicAssetController.d.ts.map +1 -1
- package/dist/controllers/DynamicAssetController.js +12 -21
- package/dist/controllers/RecordAuditController.d.ts.map +1 -1
- package/dist/controllers/RecordAuditController.js +24 -6
- package/dist/controllers/RecordController.d.ts +4 -45
- package/dist/controllers/RecordController.d.ts.map +1 -1
- package/dist/controllers/RecordController.js +345 -778
- package/dist/controllers/index.d.ts.map +1 -1
- package/dist/controllers/index.js +1 -4
- package/dist/controllers/webservice/AdminController.d.ts.map +1 -1
- package/dist/controllers/webservice/AdminController.js +3 -4
- package/dist/controllers/webservice/BrandingController.d.ts +1 -26
- package/dist/controllers/webservice/BrandingController.d.ts.map +1 -1
- package/dist/controllers/webservice/BrandingController.js +116 -292
- package/dist/controllers/webservice/DashboardConfigController.d.ts +17 -25
- package/dist/controllers/webservice/DashboardConfigController.d.ts.map +1 -1
- package/dist/controllers/webservice/DashboardConfigController.js +205 -90
- package/dist/controllers/webservice/FormManagementController.d.ts.map +1 -1
- package/dist/controllers/webservice/FormManagementController.js +3 -37
- package/dist/controllers/webservice/RecordController.d.ts +1 -15
- package/dist/controllers/webservice/RecordController.d.ts.map +1 -1
- package/dist/controllers/webservice/RecordController.js +267 -647
- package/dist/controllers/webservice/RecordTypeController.d.ts +1 -6
- package/dist/controllers/webservice/RecordTypeController.d.ts.map +1 -1
- package/dist/controllers/webservice/RecordTypeController.js +3 -21
- package/dist/controllers/webservice/SearchController.d.ts.map +1 -1
- package/dist/controllers/webservice/SearchController.js +3 -7
- package/dist/hooks/defineRedboxHook.d.ts +0 -3
- package/dist/hooks/defineRedboxHook.d.ts.map +1 -1
- package/dist/hooks/defineRedboxHook.js +1 -4
- package/dist/index.d.ts +25 -50
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -90
- package/dist/loader/bootstrapShimRuntime.d.ts +1 -1
- package/dist/loader/bootstrapShimRuntime.d.ts.map +1 -1
- package/dist/loader/bootstrapShimRuntime.js +12 -20
- package/dist/loader/index.d.ts +0 -9
- package/dist/loader/index.d.ts.map +1 -1
- package/dist/loader/index.js +4 -93
- package/dist/model/BuildResponse.d.ts +11 -25
- package/dist/model/BuildResponse.d.ts.map +1 -1
- package/dist/model/BuildResponse.js +3 -4
- package/dist/model/DashboardTypeResponseModel.d.ts +0 -6
- package/dist/model/DashboardTypeResponseModel.d.ts.map +1 -1
- package/dist/model/DashboardTypeResponseModel.js +1 -7
- package/dist/model/DashboardViewResponseModel.d.ts +1 -5
- package/dist/model/DashboardViewResponseModel.d.ts.map +1 -1
- package/dist/model/DashboardViewResponseModel.js +3 -6
- package/dist/model/RBValidationError.d.ts +0 -17
- package/dist/model/RBValidationError.d.ts.map +1 -1
- package/dist/model/RBValidationError.js +1 -37
- package/dist/model/RecordTypeResponseModel.d.ts +4 -12
- package/dist/model/RecordTypeResponseModel.d.ts.map +1 -1
- package/dist/model/RecordTypeResponseModel.js +2 -11
- package/dist/model/index.d.ts +1 -5
- package/dist/model/index.d.ts.map +1 -1
- package/dist/model/index.js +2 -5
- package/dist/model/storage/BrandingModel.d.ts +0 -7
- package/dist/model/storage/BrandingModel.d.ts.map +1 -1
- package/dist/model/storage/BrandingModel.js +1 -7
- package/dist/model/storage/DeletedRecordModel.d.ts +0 -35
- package/dist/model/storage/DeletedRecordModel.d.ts.map +1 -1
- package/dist/model/storage/DeletedRecordModel.js +1 -62
- package/dist/model/storage/FigshareSyncModel.d.ts +126 -0
- package/dist/model/storage/FigshareSyncModel.d.ts.map +1 -0
- package/dist/model/storage/FigshareSyncModel.js +3 -0
- package/dist/model/storage/IntegrationAuditModel.d.ts +2 -16
- package/dist/model/storage/IntegrationAuditModel.d.ts.map +1 -1
- package/dist/model/storage/IntegrationAuditModel.js +1 -15
- package/dist/model/storage/RecordAuditModel.d.ts +4 -11
- package/dist/model/storage/RecordAuditModel.d.ts.map +1 -1
- package/dist/model/storage/RecordAuditModel.js +30 -8
- package/dist/model/storage/RecordModel.d.ts +3 -6
- package/dist/model/storage/RecordModel.d.ts.map +1 -1
- package/dist/model/storage/RecordTypeModel.d.ts +0 -6
- package/dist/model/storage/RecordTypeModel.d.ts.map +1 -1
- package/dist/model/storage/RecordTypeModel.js +1 -4
- package/dist/model/storage/index.d.ts +10 -12
- package/dist/model/storage/index.d.ts.map +1 -1
- package/dist/model/storage/index.js +2 -24
- package/dist/policies/checkAuth.d.ts +6 -2
- package/dist/policies/checkAuth.d.ts.map +1 -1
- package/dist/policies/checkAuth.js +9 -32
- package/dist/policies/contentSecurityPolicy.d.ts.map +1 -1
- package/dist/policies/contentSecurityPolicy.js +2 -85
- package/dist/policies/index.d.ts +2 -3
- package/dist/policies/index.d.ts.map +1 -1
- package/dist/policies/index.js +2 -4
- package/dist/policies/validateApiContractRequest.d.ts.map +1 -1
- package/dist/policies/validateApiContractRequest.js +11 -49
- package/dist/services/AgendaQueueService.d.ts +1 -1
- package/dist/services/AgendaQueueService.d.ts.map +1 -1
- package/dist/services/AgendaQueueService.js +7 -4
- package/dist/services/AppConfigService.d.ts +0 -6
- package/dist/services/AppConfigService.d.ts.map +1 -1
- package/dist/services/AppConfigService.js +1 -23
- package/dist/services/AttachmentMetadataService.d.ts +0 -58
- package/dist/services/AttachmentMetadataService.d.ts.map +1 -1
- package/dist/services/AttachmentMetadataService.js +8 -643
- package/dist/services/BrandingLogoService.d.ts +1 -6
- package/dist/services/BrandingLogoService.d.ts.map +1 -1
- package/dist/services/BrandingLogoService.js +9 -77
- package/dist/services/BrandingService.d.ts +9 -171
- package/dist/services/BrandingService.d.ts.map +1 -1
- package/dist/services/BrandingService.js +68 -572
- package/dist/services/BrandingThemeCssService.d.ts +1 -17
- package/dist/services/BrandingThemeCssService.d.ts.map +1 -1
- package/dist/services/BrandingThemeCssService.js +9 -71
- package/dist/services/DashboardConfigService.d.ts +54 -214
- package/dist/services/DashboardConfigService.d.ts.map +1 -1
- package/dist/services/DashboardConfigService.js +261 -829
- package/dist/services/DashboardTypesService.d.ts +4 -15
- package/dist/services/DashboardTypesService.d.ts.map +1 -1
- package/dist/services/DashboardTypesService.js +139 -72
- package/dist/services/DoiService.d.ts +1 -1
- package/dist/services/DoiService.d.ts.map +1 -1
- package/dist/services/DoiService.js +45 -71
- package/dist/services/FigshareService.d.ts +15 -10
- package/dist/services/FigshareService.d.ts.map +1 -1
- package/dist/services/FigshareService.js +82 -583
- package/dist/services/FormRecordConsistencyService.d.ts +23 -8
- package/dist/services/FormRecordConsistencyService.d.ts.map +1 -1
- package/dist/services/FormRecordConsistencyService.js +70 -54
- package/dist/services/FormsService.d.ts +2 -91
- package/dist/services/FormsService.d.ts.map +1 -1
- package/dist/services/FormsService.js +64 -324
- package/dist/services/HarvestRunService.d.ts +3 -6
- package/dist/services/HarvestRunService.d.ts.map +1 -1
- package/dist/services/HarvestRunService.js +97 -161
- package/dist/services/I18nEntriesService.d.ts +2 -1
- package/dist/services/I18nEntriesService.d.ts.map +1 -1
- package/dist/services/I18nEntriesService.js +45 -30
- package/dist/services/OniService.d.ts +62 -19
- package/dist/services/OniService.d.ts.map +1 -1
- package/dist/services/OniService.js +691 -223
- package/dist/services/RDMPService.d.ts +1 -1
- package/dist/services/RDMPService.d.ts.map +1 -1
- package/dist/services/RDMPService.js +5 -5
- package/dist/services/RaidService.d.ts +61 -19
- package/dist/services/RaidService.d.ts.map +1 -1
- package/dist/services/RaidService.js +530 -191
- package/dist/services/RecordTypesService.d.ts +0 -29
- package/dist/services/RecordTypesService.d.ts.map +1 -1
- package/dist/services/RecordTypesService.js +11 -106
- package/dist/services/RecordsService.d.ts +26 -313
- package/dist/services/RecordsService.d.ts.map +1 -1
- package/dist/services/RecordsService.js +763 -5089
- package/dist/services/SolrSearchService.d.ts +1 -1
- package/dist/services/SolrSearchService.d.ts.map +1 -1
- package/dist/services/SolrSearchService.js +12 -42
- package/dist/services/StandardDatastreamService.d.ts +5 -4
- package/dist/services/StandardDatastreamService.d.ts.map +1 -1
- package/dist/services/StandardDatastreamService.js +61 -106
- package/dist/services/TriggerService.d.ts.map +1 -1
- package/dist/services/TriggerService.js +30 -54
- package/dist/services/UsersService.d.ts +1 -2
- package/dist/services/UsersService.d.ts.map +1 -1
- package/dist/services/UsersService.js +283 -364
- package/dist/services/VocabularyService.d.ts +0 -2
- package/dist/services/VocabularyService.d.ts.map +1 -1
- package/dist/services/VocabularyService.js +2 -61
- package/dist/services/WorkflowStepsService.d.ts +0 -11
- package/dist/services/WorkflowStepsService.d.ts.map +1 -1
- package/dist/services/WorkflowStepsService.js +3 -32
- package/dist/services/WorkspaceService.d.ts +2 -2
- package/dist/services/WorkspaceService.d.ts.map +1 -1
- package/dist/services/WorkspaceService.js +5 -5
- package/dist/services/doi-v2/bindings.d.ts.map +1 -1
- package/dist/services/doi-v2/bindings.js +20 -3
- package/dist/services/doi-v2/config.d.ts +0 -1
- package/dist/services/doi-v2/config.d.ts.map +1 -1
- package/dist/services/doi-v2/config.js +5 -13
- package/dist/services/doi-v2/runtime.d.ts.map +1 -1
- package/dist/services/doi-v2/runtime.js +54 -14
- package/dist/services/figshare-v2/admin.d.ts +16 -0
- package/dist/services/figshare-v2/admin.d.ts.map +1 -0
- package/dist/services/figshare-v2/admin.js +283 -0
- package/dist/services/figshare-v2/assets.d.ts +20 -1
- package/dist/services/figshare-v2/assets.d.ts.map +1 -1
- package/dist/services/figshare-v2/assets.js +16 -1
- package/dist/services/figshare-v2/bindings.d.ts.map +1 -1
- package/dist/services/figshare-v2/bindings.js +20 -3
- package/dist/services/figshare-v2/config.d.ts +8 -2
- package/dist/services/figshare-v2/config.d.ts.map +1 -1
- package/dist/services/figshare-v2/config.js +31 -3
- package/dist/services/figshare-v2/execution.d.ts +25 -0
- package/dist/services/figshare-v2/execution.d.ts.map +1 -0
- package/dist/services/figshare-v2/execution.js +49 -0
- package/dist/services/figshare-v2/http.d.ts +6 -1
- package/dist/services/figshare-v2/http.d.ts.map +1 -1
- package/dist/services/figshare-v2/http.js +69 -12
- package/dist/services/figshare-v2/identity.d.ts +12 -0
- package/dist/services/figshare-v2/identity.d.ts.map +1 -0
- package/dist/services/figshare-v2/identity.js +78 -0
- package/dist/services/figshare-v2/managed-assets.d.ts +9 -0
- package/dist/services/figshare-v2/managed-assets.d.ts.map +1 -0
- package/dist/services/figshare-v2/managed-assets.js +229 -0
- package/dist/services/figshare-v2/plan.d.ts.map +1 -1
- package/dist/services/figshare-v2/plan.js +2 -9
- package/dist/services/figshare-v2/runtime.d.ts.map +1 -1
- package/dist/services/figshare-v2/runtime.js +58 -11
- package/dist/services/figshare-v2/source-intent.d.ts +9 -0
- package/dist/services/figshare-v2/source-intent.d.ts.map +1 -0
- package/dist/services/figshare-v2/source-intent.js +93 -0
- package/dist/services/figshare-v2/status.d.ts +4 -0
- package/dist/services/figshare-v2/status.d.ts.map +1 -0
- package/dist/services/figshare-v2/status.js +29 -0
- package/dist/services/figshare-v2/sync-store.d.ts +27 -0
- package/dist/services/figshare-v2/sync-store.d.ts.map +1 -0
- package/dist/services/figshare-v2/sync-store.js +139 -0
- package/dist/services/figshare-v2/types.d.ts +3 -0
- package/dist/services/figshare-v2/types.d.ts.map +1 -1
- package/dist/services/figshare-v2/types.js +1 -1
- package/dist/services/figshare-v2/worker.d.ts +16 -0
- package/dist/services/figshare-v2/worker.d.ts.map +1 -0
- package/dist/services/figshare-v2/worker.js +572 -0
- package/dist/services/index.d.ts +0 -9
- package/dist/services/index.d.ts.map +1 -1
- package/dist/services/index.js +3 -45
- package/dist/utilities/TranslationHtml.d.ts +3 -0
- package/dist/utilities/TranslationHtml.d.ts.map +1 -0
- package/dist/utilities/TranslationHtml.js +46 -0
- package/dist/visitor/client.visitor.d.ts +0 -6
- package/dist/visitor/client.visitor.d.ts.map +1 -1
- package/dist/visitor/client.visitor.js +14 -59
- package/dist/visitor/construct.visitor.d.ts +1 -27
- package/dist/visitor/construct.visitor.d.ts.map +1 -1
- package/dist/visitor/construct.visitor.js +177 -265
- package/dist/visitor/context-variables.visitor.d.ts +1 -3
- package/dist/visitor/context-variables.visitor.d.ts.map +1 -1
- package/dist/visitor/context-variables.visitor.js +1 -15
- package/dist/visitor/data-value.visitor.d.ts +0 -6
- package/dist/visitor/data-value.visitor.d.ts.map +1 -1
- package/dist/visitor/data-value.visitor.js +1 -10
- package/dist/visitor/json-type-def.visitor.d.ts +0 -6
- package/dist/visitor/json-type-def.visitor.d.ts.map +1 -1
- package/dist/visitor/json-type-def.visitor.js +1 -10
- package/dist/visitor/migrate-config-v4-v5.visitor.d.ts +0 -11
- package/dist/visitor/migrate-config-v4-v5.visitor.d.ts.map +1 -1
- package/dist/visitor/migrate-config-v4-v5.visitor.js +133 -228
- package/dist/visitor/template.visitor.d.ts +2 -17
- package/dist/visitor/template.visitor.d.ts.map +1 -1
- package/dist/visitor/template.visitor.js +22 -60
- package/dist/visitor/validator.visitor.d.ts +7 -49
- package/dist/visitor/validator.visitor.d.ts.map +1 -1
- package/dist/visitor/validator.visitor.js +178 -275
- package/dist/waterline-models/AttachmentMetadata.d.ts +0 -22
- package/dist/waterline-models/AttachmentMetadata.d.ts.map +1 -1
- package/dist/waterline-models/AttachmentMetadata.js +3 -147
- package/dist/waterline-models/BrandingConfig.d.ts +0 -7
- package/dist/waterline-models/BrandingConfig.d.ts.map +1 -1
- package/dist/waterline-models/BrandingConfig.js +1 -16
- package/dist/waterline-models/BrandingConfigHistory.d.ts +2 -11
- package/dist/waterline-models/BrandingConfigHistory.d.ts.map +1 -1
- package/dist/waterline-models/BrandingConfigHistory.js +1 -21
- package/dist/waterline-models/FigshareSync.d.ts +41 -0
- package/dist/waterline-models/FigshareSync.d.ts.map +1 -0
- package/dist/waterline-models/FigshareSync.js +168 -0
- package/dist/waterline-models/RecordType.d.ts +0 -9
- package/dist/waterline-models/RecordType.d.ts.map +1 -1
- package/dist/waterline-models/RecordType.js +1 -16
- package/dist/waterline-models/User.d.ts.map +1 -1
- package/dist/waterline-models/User.js +15 -10
- package/dist/waterline-models/index.d.ts +2 -2
- package/dist/waterline-models/index.d.ts.map +1 -1
- package/dist/waterline-models/index.js +4 -4
- package/package.json +46 -59
- package/dist/AttachmentStagingIdentity.d.ts +0 -3
- package/dist/AttachmentStagingIdentity.d.ts.map +0 -1
- package/dist/AttachmentStagingIdentity.js +0 -10
- package/dist/RecordConcurrencyObservability.d.ts +0 -51
- package/dist/RecordConcurrencyObservability.d.ts.map +0 -1
- package/dist/RecordConcurrencyObservability.js +0 -136
- package/dist/RecordEntityTag.d.ts +0 -31
- package/dist/RecordEntityTag.d.ts.map +0 -1
- package/dist/RecordEntityTag.js +0 -101
- package/dist/RecordFormFingerprint.d.ts +0 -7
- package/dist/RecordFormFingerprint.d.ts.map +0 -1
- package/dist/RecordFormFingerprint.js +0 -106
- package/dist/RecordHttpConcurrency.d.ts +0 -60
- package/dist/RecordHttpConcurrency.d.ts.map +0 -1
- package/dist/RecordHttpConcurrency.js +0 -181
- package/dist/RecordSaveResponse.d.ts +0 -219
- package/dist/RecordSaveResponse.d.ts.map +0 -1
- package/dist/RecordSaveResponse.js +0 -639
- package/dist/RecordStorageConcurrency.d.ts +0 -48
- package/dist/RecordStorageConcurrency.d.ts.map +0 -1
- package/dist/RecordStorageConcurrency.js +0 -103
- package/dist/RecordWriteClassification.d.ts +0 -12
- package/dist/RecordWriteClassification.d.ts.map +0 -1
- package/dist/RecordWriteClassification.js +0 -70
- package/dist/action-execution/audit.d.ts +0 -41
- package/dist/action-execution/audit.d.ts.map +0 -1
- package/dist/action-execution/audit.js +0 -122
- package/dist/action-execution/executor.d.ts +0 -24
- package/dist/action-execution/executor.d.ts.map +0 -1
- package/dist/action-execution/executor.js +0 -435
- package/dist/action-execution/failure.d.ts +0 -49
- package/dist/action-execution/failure.d.ts.map +0 -1
- package/dist/action-execution/failure.js +0 -129
- package/dist/action-execution/index.d.ts +0 -7
- package/dist/action-execution/index.d.ts.map +0 -1
- package/dist/action-execution/index.js +0 -23
- package/dist/action-execution/legacy-result.d.ts +0 -21
- package/dist/action-execution/legacy-result.d.ts.map +0 -1
- package/dist/action-execution/legacy-result.js +0 -70
- package/dist/action-execution/policy.d.ts +0 -12
- package/dist/action-execution/policy.d.ts.map +0 -1
- package/dist/action-execution/policy.js +0 -138
- package/dist/action-execution/types.d.ts +0 -121
- package/dist/action-execution/types.d.ts.map +0 -1
- package/dist/action-execution/types.js +0 -22
- package/dist/api-routes/groups/record-schemas.d.ts +0 -5
- package/dist/api-routes/groups/record-schemas.d.ts.map +0 -1
- package/dist/api-routes/groups/record-schemas.js +0 -181
- package/dist/api-routes/record-schema-openapi.d.ts +0 -26
- package/dist/api-routes/record-schema-openapi.d.ts.map +0 -1
- package/dist/api-routes/record-schema-openapi.js +0 -38
- package/dist/api-routes/record-schema-response.d.ts +0 -40
- package/dist/api-routes/record-schema-response.d.ts.map +0 -1
- package/dist/api-routes/record-schema-response.js +0 -89
- package/dist/config/recordSchema.config.d.ts +0 -68
- package/dist/config/recordSchema.config.d.ts.map +0 -1
- package/dist/config/recordSchema.config.js +0 -173
- package/dist/config/recordValidation.config.d.ts +0 -19
- package/dist/config/recordValidation.config.d.ts.map +0 -1
- package/dist/config/recordValidation.config.js +0 -10
- package/dist/configmodels/DashboardFieldCatalogue.d.ts +0 -67
- package/dist/configmodels/DashboardFieldCatalogue.d.ts.map +0 -1
- package/dist/configmodels/DashboardFieldCatalogue.js +0 -174
- package/dist/configmodels/DashboardSettings.d.ts +0 -191
- package/dist/configmodels/DashboardSettings.d.ts.map +0 -1
- package/dist/configmodels/DashboardSettings.js +0 -705
- package/dist/configmodels/OniPublishing.d.ts +0 -205
- package/dist/configmodels/OniPublishing.d.ts.map +0 -1
- package/dist/configmodels/OniPublishing.js +0 -335
- package/dist/configmodels/RaidPublishing.d.ts +0 -97
- package/dist/configmodels/RaidPublishing.d.ts.map +0 -1
- package/dist/configmodels/RaidPublishing.js +0 -35
- package/dist/configmodels/WebAnalytics.d.ts +0 -55
- package/dist/configmodels/WebAnalytics.d.ts.map +0 -1
- package/dist/configmodels/WebAnalytics.js +0 -61
- package/dist/controllers/BrandingControllerSupport.d.ts +0 -20
- package/dist/controllers/BrandingControllerSupport.d.ts.map +0 -1
- package/dist/controllers/BrandingControllerSupport.js +0 -80
- package/dist/controllers/webservice/RecordSchemaController.d.ts +0 -32
- package/dist/controllers/webservice/RecordSchemaController.d.ts.map +0 -1
- package/dist/controllers/webservice/RecordSchemaController.js +0 -356
- package/dist/model/BrandingTypeface.d.ts +0 -70
- package/dist/model/BrandingTypeface.d.ts.map +0 -1
- package/dist/model/BrandingTypeface.js +0 -116
- package/dist/model/record-contract.d.ts +0 -42
- package/dist/model/record-contract.d.ts.map +0 -1
- package/dist/model/record-contract.js +0 -3
- package/dist/model/storage/record-schema.d.ts +0 -115
- package/dist/model/storage/record-schema.d.ts.map +0 -1
- package/dist/model/storage/record-schema.js +0 -3
- package/dist/record-contract/ajv-error-mapper.d.ts +0 -34
- package/dist/record-contract/ajv-error-mapper.d.ts.map +0 -1
- package/dist/record-contract/ajv-error-mapper.js +0 -153
- package/dist/record-contract/canonical-json.d.ts +0 -20
- package/dist/record-contract/canonical-json.d.ts.map +0 -1
- package/dist/record-contract/canonical-json.js +0 -126
- package/dist/record-contract/codes.d.ts +0 -36
- package/dist/record-contract/codes.d.ts.map +0 -1
- package/dist/record-contract/codes.js +0 -38
- package/dist/record-contract/contributor-registry.d.ts +0 -76
- package/dist/record-contract/contributor-registry.d.ts.map +0 -1
- package/dist/record-contract/contributor-registry.js +0 -126
- package/dist/record-contract/core-contributors.d.ts +0 -44
- package/dist/record-contract/core-contributors.d.ts.map +0 -1
- package/dist/record-contract/core-contributors.js +0 -395
- package/dist/record-contract/deep-freeze.d.ts +0 -3
- package/dist/record-contract/deep-freeze.d.ts.map +0 -1
- package/dist/record-contract/deep-freeze.js +0 -23
- package/dist/record-contract/index.d.ts +0 -13
- package/dist/record-contract/index.d.ts.map +0 -1
- package/dist/record-contract/index.js +0 -29
- package/dist/record-contract/json-pointer.d.ts +0 -20
- package/dist/record-contract/json-pointer.d.ts.map +0 -1
- package/dist/record-contract/json-pointer.js +0 -70
- package/dist/record-contract/json-schema-renderer.d.ts +0 -51
- package/dist/record-contract/json-schema-renderer.d.ts.map +0 -1
- package/dist/record-contract/json-schema-renderer.js +0 -450
- package/dist/record-contract/record-contract-compiler.d.ts +0 -42
- package/dist/record-contract/record-contract-compiler.d.ts.map +0 -1
- package/dist/record-contract/record-contract-compiler.js +0 -775
- package/dist/record-contract/record-contract-context.d.ts +0 -91
- package/dist/record-contract/record-contract-context.d.ts.map +0 -1
- package/dist/record-contract/record-contract-context.js +0 -39
- package/dist/record-contract/record-json-schema-artifact.d.ts +0 -74
- package/dist/record-contract/record-json-schema-artifact.d.ts.map +0 -1
- package/dist/record-contract/record-json-schema-artifact.js +0 -309
- package/dist/record-contract/record-json-schema-etag.d.ts +0 -15
- package/dist/record-contract/record-json-schema-etag.d.ts.map +0 -1
- package/dist/record-contract/record-json-schema-etag.js +0 -41
- package/dist/record-contract/types.d.ts +0 -151
- package/dist/record-contract/types.d.ts.map +0 -1
- package/dist/record-contract/types.js +0 -6
- package/dist/services/BrandingTypefaceService.d.ts +0 -74
- package/dist/services/BrandingTypefaceService.d.ts.map +0 -1
- package/dist/services/BrandingTypefaceService.js +0 -359
- package/dist/services/BrandingWoff2Inspector.d.ts +0 -17
- package/dist/services/BrandingWoff2Inspector.d.ts.map +0 -1
- package/dist/services/BrandingWoff2Inspector.js +0 -402
- package/dist/services/DashboardLegacyConversion.d.ts +0 -82
- package/dist/services/DashboardLegacyConversion.d.ts.map +0 -1
- package/dist/services/DashboardLegacyConversion.js +0 -427
- package/dist/services/RecordSchemaService.d.ts +0 -440
- package/dist/services/RecordSchemaService.d.ts.map +0 -1
- package/dist/services/RecordSchemaService.js +0 -3061
- package/dist/services/RecordValidationService.d.ts +0 -340
- package/dist/services/RecordValidationService.d.ts.map +0 -1
- package/dist/services/RecordValidationService.js +0 -1898
- package/dist/services/form-record-access-user.d.ts +0 -3
- package/dist/services/form-record-access-user.d.ts.map +0 -1
- package/dist/services/form-record-access-user.js +0 -23
- package/dist/services/integration-v2/bindings.d.ts +0 -3
- package/dist/services/integration-v2/bindings.d.ts.map +0 -1
- package/dist/services/integration-v2/bindings.js +0 -91
- package/dist/services/integration-v2/runtime.d.ts +0 -3
- package/dist/services/integration-v2/runtime.d.ts.map +0 -1
- package/dist/services/integration-v2/runtime.js +0 -50
- package/dist/services/internal-record-schema-authorization.d.ts +0 -8
- package/dist/services/internal-record-schema-authorization.d.ts.map +0 -1
- package/dist/services/internal-record-schema-authorization.js +0 -16
- package/dist/services/oni-v2/audit.d.ts +0 -19
- package/dist/services/oni-v2/audit.d.ts.map +0 -1
- package/dist/services/oni-v2/audit.js +0 -50
- package/dist/services/oni-v2/bindings.d.ts +0 -7
- package/dist/services/oni-v2/bindings.d.ts.map +0 -1
- package/dist/services/oni-v2/bindings.js +0 -31
- package/dist/services/oni-v2/config.d.ts +0 -12
- package/dist/services/oni-v2/config.d.ts.map +0 -1
- package/dist/services/oni-v2/config.js +0 -134
- package/dist/services/oni-v2/context.d.ts +0 -3
- package/dist/services/oni-v2/context.d.ts.map +0 -1
- package/dist/services/oni-v2/context.js +0 -17
- package/dist/services/oni-v2/crate.d.ts +0 -17
- package/dist/services/oni-v2/crate.d.ts.map +0 -1
- package/dist/services/oni-v2/crate.js +0 -504
- package/dist/services/oni-v2/flydriveOcflStore.d.ts +0 -69
- package/dist/services/oni-v2/flydriveOcflStore.d.ts.map +0 -1
- package/dist/services/oni-v2/flydriveOcflStore.js +0 -325
- package/dist/services/oni-v2/ingestion.d.ts +0 -37
- package/dist/services/oni-v2/ingestion.d.ts.map +0 -1
- package/dist/services/oni-v2/ingestion.js +0 -91
- package/dist/services/oni-v2/mapping.d.ts +0 -17
- package/dist/services/oni-v2/mapping.d.ts.map +0 -1
- package/dist/services/oni-v2/mapping.js +0 -137
- package/dist/services/oni-v2/repository.d.ts +0 -9
- package/dist/services/oni-v2/repository.d.ts.map +0 -1
- package/dist/services/oni-v2/repository.js +0 -180
- package/dist/services/oni-v2/runtime.d.ts +0 -23
- package/dist/services/oni-v2/runtime.d.ts.map +0 -1
- package/dist/services/oni-v2/runtime.js +0 -121
- package/dist/services/oni-v2/templating.d.ts +0 -11
- package/dist/services/oni-v2/templating.d.ts.map +0 -1
- package/dist/services/oni-v2/templating.js +0 -27
- package/dist/services/oni-v2/types.d.ts +0 -100
- package/dist/services/oni-v2/types.d.ts.map +0 -1
- package/dist/services/oni-v2/types.js +0 -3
- package/dist/services/raid-v2/audit.d.ts +0 -10
- package/dist/services/raid-v2/audit.d.ts.map +0 -1
- package/dist/services/raid-v2/audit.js +0 -29
- package/dist/services/raid-v2/errors.d.ts +0 -85
- package/dist/services/raid-v2/errors.d.ts.map +0 -1
- package/dist/services/raid-v2/errors.js +0 -36
- package/dist/services/raid-v2/http.d.ts +0 -4
- package/dist/services/raid-v2/http.d.ts.map +0 -1
- package/dist/services/raid-v2/http.js +0 -84
- package/dist/services/raid-v2/logger.d.ts +0 -8
- package/dist/services/raid-v2/logger.d.ts.map +0 -1
- package/dist/services/raid-v2/logger.js +0 -30
- package/dist/services/raid-v2/mapping.d.ts +0 -9
- package/dist/services/raid-v2/mapping.d.ts.map +0 -1
- package/dist/services/raid-v2/mapping.js +0 -168
- package/dist/services/raid-v2/runtime.d.ts +0 -5
- package/dist/services/raid-v2/runtime.d.ts.map +0 -1
- package/dist/services/raid-v2/runtime.js +0 -135
- package/dist/services/raid-v2/tags.d.ts +0 -11
- package/dist/services/raid-v2/tags.d.ts.map +0 -1
- package/dist/services/raid-v2/tags.js +0 -12
- package/dist/services/raid-v2/types.d.ts +0 -66
- package/dist/services/raid-v2/types.d.ts.map +0 -1
- package/dist/services/raid-v2/types.js +0 -3
- package/dist/services/record-hooks/coordinator.d.ts +0 -64
- package/dist/services/record-hooks/coordinator.d.ts.map +0 -1
- package/dist/services/record-hooks/coordinator.js +0 -276
- package/dist/visitor/related-object-data-inline.visitor.d.ts +0 -31
- package/dist/visitor/related-object-data-inline.visitor.d.ts.map +0 -1
- package/dist/visitor/related-object-data-inline.visitor.js +0 -96
- package/dist/waterline-models/DashboardConfiguration.d.ts +0 -29
- package/dist/waterline-models/DashboardConfiguration.d.ts.map +0 -1
- package/dist/waterline-models/DashboardConfiguration.js +0 -52
|
@@ -146,67 +146,56 @@ var Services;
|
|
|
146
146
|
const resolved = await (0, rxjs_1.firstValueFrom)(this.getEffectiveUser(user));
|
|
147
147
|
return resolved ?? user;
|
|
148
148
|
}
|
|
149
|
-
|
|
150
|
-
const editPending = (current.editPending ?? []).map(email => String(email).toLowerCase());
|
|
151
|
-
const viewPending = (current.viewPending ?? []).map(email => String(email).toLowerCase());
|
|
152
|
-
const replaceUsername = (username) => (username === secondaryUsername ? primaryUsername : username);
|
|
153
|
-
return {
|
|
154
|
-
...current,
|
|
155
|
-
edit: _.uniq([
|
|
156
|
-
..._.uniq((current.edit ?? [])).map(replaceUsername),
|
|
157
|
-
...(editPending.includes(secondaryEmail) ? [primaryUsername] : []),
|
|
158
|
-
]),
|
|
159
|
-
view: _.uniq([
|
|
160
|
-
..._.uniq((current.view ?? [])).map(replaceUsername),
|
|
161
|
-
...(viewPending.includes(secondaryEmail) ? [primaryUsername] : []),
|
|
162
|
-
]),
|
|
163
|
-
editPending: editPending.filter(email => email !== secondaryEmail),
|
|
164
|
-
viewPending: viewPending.filter(email => email !== secondaryEmail),
|
|
165
|
-
};
|
|
166
|
-
}
|
|
167
|
-
async rewriteLinkedRecordAuthorizations(primaryUser, secondaryUser, actor) {
|
|
149
|
+
async rewriteLinkedRecordAuthorizations(primaryUser, secondaryUser, actor, defaultBrandId) {
|
|
168
150
|
const secondaryUsername = String(secondaryUser.username ?? '');
|
|
169
151
|
const secondaryEmail = String(secondaryUser.email ?? '').toLowerCase();
|
|
170
|
-
const primaryUsername = String(primaryUser.username ?? '');
|
|
171
152
|
const records = await Record.find({
|
|
172
153
|
or: [
|
|
173
154
|
{ 'authorization.edit': secondaryUsername },
|
|
174
155
|
{ 'authorization.view': secondaryUsername },
|
|
175
156
|
{ 'authorization.editPending': secondaryEmail },
|
|
176
|
-
{ 'authorization.viewPending': secondaryEmail }
|
|
177
|
-
]
|
|
157
|
+
{ 'authorization.viewPending': secondaryEmail }
|
|
158
|
+
]
|
|
178
159
|
}).meta({
|
|
179
|
-
enableExperimentalDeepTargets: true
|
|
160
|
+
enableExperimentalDeepTargets: true
|
|
180
161
|
});
|
|
181
162
|
let rewrittenCount = 0;
|
|
182
163
|
for (const record of records) {
|
|
183
|
-
const recordObj = record;
|
|
184
|
-
const
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
164
|
+
const recordObj = _.cloneDeep(record);
|
|
165
|
+
const authorization = (recordObj.authorization ?? {});
|
|
166
|
+
authorization.edit = _.uniq((authorization.edit ?? []));
|
|
167
|
+
authorization.view = _.uniq((authorization.view ?? []));
|
|
168
|
+
authorization.editPending = (authorization.editPending ?? []).map(email => String(email).toLowerCase());
|
|
169
|
+
authorization.viewPending = (authorization.viewPending ?? []).map(email => String(email).toLowerCase());
|
|
170
|
+
recordObj.authorization = authorization;
|
|
171
|
+
let changed = false;
|
|
172
|
+
const nextEdit = _.map(authorization.edit, username => username === secondaryUsername ? String(primaryUser.username ?? '') : username);
|
|
173
|
+
const nextView = _.map(authorization.view, username => username === secondaryUsername ? String(primaryUser.username ?? '') : username);
|
|
174
|
+
if (!_.isEqual(nextEdit, authorization.edit)) {
|
|
175
|
+
authorization.edit = _.uniq(nextEdit);
|
|
176
|
+
changed = true;
|
|
177
|
+
}
|
|
178
|
+
if (!_.isEqual(nextView, authorization.view)) {
|
|
179
|
+
authorization.view = _.uniq(nextView);
|
|
180
|
+
changed = true;
|
|
181
|
+
}
|
|
182
|
+
if (_.includes(authorization.editPending, secondaryEmail)) {
|
|
183
|
+
authorization.editPending = _.without(authorization.editPending, secondaryEmail);
|
|
184
|
+
authorization.edit = _.uniq([...authorization.edit, String(primaryUser.username ?? '')]);
|
|
185
|
+
RecordsService.provideUserAccessAndRemovePendingAccess(String(recordObj.redboxOid ?? ''), primaryUser.username, secondaryEmail);
|
|
186
|
+
changed = true;
|
|
187
|
+
}
|
|
188
|
+
if (_.includes(authorization.viewPending, secondaryEmail)) {
|
|
189
|
+
authorization.viewPending = _.without(authorization.viewPending, secondaryEmail);
|
|
190
|
+
authorization.view = _.uniq([...authorization.view, String(primaryUser.username ?? '')]);
|
|
191
|
+
RecordsService.provideUserAccessAndRemovePendingAccess(String(recordObj.redboxOid ?? ''), primaryUser.username, secondaryEmail);
|
|
192
|
+
changed = true;
|
|
193
|
+
}
|
|
194
|
+
if (changed) {
|
|
195
|
+
const metaMetadata = (recordObj.metaMetadata ?? {});
|
|
196
|
+
const brandId = String(metaMetadata.brandId ?? defaultBrandId ?? '');
|
|
197
|
+
const brand = !_.isEmpty(brandId) ? BrandingService.getBrandById(brandId) : BrandingService.getDefault();
|
|
198
|
+
await RecordsService.updateMeta(brand, String(recordObj.redboxOid ?? ''), recordObj, { username: actor }, false, false);
|
|
210
199
|
rewrittenCount++;
|
|
211
200
|
}
|
|
212
201
|
}
|
|
@@ -222,7 +211,7 @@ var Services;
|
|
|
222
211
|
return {
|
|
223
212
|
effectiveLoginDisabled: true,
|
|
224
213
|
disabledByPrimaryUserId: String(primaryUser.id ?? ''),
|
|
225
|
-
disabledByPrimaryUsername: String(primaryUser.username ?? '')
|
|
214
|
+
disabledByPrimaryUsername: String(primaryUser.username ?? '')
|
|
226
215
|
};
|
|
227
216
|
}
|
|
228
217
|
}
|
|
@@ -235,7 +224,7 @@ var Services;
|
|
|
235
224
|
}
|
|
236
225
|
}
|
|
237
226
|
async enrichUsersWithEffectiveDisabledState(users) {
|
|
238
|
-
const primaryIds = _.uniq(_.compact(_.map(users, (u) =>
|
|
227
|
+
const primaryIds = _.uniq(_.compact(_.map(users, (u) => !_.isEmpty(u.linkedPrimaryUserId) ? String(u.linkedPrimaryUserId) : null)));
|
|
239
228
|
const primaryUsers = _.isEmpty(primaryIds) ? [] : await User.find({ id: primaryIds });
|
|
240
229
|
const primaryUsersById = _.keyBy(primaryUsers, (u) => String(u.id ?? ''));
|
|
241
230
|
return _.map(users, (user) => {
|
|
@@ -284,7 +273,7 @@ var Services;
|
|
|
284
273
|
toAuditActor(user) {
|
|
285
274
|
const userObj = _.isObject(user) ? user : {};
|
|
286
275
|
const actor = {
|
|
287
|
-
username: String(userObj.username ?? '')
|
|
276
|
+
username: String(userObj.username ?? '')
|
|
288
277
|
};
|
|
289
278
|
if (!_.isEmpty(userObj.name)) {
|
|
290
279
|
actor.name = String(userObj.name);
|
|
@@ -306,10 +295,10 @@ var Services;
|
|
|
306
295
|
}
|
|
307
296
|
shouldRedactAuditKey(key) {
|
|
308
297
|
const normalizedKey = _.toLower(key);
|
|
309
|
-
return
|
|
310
|
-
normalizedKey === 'authorization'
|
|
311
|
-
normalizedKey.startsWith('x-forwarded-')
|
|
312
|
-
normalizedKey.includes('password')
|
|
298
|
+
return normalizedKey === 'cookie'
|
|
299
|
+
|| normalizedKey === 'authorization'
|
|
300
|
+
|| normalizedKey.startsWith('x-forwarded-')
|
|
301
|
+
|| normalizedKey.includes('password');
|
|
313
302
|
}
|
|
314
303
|
redactHeaderPairs(value) {
|
|
315
304
|
const redactedPairs = [...value];
|
|
@@ -333,9 +322,7 @@ var Services;
|
|
|
333
322
|
return _.mapValues(value, () => '[REDACTED]');
|
|
334
323
|
}
|
|
335
324
|
return _.reduce(value, (acc, nestedValue, nestedKey) => {
|
|
336
|
-
acc[nestedKey] = this.shouldRedactAuditKey(nestedKey)
|
|
337
|
-
? '[REDACTED]'
|
|
338
|
-
: this.redactAuditValue(nestedValue, nestedKey);
|
|
325
|
+
acc[nestedKey] = this.shouldRedactAuditKey(nestedKey) ? '[REDACTED]' : this.redactAuditValue(nestedValue, nestedKey);
|
|
339
326
|
return acc;
|
|
340
327
|
}, {});
|
|
341
328
|
}
|
|
@@ -349,12 +336,12 @@ var Services;
|
|
|
349
336
|
if (parseError) {
|
|
350
337
|
return {
|
|
351
338
|
parsedAdditionalContext: null,
|
|
352
|
-
rawAdditionalContext: rawAdditionalContext == null ? null : '[REDACTED_UNPARSEABLE_AUDIT_CONTEXT]'
|
|
339
|
+
rawAdditionalContext: rawAdditionalContext == null ? null : '[REDACTED_UNPARSEABLE_AUDIT_CONTEXT]'
|
|
353
340
|
};
|
|
354
341
|
}
|
|
355
342
|
return {
|
|
356
343
|
parsedAdditionalContext: redactedParsed,
|
|
357
|
-
rawAdditionalContext: redactedParsed == null ? null : JSON.stringify(redactedParsed)
|
|
344
|
+
rawAdditionalContext: redactedParsed == null ? null : JSON.stringify(redactedParsed)
|
|
358
345
|
};
|
|
359
346
|
}
|
|
360
347
|
parseUserAuditContext(action, additionalContext) {
|
|
@@ -363,7 +350,7 @@ var Services;
|
|
|
363
350
|
return {
|
|
364
351
|
parsedAdditionalContext: null,
|
|
365
352
|
rawAdditionalContext: null,
|
|
366
|
-
parseError: false
|
|
353
|
+
parseError: false
|
|
367
354
|
};
|
|
368
355
|
}
|
|
369
356
|
try {
|
|
@@ -372,7 +359,7 @@ var Services;
|
|
|
372
359
|
return {
|
|
373
360
|
parsedAdditionalContext: sanitized.parsedAdditionalContext,
|
|
374
361
|
rawAdditionalContext: sanitized.rawAdditionalContext,
|
|
375
|
-
parseError: false
|
|
362
|
+
parseError: false
|
|
376
363
|
};
|
|
377
364
|
}
|
|
378
365
|
catch (_error) {
|
|
@@ -380,7 +367,7 @@ var Services;
|
|
|
380
367
|
return {
|
|
381
368
|
parsedAdditionalContext: sanitized.parsedAdditionalContext,
|
|
382
369
|
rawAdditionalContext: sanitized.rawAdditionalContext,
|
|
383
|
-
parseError: true
|
|
370
|
+
parseError: true
|
|
384
371
|
};
|
|
385
372
|
}
|
|
386
373
|
}
|
|
@@ -405,7 +392,7 @@ var Services;
|
|
|
405
392
|
const rowUser = _.isObject(row.user) ? row.user : {};
|
|
406
393
|
const selectedUserId = String(selectedUser.id ?? '');
|
|
407
394
|
const selectedUsername = _.toLower(String(selectedUser.username ?? ''));
|
|
408
|
-
return
|
|
395
|
+
return String(rowUser.id ?? '') === selectedUserId || _.toLower(String(rowUser.username ?? '')) === selectedUsername;
|
|
409
396
|
}
|
|
410
397
|
matchesSelectedUserForAdminAudit(selectedUser, action, parsedAdditionalContext) {
|
|
411
398
|
if (!_.isPlainObject(parsedAdditionalContext)) {
|
|
@@ -417,8 +404,7 @@ var Services;
|
|
|
417
404
|
return String(context.userId ?? '') === selectedUserId;
|
|
418
405
|
}
|
|
419
406
|
if (action === 'link-accounts') {
|
|
420
|
-
return
|
|
421
|
-
String(context.secondaryUserId ?? '') === selectedUserId);
|
|
407
|
+
return String(context.primaryUserId ?? '') === selectedUserId || String(context.secondaryUserId ?? '') === selectedUserId;
|
|
422
408
|
}
|
|
423
409
|
return false;
|
|
424
410
|
}
|
|
@@ -460,7 +446,7 @@ var Services;
|
|
|
460
446
|
details: this.getUserAuditDetails(selectedUser, action, parsedContext.parsedAdditionalContext),
|
|
461
447
|
parsedAdditionalContext: parsedContext.parsedAdditionalContext,
|
|
462
448
|
rawAdditionalContext: parsedContext.rawAdditionalContext,
|
|
463
|
-
parseError: parsedContext.parseError
|
|
449
|
+
parseError: parsedContext.parseError
|
|
464
450
|
};
|
|
465
451
|
}
|
|
466
452
|
async fetchDirectUserAuditRows(selectedUser) {
|
|
@@ -468,9 +454,12 @@ var Services;
|
|
|
468
454
|
try {
|
|
469
455
|
const rows = await UserAudit.find({
|
|
470
456
|
action: directAuditActions,
|
|
471
|
-
or: [
|
|
457
|
+
or: [
|
|
458
|
+
{ 'user.id': String(selectedUser.id ?? '') },
|
|
459
|
+
{ 'user.username': String(selectedUser.username ?? '') }
|
|
460
|
+
]
|
|
472
461
|
}).meta({
|
|
473
|
-
enableExperimentalDeepTargets: true
|
|
462
|
+
enableExperimentalDeepTargets: true
|
|
474
463
|
});
|
|
475
464
|
return rows;
|
|
476
465
|
}
|
|
@@ -490,22 +479,22 @@ var Services;
|
|
|
490
479
|
const adminAuditContextFilters = [
|
|
491
480
|
`"userId":${JSON.stringify(selectedUserId)}`,
|
|
492
481
|
`"primaryUserId":${JSON.stringify(selectedUserId)}`,
|
|
493
|
-
`"secondaryUserId":${JSON.stringify(selectedUserId)}
|
|
482
|
+
`"secondaryUserId":${JSON.stringify(selectedUserId)}`
|
|
494
483
|
];
|
|
495
484
|
const directRows = await this.fetchDirectUserAuditRows(selectedUserRecord);
|
|
496
|
-
const adminRows =
|
|
485
|
+
const adminRows = await UserAudit.find({
|
|
497
486
|
action: ['disable-user', 'enable-user', 'link-accounts'],
|
|
498
487
|
or: _.map(adminAuditContextFilters, (contextFilter) => ({
|
|
499
|
-
additionalContext: { contains: contextFilter }
|
|
500
|
-
}))
|
|
501
|
-
})
|
|
488
|
+
additionalContext: { contains: contextFilter }
|
|
489
|
+
}))
|
|
490
|
+
});
|
|
502
491
|
const matchingDirectRows = _.filter(directRows, (row) => this.matchesSelectedUserForDirectAudit(selectedUserRecord, row));
|
|
503
492
|
const matchingAdminRows = _.chain(adminRows)
|
|
504
493
|
.map((row) => {
|
|
505
494
|
const auditContext = this.parseUserAuditContext(String(row.action ?? ''), row.additionalContext);
|
|
506
495
|
return {
|
|
507
496
|
...row,
|
|
508
|
-
auditContext
|
|
497
|
+
auditContext
|
|
509
498
|
};
|
|
510
499
|
})
|
|
511
500
|
.filter((row) => {
|
|
@@ -521,8 +510,8 @@ var Services;
|
|
|
521
510
|
records: _.map(limitedRows, (row) => this.normalizeUserAuditRecord(selectedUserRecord, row)),
|
|
522
511
|
summary: {
|
|
523
512
|
returnedCount: limitedRows.length,
|
|
524
|
-
truncated
|
|
525
|
-
}
|
|
513
|
+
truncated
|
|
514
|
+
}
|
|
526
515
|
};
|
|
527
516
|
}
|
|
528
517
|
localAuthInit() {
|
|
@@ -550,17 +539,14 @@ var Services;
|
|
|
550
539
|
});
|
|
551
540
|
passport.deserializeUser(function (id, done) {
|
|
552
541
|
User.findOne({
|
|
553
|
-
id: id
|
|
554
|
-
})
|
|
555
|
-
.populate('roles')
|
|
556
|
-
.exec(function (err, user) {
|
|
542
|
+
id: id
|
|
543
|
+
}).populate('roles').exec(function (err, user) {
|
|
557
544
|
if (err != null || _.isEmpty(user)) {
|
|
558
545
|
done(err, user);
|
|
559
546
|
return;
|
|
560
547
|
}
|
|
561
|
-
that
|
|
562
|
-
.
|
|
563
|
-
.then(resolvedUser => done(null, resolvedUser))
|
|
548
|
+
that.resolveLinkedUserCandidate(user)
|
|
549
|
+
.then((resolvedUser) => done(null, resolvedUser))
|
|
564
550
|
.catch((resolveErr) => done(resolveErr));
|
|
565
551
|
});
|
|
566
552
|
});
|
|
@@ -569,19 +555,17 @@ var Services;
|
|
|
569
555
|
//
|
|
570
556
|
passport.use('local', new LocalStrategy({
|
|
571
557
|
usernameField: usernameField,
|
|
572
|
-
passwordField: passwordField
|
|
558
|
+
passwordField: passwordField
|
|
573
559
|
}, function (username, password, done) {
|
|
574
560
|
User.findOne({
|
|
575
|
-
username: username
|
|
576
|
-
})
|
|
577
|
-
.populate('roles')
|
|
578
|
-
.exec(function (err, foundUser) {
|
|
561
|
+
username: username
|
|
562
|
+
}).populate('roles').exec(function (err, foundUser) {
|
|
579
563
|
if (err) {
|
|
580
564
|
return done(err);
|
|
581
565
|
}
|
|
582
566
|
if (!foundUser) {
|
|
583
567
|
return done(null, false, {
|
|
584
|
-
message: 'Incorrect username/password'
|
|
568
|
+
message: 'Incorrect username/password'
|
|
585
569
|
});
|
|
586
570
|
}
|
|
587
571
|
const foundUserObj = foundUser;
|
|
@@ -589,13 +573,11 @@ var Services;
|
|
|
589
573
|
bcrypt.compare(password, passwordHash, function (err, res) {
|
|
590
574
|
if (!res) {
|
|
591
575
|
return done(null, false, {
|
|
592
|
-
message: 'Incorrect username/password'
|
|
576
|
+
message: 'Incorrect username/password'
|
|
593
577
|
});
|
|
594
578
|
}
|
|
595
579
|
// Gate disabled users
|
|
596
|
-
that
|
|
597
|
-
.assertAuthenticationAllowed(foundUserObj)
|
|
598
|
-
.then(() => {
|
|
580
|
+
that.assertAuthenticationAllowed(foundUserObj).then(() => {
|
|
599
581
|
// foundUser.lastLogin = new Date();
|
|
600
582
|
const configLocal = _.get(defAuthConfig, 'local', {});
|
|
601
583
|
if (that.hasPreSaveTriggerConfigured(configLocal, 'onUpdate')) {
|
|
@@ -603,23 +585,21 @@ var Services;
|
|
|
603
585
|
const success = that.checkAllTriggersSuccessOrFailure(userAdditionalInfo);
|
|
604
586
|
if (success) {
|
|
605
587
|
User.update({
|
|
606
|
-
username: username
|
|
607
|
-
})
|
|
608
|
-
.set({
|
|
588
|
+
username: username
|
|
589
|
+
}).set({
|
|
609
590
|
lastLogin: new Date(),
|
|
610
|
-
additionalAttributes: _.get(userAdditionalInfo, 'additionalAttributes')
|
|
611
|
-
})
|
|
612
|
-
.exec(function (err, user) {
|
|
591
|
+
additionalAttributes: _.get(userAdditionalInfo, 'additionalAttributes')
|
|
592
|
+
}).exec(function (err, user) {
|
|
613
593
|
if (err) {
|
|
614
|
-
sails.log.error(
|
|
594
|
+
sails.log.error("Error updating user:");
|
|
615
595
|
sails.log.error(err);
|
|
616
596
|
return;
|
|
617
597
|
}
|
|
618
598
|
if (_.isEmpty(user)) {
|
|
619
|
-
sails.log.error(
|
|
599
|
+
sails.log.error("No user found");
|
|
620
600
|
return;
|
|
621
601
|
}
|
|
622
|
-
sails.log.verbose(
|
|
602
|
+
sails.log.verbose("Done, returning updated user:");
|
|
623
603
|
sails.log.verbose(user);
|
|
624
604
|
return;
|
|
625
605
|
});
|
|
@@ -630,32 +610,30 @@ var Services;
|
|
|
630
610
|
that.triggerPostSaveSyncTriggers(foundUserObj, configLocal);
|
|
631
611
|
}
|
|
632
612
|
return done(null, userAdditionalInfo, {
|
|
633
|
-
message: 'Logged In Successfully'
|
|
613
|
+
message: 'Logged In Successfully'
|
|
634
614
|
});
|
|
635
615
|
}
|
|
636
616
|
else {
|
|
637
617
|
return done(null, false, {
|
|
638
|
-
message: 'All required conditions for login not met'
|
|
618
|
+
message: 'All required conditions for login not met'
|
|
639
619
|
});
|
|
640
620
|
}
|
|
641
621
|
});
|
|
642
622
|
}
|
|
643
623
|
else {
|
|
644
624
|
User.update({
|
|
645
|
-
username: username
|
|
646
|
-
})
|
|
647
|
-
.set({ lastLogin: new Date() })
|
|
648
|
-
.exec(function (err, user) {
|
|
625
|
+
username: username
|
|
626
|
+
}).set({ lastLogin: new Date() }).exec(function (err, user) {
|
|
649
627
|
if (err) {
|
|
650
|
-
sails.log.error(
|
|
628
|
+
sails.log.error("Error updating user:");
|
|
651
629
|
sails.log.error(err);
|
|
652
630
|
return;
|
|
653
631
|
}
|
|
654
632
|
if (_.isEmpty(user)) {
|
|
655
|
-
sails.log.error(
|
|
633
|
+
sails.log.error("No user found");
|
|
656
634
|
return;
|
|
657
635
|
}
|
|
658
|
-
sails.log.verbose(
|
|
636
|
+
sails.log.verbose("Done, returning updated user:");
|
|
659
637
|
sails.log.verbose(user);
|
|
660
638
|
return;
|
|
661
639
|
});
|
|
@@ -666,11 +644,10 @@ var Services;
|
|
|
666
644
|
that.triggerPostSaveSyncTriggers(foundUserObj, configLocal);
|
|
667
645
|
}
|
|
668
646
|
return done(null, foundUserObj, {
|
|
669
|
-
message: 'Logged In Successfully'
|
|
647
|
+
message: 'Logged In Successfully'
|
|
670
648
|
});
|
|
671
649
|
}
|
|
672
|
-
})
|
|
673
|
-
.catch((err) => {
|
|
650
|
+
}).catch((err) => {
|
|
674
651
|
if (err instanceof Error && err.message === 'Account is disabled') {
|
|
675
652
|
return done(null, false, { message: 'Account is disabled' });
|
|
676
653
|
}
|
|
@@ -731,7 +708,7 @@ var Services;
|
|
|
731
708
|
}
|
|
732
709
|
//Post login and pre update/create user
|
|
733
710
|
async triggerPreSaveTriggers(user, config, mode = 'onUpdate') {
|
|
734
|
-
sails.log.verbose(
|
|
711
|
+
sails.log.verbose("Triggering pre save triggers for user login: ");
|
|
735
712
|
sails.log.verbose(`hooks.${mode}.pre`);
|
|
736
713
|
sails.log.verbose(JSON.stringify(config));
|
|
737
714
|
const preSaveUpdateHooks = _.get(config, `hooks.${mode}.pre`, null);
|
|
@@ -750,7 +727,7 @@ var Services;
|
|
|
750
727
|
}
|
|
751
728
|
sails.log.verbose(`Triggering pre save triggers: ${preSaveUpdateHookFunctionString} failureMode ${failureMode}`);
|
|
752
729
|
const hookResponse = preSaveUpdateHookFunction(user, options, failureMode);
|
|
753
|
-
user =
|
|
730
|
+
user = await this.resolveHookResponse(hookResponse);
|
|
754
731
|
sails.log.debug(`${preSaveUpdateHookFunctionString} response now is:`);
|
|
755
732
|
try {
|
|
756
733
|
sails.log.verbose(JSON.stringify(user));
|
|
@@ -772,7 +749,7 @@ var Services;
|
|
|
772
749
|
}
|
|
773
750
|
//Post login and post update/create user sync
|
|
774
751
|
async triggerPostSaveSyncTriggers(user, config, mode = 'onUpdate', response = {}) {
|
|
775
|
-
sails.log.verbose(
|
|
752
|
+
sails.log.verbose("Triggering post save sync triggers ");
|
|
776
753
|
sails.log.verbose(`hooks.${mode}.postSync`);
|
|
777
754
|
sails.log.verbose(JSON.stringify(config));
|
|
778
755
|
const postSaveSyncHooks = _.get(config, `hooks.${mode}.postSync`, null);
|
|
@@ -780,10 +757,10 @@ var Services;
|
|
|
780
757
|
for (let i = 0; i < postSaveSyncHooks.length; i++) {
|
|
781
758
|
const postSaveSyncHook = postSaveSyncHooks[i];
|
|
782
759
|
sails.log.debug(postSaveSyncHooks);
|
|
783
|
-
const postSaveSyncHooksFunctionString = _.get(postSaveSyncHook,
|
|
760
|
+
const postSaveSyncHooksFunctionString = _.get(postSaveSyncHook, "function", null);
|
|
784
761
|
if (postSaveSyncHooksFunctionString != null) {
|
|
785
762
|
const postSaveSyncHookFunction = eval(postSaveSyncHooksFunctionString);
|
|
786
|
-
const options = _.get(postSaveSyncHook,
|
|
763
|
+
const options = _.get(postSaveSyncHook, "options", {});
|
|
787
764
|
if (_.isFunction(postSaveSyncHookFunction)) {
|
|
788
765
|
try {
|
|
789
766
|
sails.log.debug(`Triggering post-save sync trigger: ${postSaveSyncHooksFunctionString}`);
|
|
@@ -810,24 +787,22 @@ var Services;
|
|
|
810
787
|
}
|
|
811
788
|
//Post login and post update/create user
|
|
812
789
|
triggerPostSaveTriggers(user, config, mode = 'onUpdate') {
|
|
813
|
-
sails.log.verbose(
|
|
790
|
+
sails.log.verbose("Triggering post save triggers ");
|
|
814
791
|
sails.log.verbose(`hooks.${mode}.post`);
|
|
815
792
|
sails.log.verbose(JSON.stringify(config));
|
|
816
793
|
const postSaveCreateHooks = _.get(config, `hooks.${mode}.post`, null);
|
|
817
794
|
if (_.isArray(postSaveCreateHooks)) {
|
|
818
795
|
_.each(postSaveCreateHooks, (postSaveCreateHook) => {
|
|
819
796
|
sails.log.debug(postSaveCreateHook);
|
|
820
|
-
const postSaveCreateHookFunctionString = _.get(postSaveCreateHook,
|
|
797
|
+
const postSaveCreateHookFunctionString = _.get(postSaveCreateHook, "function", null);
|
|
821
798
|
if (postSaveCreateHookFunctionString != null) {
|
|
822
799
|
const postSaveCreateHookFunction = eval(postSaveCreateHookFunctionString);
|
|
823
|
-
const options = _.get(postSaveCreateHook,
|
|
800
|
+
const options = _.get(postSaveCreateHook, "options", {});
|
|
824
801
|
if (_.isFunction(postSaveCreateHookFunction)) {
|
|
825
802
|
const hookResponse = postSaveCreateHookFunction(user, options);
|
|
826
|
-
this.resolveHookResponse(hookResponse)
|
|
827
|
-
.then(_result => {
|
|
803
|
+
this.resolveHookResponse(hookResponse).then(_result => {
|
|
828
804
|
sails.log.debug(`post-save trigger ${postSaveCreateHookFunctionString} completed for user: ${_.get(user, 'username')}`);
|
|
829
|
-
})
|
|
830
|
-
.catch(error => {
|
|
805
|
+
}).catch(error => {
|
|
831
806
|
sails.log.error(`post-save trigger ${postSaveCreateHookFunctionString} failed to complete`);
|
|
832
807
|
sails.log.error(error);
|
|
833
808
|
});
|
|
@@ -889,7 +864,7 @@ var Services;
|
|
|
889
864
|
const aafUsername = String(jwt_payload[aafUsernameField] ?? '');
|
|
890
865
|
const userName = Buffer.from(aafUsername).toString('base64');
|
|
891
866
|
User.findOne({
|
|
892
|
-
username: userName
|
|
867
|
+
username: userName
|
|
893
868
|
}, function (err, user) {
|
|
894
869
|
sails.log.verbose(`At AAF Strategy verify for brand "${brandName}" using username "${aafUsername}"`);
|
|
895
870
|
sails.log.verbose(`AAF resolved attributes field "${aafAttributes}"`);
|
|
@@ -901,24 +876,16 @@ var Services;
|
|
|
901
876
|
if (user) {
|
|
902
877
|
const userObj = user;
|
|
903
878
|
// Gate disabled users
|
|
904
|
-
that
|
|
905
|
-
.assertAuthenticationAllowed(userObj)
|
|
906
|
-
.then(() => {
|
|
879
|
+
that.assertAuthenticationAllowed(userObj).then(() => {
|
|
907
880
|
const attrs = (jwt_payload[aafAttributes] ?? {});
|
|
908
881
|
userObj.lastLogin = new Date();
|
|
909
882
|
userObj.name = String(attrs.cn ?? '');
|
|
910
883
|
userObj.email = String(attrs.mail ?? '').toLowerCase();
|
|
911
884
|
userObj.displayname = _.isNil(attrs.displayname) ? undefined : String(attrs.displayname);
|
|
912
885
|
userObj.cn = _.isNil(attrs.cn) ? undefined : String(attrs.cn);
|
|
913
|
-
userObj.edupersonscopedaffiliation = _.isNil(attrs.edupersonscopedaffiliation)
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
userObj.edupersontargetedid = _.isNil(attrs.edupersontargetedid)
|
|
917
|
-
? undefined
|
|
918
|
-
: String(attrs.edupersontargetedid);
|
|
919
|
-
userObj.edupersonprincipalname = _.isNil(attrs.edupersonprincipalname)
|
|
920
|
-
? undefined
|
|
921
|
-
: String(attrs.edupersonprincipalname);
|
|
886
|
+
userObj.edupersonscopedaffiliation = _.isNil(attrs.edupersonscopedaffiliation) ? undefined : String(attrs.edupersonscopedaffiliation);
|
|
887
|
+
userObj.edupersontargetedid = _.isNil(attrs.edupersontargetedid) ? undefined : String(attrs.edupersontargetedid);
|
|
888
|
+
userObj.edupersonprincipalname = _.isNil(attrs.edupersonprincipalname) ? undefined : String(attrs.edupersonprincipalname);
|
|
922
889
|
userObj.givenname = _.isNil(attrs.givenname) ? undefined : String(attrs.givenname);
|
|
923
890
|
userObj.surname = _.isNil(attrs.surname) ? undefined : String(attrs.surname);
|
|
924
891
|
const configAAF = _.get(defAuthConfig, 'aaf', {});
|
|
@@ -927,18 +894,16 @@ var Services;
|
|
|
927
894
|
const success = that.checkAllTriggersSuccessOrFailure(userAdditionalInfo);
|
|
928
895
|
if (success) {
|
|
929
896
|
User.update({
|
|
930
|
-
username: _.get(userAdditionalInfo, 'username')
|
|
931
|
-
})
|
|
932
|
-
.set(userAdditionalInfo)
|
|
933
|
-
.exec(function (err, user) {
|
|
897
|
+
username: _.get(userAdditionalInfo, 'username')
|
|
898
|
+
}).set(userAdditionalInfo).exec(function (err, user) {
|
|
934
899
|
if (err) {
|
|
935
|
-
sails.log.error(
|
|
900
|
+
sails.log.error("Error updating user:");
|
|
936
901
|
sails.log.error(err);
|
|
937
|
-
return done(err, false, { message:
|
|
902
|
+
return done(err, false, { message: "Error updating user" });
|
|
938
903
|
}
|
|
939
904
|
if (_.isEmpty(user)) {
|
|
940
|
-
sails.log.error(
|
|
941
|
-
return done(
|
|
905
|
+
sails.log.error("No user found");
|
|
906
|
+
return done("No user found", false, { message: "No user found" });
|
|
942
907
|
}
|
|
943
908
|
if (that.hasPostSaveTriggerConfigured(configAAF, 'onUpdate')) {
|
|
944
909
|
that.triggerPostSaveTriggers(user, configAAF);
|
|
@@ -946,39 +911,34 @@ var Services;
|
|
|
946
911
|
if (that.hasPostSaveSyncTriggerConfigured(configAAF, 'onUpdate')) {
|
|
947
912
|
that.triggerPostSaveSyncTriggers(user, configAAF);
|
|
948
913
|
}
|
|
949
|
-
sails.log.verbose(
|
|
914
|
+
sails.log.verbose("Done, returning updated user:");
|
|
950
915
|
sails.log.verbose(user);
|
|
951
916
|
const updatedUsers = user;
|
|
952
|
-
that
|
|
953
|
-
.
|
|
954
|
-
|
|
955
|
-
message: 'Logged In Successfully',
|
|
917
|
+
that.resolveLinkedUserCandidate(updatedUsers[0])
|
|
918
|
+
.then((resolvedUser) => done(null, resolvedUser, {
|
|
919
|
+
message: 'Logged In Successfully'
|
|
956
920
|
}))
|
|
957
921
|
.catch((resolveErr) => done(resolveErr, false));
|
|
958
922
|
return;
|
|
959
923
|
});
|
|
960
924
|
}
|
|
961
925
|
else {
|
|
962
|
-
return done('All required conditions for login not met', false, {
|
|
963
|
-
message: 'All required conditions for login not met',
|
|
964
|
-
});
|
|
926
|
+
return done('All required conditions for login not met', false, { message: 'All required conditions for login not met' });
|
|
965
927
|
}
|
|
966
928
|
});
|
|
967
929
|
}
|
|
968
930
|
else {
|
|
969
931
|
User.update({
|
|
970
|
-
username: userObj.username
|
|
971
|
-
})
|
|
972
|
-
.set(userObj)
|
|
973
|
-
.exec(function (err, user) {
|
|
932
|
+
username: userObj.username
|
|
933
|
+
}).set(userObj).exec(function (err, user) {
|
|
974
934
|
if (err) {
|
|
975
|
-
sails.log.error(
|
|
935
|
+
sails.log.error("Error updating user:");
|
|
976
936
|
sails.log.error(err);
|
|
977
|
-
return done(err, false, { message:
|
|
937
|
+
return done(err, false, { message: "Error updating user" });
|
|
978
938
|
}
|
|
979
939
|
if (_.isEmpty(user)) {
|
|
980
|
-
sails.log.error(
|
|
981
|
-
return done(
|
|
940
|
+
sails.log.error("No user found");
|
|
941
|
+
return done("No user found", false, { message: "No user found" });
|
|
982
942
|
}
|
|
983
943
|
if (that.hasPostSaveTriggerConfigured(configAAF, 'onUpdate')) {
|
|
984
944
|
that.triggerPostSaveTriggers(user, configAAF);
|
|
@@ -986,20 +946,18 @@ var Services;
|
|
|
986
946
|
if (that.hasPostSaveSyncTriggerConfigured(configAAF, 'onUpdate')) {
|
|
987
947
|
that.triggerPostSaveSyncTriggers(user, configAAF);
|
|
988
948
|
}
|
|
989
|
-
sails.log.verbose(
|
|
949
|
+
sails.log.verbose("Done, returning updated user:");
|
|
990
950
|
sails.log.verbose(user);
|
|
991
951
|
const updatedUsers = user;
|
|
992
|
-
that
|
|
993
|
-
.
|
|
994
|
-
|
|
995
|
-
message: 'Logged In Successfully',
|
|
952
|
+
that.resolveLinkedUserCandidate(updatedUsers[0])
|
|
953
|
+
.then((resolvedUser) => done(null, resolvedUser, {
|
|
954
|
+
message: 'Logged In Successfully'
|
|
996
955
|
}))
|
|
997
956
|
.catch((resolveErr) => done(resolveErr, false));
|
|
998
957
|
return;
|
|
999
958
|
});
|
|
1000
959
|
}
|
|
1001
|
-
})
|
|
1002
|
-
.catch((err) => {
|
|
960
|
+
}).catch((err) => {
|
|
1003
961
|
if (err instanceof Error && err.message === 'Account is disabled') {
|
|
1004
962
|
return done(null, false, { message: 'Account is disabled' });
|
|
1005
963
|
}
|
|
@@ -1007,31 +965,22 @@ var Services;
|
|
|
1007
965
|
}); // end AAF disabled gate
|
|
1008
966
|
}
|
|
1009
967
|
else {
|
|
1010
|
-
sails.log.verbose(
|
|
968
|
+
sails.log.verbose("At AAF Strategy verify, creating new user...");
|
|
1011
969
|
// first time login, create with default role
|
|
1012
970
|
const attrs = (jwt_payload[aafAttributes] ?? {});
|
|
1013
971
|
const normalizedUsername = String(userName);
|
|
1014
972
|
const normalizedEmail = String(attrs.mail ?? '').toLowerCase();
|
|
1015
973
|
const normalizedCn = _.isNil(attrs.cn) ? undefined : String(attrs.cn);
|
|
1016
974
|
const normalizedDisplayName = _.isNil(attrs.displayname) ? undefined : String(attrs.displayname);
|
|
1017
|
-
const normalizedEduPersonScopedAffiliation = _.isNil(attrs.edupersonscopedaffiliation)
|
|
1018
|
-
|
|
1019
|
-
|
|
1020
|
-
const normalizedEduPersonTargetedId = _.isNil(attrs.edupersontargetedid)
|
|
1021
|
-
? undefined
|
|
1022
|
-
: String(attrs.edupersontargetedid);
|
|
1023
|
-
const normalizedEduPersonPrincipalName = _.isNil(attrs.edupersonprincipalname)
|
|
1024
|
-
? undefined
|
|
1025
|
-
: String(attrs.edupersonprincipalname);
|
|
975
|
+
const normalizedEduPersonScopedAffiliation = _.isNil(attrs.edupersonscopedaffiliation) ? undefined : String(attrs.edupersonscopedaffiliation);
|
|
976
|
+
const normalizedEduPersonTargetedId = _.isNil(attrs.edupersontargetedid) ? undefined : String(attrs.edupersontargetedid);
|
|
977
|
+
const normalizedEduPersonPrincipalName = _.isNil(attrs.edupersonprincipalname) ? undefined : String(attrs.edupersonprincipalname);
|
|
1026
978
|
const normalizedGivenName = _.isNil(attrs.givenname) ? undefined : String(attrs.givenname);
|
|
1027
979
|
const normalizedSurname = _.isNil(attrs.surname) ? undefined : String(attrs.surname);
|
|
1028
980
|
const normalizedFullName = [normalizedGivenName, normalizedSurname]
|
|
1029
981
|
.filter((value) => !_.isNil(value) && value.trim().length > 0)
|
|
1030
982
|
.join(' ');
|
|
1031
|
-
const normalizedName = normalizedCn ??
|
|
1032
|
-
normalizedDisplayName ??
|
|
1033
|
-
(normalizedFullName.length > 0 ? normalizedFullName : undefined) ??
|
|
1034
|
-
normalizedUsername;
|
|
983
|
+
const normalizedName = normalizedCn ?? normalizedDisplayName ?? (normalizedFullName.length > 0 ? normalizedFullName : undefined) ?? normalizedUsername;
|
|
1035
984
|
let userToCreate = {
|
|
1036
985
|
username: normalizedUsername,
|
|
1037
986
|
name: normalizedName,
|
|
@@ -1045,24 +994,22 @@ var Services;
|
|
|
1045
994
|
surname: normalizedSurname,
|
|
1046
995
|
type: 'aaf',
|
|
1047
996
|
roles: aafDefRoles,
|
|
1048
|
-
lastLogin: new Date()
|
|
997
|
+
lastLogin: new Date()
|
|
1049
998
|
};
|
|
1050
999
|
sails.log.verbose(`AAF prepared user create request for brand "${brandName}" and username "${aafUsername}"`);
|
|
1051
1000
|
const emailAuthorizedCheck = that.checkAuthorizedEmail(String(userToCreate.email ?? ''), brandName, 'aaf');
|
|
1052
1001
|
if (!emailAuthorizedCheck) {
|
|
1053
|
-
return done(
|
|
1002
|
+
return done("authorized-email-denied", false);
|
|
1054
1003
|
}
|
|
1055
1004
|
const configAAF = _.get(defAuthConfig, 'aaf', {});
|
|
1056
1005
|
if (that.hasPreSaveTriggerConfigured(configAAF, 'onCreate')) {
|
|
1057
|
-
that
|
|
1058
|
-
.triggerPreSaveTriggers(userToCreate, configAAF, 'onCreate')
|
|
1059
|
-
.then((userAdditionalInfo) => {
|
|
1006
|
+
that.triggerPreSaveTriggers(userToCreate, configAAF, 'onCreate').then((userAdditionalInfo) => {
|
|
1060
1007
|
const success = that.checkAllTriggersSuccessOrFailure(userAdditionalInfo);
|
|
1061
1008
|
if (success) {
|
|
1062
1009
|
userToCreate = userAdditionalInfo;
|
|
1063
1010
|
User.create(userToCreate).exec(function (err, newUser) {
|
|
1064
1011
|
if (err) {
|
|
1065
|
-
sails.log.error(
|
|
1012
|
+
sails.log.error("Error creating new user:");
|
|
1066
1013
|
sails.log.error(err);
|
|
1067
1014
|
return done(err, false);
|
|
1068
1015
|
}
|
|
@@ -1072,11 +1019,10 @@ var Services;
|
|
|
1072
1019
|
if (that.hasPostSaveSyncTriggerConfigured(configAAF, 'onCreate')) {
|
|
1073
1020
|
that.triggerPostSaveSyncTriggers(newUser, configAAF, 'onCreate');
|
|
1074
1021
|
}
|
|
1075
|
-
sails.log.verbose(
|
|
1022
|
+
sails.log.verbose("Done, returning new user:");
|
|
1076
1023
|
sails.log.verbose(newUser);
|
|
1077
|
-
that
|
|
1078
|
-
.
|
|
1079
|
-
.then(resolvedUser => done(null, resolvedUser))
|
|
1024
|
+
that.resolveLinkedUserCandidate(newUser)
|
|
1025
|
+
.then((resolvedUser) => done(null, resolvedUser))
|
|
1080
1026
|
.catch((resolveErr) => done(resolveErr, false));
|
|
1081
1027
|
return;
|
|
1082
1028
|
});
|
|
@@ -1089,7 +1035,7 @@ var Services;
|
|
|
1089
1035
|
else {
|
|
1090
1036
|
User.create(userToCreate).exec(function (err, newUser) {
|
|
1091
1037
|
if (err) {
|
|
1092
|
-
sails.log.error(
|
|
1038
|
+
sails.log.error("Error creating new user:");
|
|
1093
1039
|
sails.log.error(err);
|
|
1094
1040
|
return done(err, false);
|
|
1095
1041
|
}
|
|
@@ -1099,11 +1045,10 @@ var Services;
|
|
|
1099
1045
|
if (that.hasPostSaveSyncTriggerConfigured(configAAF, 'onCreate')) {
|
|
1100
1046
|
that.triggerPostSaveSyncTriggers(newUser, configAAF, 'onCreate');
|
|
1101
1047
|
}
|
|
1102
|
-
sails.log.verbose(
|
|
1048
|
+
sails.log.verbose("Done, returning new user:");
|
|
1103
1049
|
sails.log.verbose(newUser);
|
|
1104
|
-
that
|
|
1105
|
-
.
|
|
1106
|
-
.then(resolvedUser => done(null, resolvedUser))
|
|
1050
|
+
that.resolveLinkedUserCandidate(newUser)
|
|
1051
|
+
.then((resolvedUser) => done(null, resolvedUser))
|
|
1107
1052
|
.catch((resolveErr) => done(resolveErr, false));
|
|
1108
1053
|
return;
|
|
1109
1054
|
});
|
|
@@ -1187,7 +1132,7 @@ var Services;
|
|
|
1187
1132
|
}
|
|
1188
1133
|
const strategyOptions = {
|
|
1189
1134
|
config: oidcClientConfig,
|
|
1190
|
-
passReqToCallback: true
|
|
1135
|
+
passReqToCallback: true
|
|
1191
1136
|
};
|
|
1192
1137
|
const callbackUrl = _.get(clientMetadata, 'redirect_uris[0]');
|
|
1193
1138
|
if (_.isString(callbackUrl) && !_.isEmpty(callbackUrl)) {
|
|
@@ -1260,11 +1205,11 @@ var Services;
|
|
|
1260
1205
|
userinfo = tokenClaims;
|
|
1261
1206
|
}
|
|
1262
1207
|
if (oidcConfig.debugMode === true) {
|
|
1263
|
-
sails.log.info(
|
|
1208
|
+
sails.log.info("OIDC debug mode is active, intentionally failing the login, and redirecting to failure page with all details of this login attempt.");
|
|
1264
1209
|
const err = {
|
|
1265
1210
|
userinfo: userinfo,
|
|
1266
1211
|
claims: tokenClaims,
|
|
1267
|
-
tokenSet: tokenSet
|
|
1212
|
+
tokenSet: tokenSet
|
|
1268
1213
|
};
|
|
1269
1214
|
session.errorTextRaw = JSON.stringify(err, null, 2);
|
|
1270
1215
|
return done(null, false);
|
|
@@ -1279,10 +1224,10 @@ var Services;
|
|
|
1279
1224
|
if (!_.isUndefined(claimsMappingOptions) && !_.isEmpty(claimsMappingOptions)) {
|
|
1280
1225
|
usernameToLowercase = !!claimsMappingOptions['usernameToLowercase'];
|
|
1281
1226
|
}
|
|
1282
|
-
sails.log.verbose(
|
|
1227
|
+
sails.log.verbose("usernameToLowercase " + usernameToLowercase);
|
|
1283
1228
|
if (usernameToLowercase) {
|
|
1284
1229
|
userName = tmpUserName.toLowerCase();
|
|
1285
|
-
sails.log.verbose(
|
|
1230
|
+
sails.log.verbose("usernameToLowercase " + userName);
|
|
1286
1231
|
}
|
|
1287
1232
|
else {
|
|
1288
1233
|
userName = tmpUserName;
|
|
@@ -1294,17 +1239,17 @@ var Services;
|
|
|
1294
1239
|
// This can occur when the claim mappings are incorrect or a login was cancelled
|
|
1295
1240
|
if (_.isEmpty(userName)) {
|
|
1296
1241
|
return done(null, null, {
|
|
1297
|
-
message: 'Rejected as username does not have a value'
|
|
1242
|
+
message: 'Rejected as username does not have a value'
|
|
1298
1243
|
});
|
|
1299
1244
|
}
|
|
1300
1245
|
User.findOne({
|
|
1301
|
-
username: userName
|
|
1246
|
+
username: userName
|
|
1302
1247
|
}, function (err, user) {
|
|
1303
|
-
sails.log.verbose(
|
|
1248
|
+
sails.log.verbose("At OIDC Strategy verify, payload:");
|
|
1304
1249
|
sails.log.verbose((0, RedactionUtils_1.redactObject)(userinfo));
|
|
1305
|
-
sails.log.verbose(
|
|
1250
|
+
sails.log.verbose("User:");
|
|
1306
1251
|
sails.log.verbose(user);
|
|
1307
|
-
sails.log.verbose(
|
|
1252
|
+
sails.log.verbose("Error:");
|
|
1308
1253
|
sails.log.verbose(err);
|
|
1309
1254
|
if (err) {
|
|
1310
1255
|
return done(err, false);
|
|
@@ -1312,10 +1257,8 @@ var Services;
|
|
|
1312
1257
|
if (user) {
|
|
1313
1258
|
const userObj = user;
|
|
1314
1259
|
// Gate disabled users
|
|
1315
|
-
that
|
|
1316
|
-
.
|
|
1317
|
-
.then(() => {
|
|
1318
|
-
sails.log.error('At OIDC Strategy verify, updating new user...');
|
|
1260
|
+
that.assertAuthenticationAllowed(userObj).then(() => {
|
|
1261
|
+
sails.log.error("At OIDC Strategy verify, updating new user...");
|
|
1319
1262
|
userObj.lastLogin = new Date();
|
|
1320
1263
|
const additionalAttributesMapping = claimsMappings['additionalAttributes'];
|
|
1321
1264
|
userObj.additionalAttributes = that.mapAdditionalAttributes(userinfo, (typeof additionalAttributesMapping === 'object' && additionalAttributesMapping != null
|
|
@@ -1332,24 +1275,20 @@ var Services;
|
|
|
1332
1275
|
userObj.givenname = _.isNil(givenName) ? undefined : String(givenName);
|
|
1333
1276
|
userObj.surname = _.isNil(surname) ? undefined : String(surname);
|
|
1334
1277
|
if (that.hasPreSaveTriggerConfigured(oidcConfig, 'onUpdate')) {
|
|
1335
|
-
that
|
|
1336
|
-
.triggerPreSaveTriggers(userObj, oidcConfig)
|
|
1337
|
-
.then((userAdditionalInfo) => {
|
|
1278
|
+
that.triggerPreSaveTriggers(userObj, oidcConfig).then((userAdditionalInfo) => {
|
|
1338
1279
|
const success = that.checkAllTriggersSuccessOrFailure(userAdditionalInfo);
|
|
1339
1280
|
if (success) {
|
|
1340
1281
|
User.update({
|
|
1341
|
-
username: _.get(userAdditionalInfo, 'username')
|
|
1342
|
-
})
|
|
1343
|
-
.set(userAdditionalInfo)
|
|
1344
|
-
.exec(function (err, user) {
|
|
1282
|
+
username: _.get(userAdditionalInfo, 'username')
|
|
1283
|
+
}).set(userAdditionalInfo).exec(function (err, user) {
|
|
1345
1284
|
if (err) {
|
|
1346
|
-
sails.log.error(
|
|
1285
|
+
sails.log.error("Error updating user:");
|
|
1347
1286
|
sails.log.error(err);
|
|
1348
1287
|
return done(err, false);
|
|
1349
1288
|
}
|
|
1350
1289
|
if (_.isEmpty(user)) {
|
|
1351
|
-
sails.log.error(
|
|
1352
|
-
return done(
|
|
1290
|
+
sails.log.error("No user found");
|
|
1291
|
+
return done("No user found", false);
|
|
1353
1292
|
}
|
|
1354
1293
|
if (that.hasPostSaveTriggerConfigured(oidcConfig, 'onUpdate')) {
|
|
1355
1294
|
that.triggerPostSaveTriggers(user, oidcConfig);
|
|
@@ -1359,9 +1298,8 @@ var Services;
|
|
|
1359
1298
|
}
|
|
1360
1299
|
const updatedUsers = user;
|
|
1361
1300
|
sails.log.verbose(`Done, returning updated user id=${String(updatedUsers[0]?.id ?? 'unknown')}`);
|
|
1362
|
-
that
|
|
1363
|
-
.
|
|
1364
|
-
.then(resolvedUser => done(null, resolvedUser))
|
|
1301
|
+
that.resolveLinkedUserCandidate(updatedUsers[0])
|
|
1302
|
+
.then((resolvedUser) => done(null, resolvedUser))
|
|
1365
1303
|
.catch((resolveErr) => done(resolveErr, false));
|
|
1366
1304
|
return;
|
|
1367
1305
|
});
|
|
@@ -1373,18 +1311,16 @@ var Services;
|
|
|
1373
1311
|
}
|
|
1374
1312
|
else {
|
|
1375
1313
|
User.update({
|
|
1376
|
-
username: userObj.username
|
|
1377
|
-
})
|
|
1378
|
-
.set(userObj)
|
|
1379
|
-
.exec(function (err, user) {
|
|
1314
|
+
username: userObj.username
|
|
1315
|
+
}).set(userObj).exec(function (err, user) {
|
|
1380
1316
|
if (err) {
|
|
1381
|
-
sails.log.error(
|
|
1317
|
+
sails.log.error("Error updating user:");
|
|
1382
1318
|
sails.log.error(err);
|
|
1383
1319
|
return done(err, false);
|
|
1384
1320
|
}
|
|
1385
1321
|
if (_.isEmpty(user)) {
|
|
1386
|
-
sails.log.error(
|
|
1387
|
-
return done(
|
|
1322
|
+
sails.log.error("No user found");
|
|
1323
|
+
return done("No user found", false);
|
|
1388
1324
|
}
|
|
1389
1325
|
if (that.hasPostSaveTriggerConfigured(oidcConfig, 'onUpdate')) {
|
|
1390
1326
|
that.triggerPostSaveTriggers(user, oidcConfig);
|
|
@@ -1392,18 +1328,16 @@ var Services;
|
|
|
1392
1328
|
if (that.hasPostSaveSyncTriggerConfigured(oidcConfig, 'onUpdate')) {
|
|
1393
1329
|
that.triggerPostSaveSyncTriggers(user, oidcConfig);
|
|
1394
1330
|
}
|
|
1395
|
-
sails.log.verbose(
|
|
1331
|
+
sails.log.verbose("Done, returning updated user:");
|
|
1396
1332
|
sails.log.verbose(user);
|
|
1397
1333
|
const updatedUsers = user;
|
|
1398
|
-
that
|
|
1399
|
-
.
|
|
1400
|
-
.then(resolvedUser => done(null, resolvedUser))
|
|
1334
|
+
that.resolveLinkedUserCandidate(updatedUsers[0])
|
|
1335
|
+
.then((resolvedUser) => done(null, resolvedUser))
|
|
1401
1336
|
.catch((resolveErr) => done(resolveErr, false));
|
|
1402
1337
|
return;
|
|
1403
1338
|
});
|
|
1404
1339
|
}
|
|
1405
|
-
})
|
|
1406
|
-
.catch((err) => {
|
|
1340
|
+
}).catch((err) => {
|
|
1407
1341
|
if (err instanceof Error && err.message === 'Account is disabled') {
|
|
1408
1342
|
return done(null, false, { message: 'Account is disabled' });
|
|
1409
1343
|
}
|
|
@@ -1411,7 +1345,7 @@ var Services;
|
|
|
1411
1345
|
}); // end OIDC disabled gate
|
|
1412
1346
|
}
|
|
1413
1347
|
else {
|
|
1414
|
-
sails.log.verbose(
|
|
1348
|
+
sails.log.verbose("At OIDC Strategy verify, creating new user...");
|
|
1415
1349
|
let userToCreate;
|
|
1416
1350
|
try {
|
|
1417
1351
|
const additionalAttributesMapping = claimsMappings['additionalAttributes'];
|
|
@@ -1430,7 +1364,7 @@ var Services;
|
|
|
1430
1364
|
type: 'oidc',
|
|
1431
1365
|
roles: openIdConnectDefRoles,
|
|
1432
1366
|
additionalAttributes: additionalAttributes,
|
|
1433
|
-
lastLogin: new Date()
|
|
1367
|
+
lastLogin: new Date()
|
|
1434
1368
|
};
|
|
1435
1369
|
}
|
|
1436
1370
|
catch (e) {
|
|
@@ -1442,17 +1376,15 @@ var Services;
|
|
|
1442
1376
|
sails.log.verbose(userToCreate);
|
|
1443
1377
|
const emailAuthorizedCheck = that.checkAuthorizedEmail(String(userToCreate.email ?? ''), brandName, 'oidc');
|
|
1444
1378
|
if (!emailAuthorizedCheck) {
|
|
1445
|
-
return done(
|
|
1379
|
+
return done("authorized-email-denied", false);
|
|
1446
1380
|
}
|
|
1447
1381
|
if (that.hasPreSaveTriggerConfigured(oidcConfig, 'onCreate')) {
|
|
1448
|
-
that
|
|
1449
|
-
.triggerPreSaveTriggers(userToCreate, oidcConfig)
|
|
1450
|
-
.then((userAdditionalInfo) => {
|
|
1382
|
+
that.triggerPreSaveTriggers(userToCreate, oidcConfig).then((userAdditionalInfo) => {
|
|
1451
1383
|
const success = that.checkAllTriggersSuccessOrFailure(userAdditionalInfo);
|
|
1452
1384
|
if (success) {
|
|
1453
1385
|
User.create(userAdditionalInfo).exec(function (err, newUser) {
|
|
1454
1386
|
if (err) {
|
|
1455
|
-
sails.log.error(
|
|
1387
|
+
sails.log.error("Error creating new user:");
|
|
1456
1388
|
sails.log.error(err);
|
|
1457
1389
|
return done(err, false);
|
|
1458
1390
|
}
|
|
@@ -1463,9 +1395,8 @@ var Services;
|
|
|
1463
1395
|
that.triggerPostSaveSyncTriggers(newUser, oidcConfig);
|
|
1464
1396
|
}
|
|
1465
1397
|
sails.log.verbose(`Done, returning new user id=${String(newUser?.id ?? 'unknown')}`);
|
|
1466
|
-
that
|
|
1467
|
-
.
|
|
1468
|
-
.then(resolvedUser => done(null, resolvedUser))
|
|
1398
|
+
that.resolveLinkedUserCandidate(newUser)
|
|
1399
|
+
.then((resolvedUser) => done(null, resolvedUser))
|
|
1469
1400
|
.catch((resolveErr) => done(resolveErr, false));
|
|
1470
1401
|
return;
|
|
1471
1402
|
});
|
|
@@ -1478,7 +1409,7 @@ var Services;
|
|
|
1478
1409
|
else {
|
|
1479
1410
|
User.create(userToCreate).exec(function (err, newUser) {
|
|
1480
1411
|
if (err) {
|
|
1481
|
-
sails.log.error(
|
|
1412
|
+
sails.log.error("Error creating new user:");
|
|
1482
1413
|
sails.log.error(err);
|
|
1483
1414
|
return done(err, false);
|
|
1484
1415
|
}
|
|
@@ -1488,11 +1419,10 @@ var Services;
|
|
|
1488
1419
|
if (that.hasPostSaveSyncTriggerConfigured(oidcConfig, 'onCreate')) {
|
|
1489
1420
|
that.triggerPostSaveSyncTriggers(newUser, oidcConfig);
|
|
1490
1421
|
}
|
|
1491
|
-
sails.log.verbose(
|
|
1422
|
+
sails.log.verbose("Done, returning new user:");
|
|
1492
1423
|
sails.log.verbose(newUser);
|
|
1493
|
-
that
|
|
1494
|
-
.
|
|
1495
|
-
.then(resolvedUser => done(null, resolvedUser))
|
|
1424
|
+
that.resolveLinkedUserCandidate(newUser)
|
|
1425
|
+
.then((resolvedUser) => done(null, resolvedUser))
|
|
1496
1426
|
.catch((resolveErr) => done(resolveErr, false));
|
|
1497
1427
|
return;
|
|
1498
1428
|
});
|
|
@@ -1507,10 +1437,8 @@ var Services;
|
|
|
1507
1437
|
if (!_.isEmpty(token) && !_.isUndefined(token)) {
|
|
1508
1438
|
const tokenHash = crypto.createHash('sha256').update(token).digest('base64');
|
|
1509
1439
|
User.findOne({
|
|
1510
|
-
token: tokenHash
|
|
1511
|
-
})
|
|
1512
|
-
.populate('roles')
|
|
1513
|
-
.exec(function (err, user) {
|
|
1440
|
+
token: tokenHash
|
|
1441
|
+
}).populate('roles').exec(function (err, user) {
|
|
1514
1442
|
if (err) {
|
|
1515
1443
|
return done(err);
|
|
1516
1444
|
}
|
|
@@ -1518,17 +1446,13 @@ var Services;
|
|
|
1518
1446
|
return done(null, false);
|
|
1519
1447
|
}
|
|
1520
1448
|
// Gate disabled users
|
|
1521
|
-
that
|
|
1522
|
-
.
|
|
1523
|
-
|
|
1524
|
-
|
|
1525
|
-
.resolveLinkedUserCandidate(user)
|
|
1526
|
-
.then(resolvedUser => done(null, resolvedUser, {
|
|
1527
|
-
scope: 'all',
|
|
1449
|
+
that.assertAuthenticationAllowed(user).then(() => {
|
|
1450
|
+
that.resolveLinkedUserCandidate(user)
|
|
1451
|
+
.then((resolvedUser) => done(null, resolvedUser, {
|
|
1452
|
+
scope: 'all'
|
|
1528
1453
|
}))
|
|
1529
1454
|
.catch((resolveErr) => done(resolveErr));
|
|
1530
|
-
})
|
|
1531
|
-
.catch((err) => {
|
|
1455
|
+
}).catch((err) => {
|
|
1532
1456
|
if (err instanceof Error && err.message === 'Account is disabled') {
|
|
1533
1457
|
return done(null, false);
|
|
1534
1458
|
}
|
|
@@ -1554,16 +1478,17 @@ var Services;
|
|
|
1554
1478
|
if (defaultUser == null) {
|
|
1555
1479
|
defaultUser = {
|
|
1556
1480
|
type: 'local',
|
|
1557
|
-
name: 'Local Admin'
|
|
1481
|
+
name: 'Local Admin'
|
|
1558
1482
|
};
|
|
1559
1483
|
defaultUser[usernameField] = authConfig.local?.default?.adminUser;
|
|
1560
1484
|
defaultUser[passwordField] = authConfig.local?.default?.adminPw;
|
|
1561
|
-
defaultUser[
|
|
1485
|
+
defaultUser["email"] = authConfig.local?.default?.email;
|
|
1562
1486
|
if (authConfig.local?.default?.token) {
|
|
1563
|
-
defaultUser[
|
|
1487
|
+
defaultUser["token"] = crypto.createHash('sha256').update(authConfig.local.default.token).digest('base64');
|
|
1564
1488
|
}
|
|
1565
|
-
sails.log.verbose(
|
|
1566
|
-
return super.getObservable(User.create(defaultUser))
|
|
1489
|
+
sails.log.verbose("Default user missing, creating...");
|
|
1490
|
+
return super.getObservable(User.create(defaultUser))
|
|
1491
|
+
.pipe((0, operators_1.mergeMap)(defUser => {
|
|
1567
1492
|
// START Sails 1.0 upgrade
|
|
1568
1493
|
const defRoleIds = _.map(defRoles, (o) => {
|
|
1569
1494
|
return o.id;
|
|
@@ -1571,8 +1496,10 @@ var Services;
|
|
|
1571
1496
|
const defUserId = defUser.id;
|
|
1572
1497
|
let q = User.addToCollection(defUserId, 'roles').members(defRoleIds);
|
|
1573
1498
|
// END Sails 1.0 upgrade
|
|
1574
|
-
return super.getObservable(q, 'exec', 'simplecb')
|
|
1575
|
-
|
|
1499
|
+
return super.getObservable(q, 'exec', 'simplecb')
|
|
1500
|
+
.pipe((0, operators_1.mergeMap)(_dUser => {
|
|
1501
|
+
return (0, rxjs_1.from)(defRoles)
|
|
1502
|
+
.pipe((0, operators_1.map)(roleObserved => {
|
|
1576
1503
|
const role = roleObserved;
|
|
1577
1504
|
// START Sails 1.0 upgrade
|
|
1578
1505
|
// role.users.add(defUser.id)
|
|
@@ -1584,7 +1511,7 @@ var Services;
|
|
|
1584
1511
|
}), (0, operators_1.last)(), (0, operators_1.mergeMap)(_lastRole => {
|
|
1585
1512
|
return (0, rxjs_1.of)({
|
|
1586
1513
|
defUser: defUser,
|
|
1587
|
-
defRoles: defRoles
|
|
1514
|
+
defRoles: defRoles
|
|
1588
1515
|
});
|
|
1589
1516
|
}));
|
|
1590
1517
|
}));
|
|
@@ -1592,7 +1519,7 @@ var Services;
|
|
|
1592
1519
|
else {
|
|
1593
1520
|
return (0, rxjs_1.of)({
|
|
1594
1521
|
defUser: defaultUser,
|
|
1595
|
-
defRoles: defRoles
|
|
1522
|
+
defRoles: defRoles
|
|
1596
1523
|
});
|
|
1597
1524
|
}
|
|
1598
1525
|
};
|
|
@@ -1656,10 +1583,10 @@ var Services;
|
|
|
1656
1583
|
else {
|
|
1657
1584
|
const newUser = {
|
|
1658
1585
|
type: 'local',
|
|
1659
|
-
name: name
|
|
1586
|
+
name: name
|
|
1660
1587
|
};
|
|
1661
1588
|
if (!_.isEmpty(email)) {
|
|
1662
|
-
newUser[
|
|
1589
|
+
newUser["email"] = email;
|
|
1663
1590
|
}
|
|
1664
1591
|
newUser[usernameField] = username;
|
|
1665
1592
|
newUser[passwordField] = password;
|
|
@@ -1679,9 +1606,10 @@ var Services;
|
|
|
1679
1606
|
}
|
|
1680
1607
|
*/
|
|
1681
1608
|
bootstrap = (defRoles) => {
|
|
1682
|
-
sails.log.verbose(
|
|
1609
|
+
sails.log.verbose("Bootstrapping users....");
|
|
1683
1610
|
const defAdminRole = RolesService.getAdminFromRoles(defRoles);
|
|
1684
|
-
return (0, rxjs_1.of)(defAdminRole)
|
|
1611
|
+
return (0, rxjs_1.of)(defAdminRole)
|
|
1612
|
+
.pipe((0, operators_1.mergeMap)(defAdminRole => {
|
|
1685
1613
|
this.localAuthInit();
|
|
1686
1614
|
this.aafAuthInit();
|
|
1687
1615
|
this.openIdConnectAuth();
|
|
@@ -1691,12 +1619,12 @@ var Services;
|
|
|
1691
1619
|
};
|
|
1692
1620
|
getUserWithUsername = (username) => {
|
|
1693
1621
|
return this.getObservable(User.findOne({
|
|
1694
|
-
username: username
|
|
1622
|
+
username: username
|
|
1695
1623
|
}).populate('roles'));
|
|
1696
1624
|
};
|
|
1697
1625
|
getUserWithId = (userid) => {
|
|
1698
1626
|
return this.getObservable(User.findOne({
|
|
1699
|
-
id: userid
|
|
1627
|
+
id: userid
|
|
1700
1628
|
}).populate('roles'));
|
|
1701
1629
|
};
|
|
1702
1630
|
/**
|
|
@@ -1714,8 +1642,11 @@ var Services;
|
|
|
1714
1642
|
if (_.isEmpty(brandId)) {
|
|
1715
1643
|
return (0, rxjs_1.of)([]);
|
|
1716
1644
|
}
|
|
1717
|
-
return super.getObservable(User.find({}).populate('roles'))
|
|
1718
|
-
|
|
1645
|
+
return super.getObservable(User.find({}).populate('roles'))
|
|
1646
|
+
.pipe((0, operators_1.mergeMap)(async (users) => {
|
|
1647
|
+
const activeLinks = typeof UserLink !== 'undefined'
|
|
1648
|
+
? await UserLink.find({ brandId: brandId, status: 'active' })
|
|
1649
|
+
: [];
|
|
1719
1650
|
const linkedSecondaryIds = new Set(_.map(activeLinks, (link) => String(link.secondaryUserId ?? '')));
|
|
1720
1651
|
return _.filter(users, (user) => {
|
|
1721
1652
|
return this.hasRoleInBrand(user, String(brandId)) || linkedSecondaryIds.has(String(user.id ?? ''));
|
|
@@ -1762,7 +1693,9 @@ var Services;
|
|
|
1762
1693
|
? await UserLink.find({ primaryUserId: String(primaryUserObj.id ?? ''), status: 'active' })
|
|
1763
1694
|
: [];
|
|
1764
1695
|
const secondaryIds = _.map(links, (link) => String(link.secondaryUserId ?? ''));
|
|
1765
|
-
const secondaryUsers = _.isEmpty(secondaryIds)
|
|
1696
|
+
const secondaryUsers = _.isEmpty(secondaryIds)
|
|
1697
|
+
? []
|
|
1698
|
+
: await User.find({ id: secondaryIds }).populate('roles');
|
|
1766
1699
|
const secondaryUsersById = _.keyBy(secondaryUsers, (user) => String(user.id ?? ''));
|
|
1767
1700
|
const linkedAccounts = _.compact(_.map(links, (link) => {
|
|
1768
1701
|
const linkObj = link;
|
|
@@ -1775,7 +1708,7 @@ var Services;
|
|
|
1775
1708
|
}));
|
|
1776
1709
|
return {
|
|
1777
1710
|
primary: this.toLinkedUserSummary(primaryUserObj),
|
|
1778
|
-
linkedAccounts: linkedAccounts
|
|
1711
|
+
linkedAccounts: linkedAccounts
|
|
1779
1712
|
};
|
|
1780
1713
|
})());
|
|
1781
1714
|
};
|
|
@@ -1784,7 +1717,7 @@ var Services;
|
|
|
1784
1717
|
return (0, rxjs_1.from)((async () => {
|
|
1785
1718
|
const userWhere = {
|
|
1786
1719
|
accountLinkState: 'active',
|
|
1787
|
-
loginDisabled: { '!=': true }
|
|
1720
|
+
loginDisabled: { '!=': true }
|
|
1788
1721
|
};
|
|
1789
1722
|
if (!_.isEmpty(excludeUserId)) {
|
|
1790
1723
|
userWhere.id = { '!=': String(excludeUserId) };
|
|
@@ -1793,7 +1726,7 @@ var Services;
|
|
|
1793
1726
|
userWhere.or = [
|
|
1794
1727
|
{ username: { contains: queryText } },
|
|
1795
1728
|
{ name: { contains: queryText } },
|
|
1796
|
-
{ email: { contains: queryText } }
|
|
1729
|
+
{ email: { contains: queryText } }
|
|
1797
1730
|
];
|
|
1798
1731
|
}
|
|
1799
1732
|
const users = await User.find(userWhere).populate('roles');
|
|
@@ -1803,7 +1736,7 @@ var Services;
|
|
|
1803
1736
|
const candidateUserIds = _.map(enrichedUsers, (user) => String(user.id ?? ''));
|
|
1804
1737
|
const activeLinks = await UserLink.find({
|
|
1805
1738
|
status: 'active',
|
|
1806
|
-
primaryUserId: candidateUserIds
|
|
1739
|
+
primaryUserId: candidateUserIds
|
|
1807
1740
|
});
|
|
1808
1741
|
primaryUserIdsWithLinkedAccounts = new Set(_.map(activeLinks, (link) => String(link.primaryUserId ?? '')));
|
|
1809
1742
|
}
|
|
@@ -1861,8 +1794,7 @@ var Services;
|
|
|
1861
1794
|
if (String(primaryUser.accountLinkState ?? 'active') === 'linked-alias') {
|
|
1862
1795
|
throw new Error('Primary user cannot be a linked alias');
|
|
1863
1796
|
}
|
|
1864
|
-
if (!_.isEmpty(secondaryUserObj.linkedPrimaryUserId) &&
|
|
1865
|
-
String(secondaryUserObj.linkedPrimaryUserId) !== String(primaryUser.id ?? '')) {
|
|
1797
|
+
if (!_.isEmpty(secondaryUserObj.linkedPrimaryUserId) && String(secondaryUserObj.linkedPrimaryUserId) !== String(primaryUser.id ?? '')) {
|
|
1866
1798
|
throw new Error('Secondary user is already linked to another primary account');
|
|
1867
1799
|
}
|
|
1868
1800
|
if (!this.hasRoleInBrand(primaryUser, brandId)) {
|
|
@@ -1872,9 +1804,7 @@ var Services;
|
|
|
1872
1804
|
const secondaryForeignRoles = _.filter(secondaryUserObj.roles ?? [], (role) => {
|
|
1873
1805
|
const roleObj = role;
|
|
1874
1806
|
const branding = roleObj.branding;
|
|
1875
|
-
const roleBrandId = _.isObject(branding)
|
|
1876
|
-
? String(branding.id ?? '')
|
|
1877
|
-
: String(branding ?? '');
|
|
1807
|
+
const roleBrandId = _.isObject(branding) ? String(branding.id ?? '') : String(branding ?? '');
|
|
1878
1808
|
return roleBrandId !== brandId;
|
|
1879
1809
|
});
|
|
1880
1810
|
if (!_.isEmpty(secondaryForeignRoles)) {
|
|
@@ -1900,7 +1830,7 @@ var Services;
|
|
|
1900
1830
|
secondaryUsername: String(secondaryUserObj.username ?? ''),
|
|
1901
1831
|
brandId: brandId,
|
|
1902
1832
|
status: 'active',
|
|
1903
|
-
createdBy: actor
|
|
1833
|
+
createdBy: actor
|
|
1904
1834
|
});
|
|
1905
1835
|
}
|
|
1906
1836
|
const primaryBrandRoleIds = new Set(_.map(this.getRolesForBrand(primaryUser, brandId), (role) => String(role.id ?? '')));
|
|
@@ -1913,9 +1843,7 @@ var Services;
|
|
|
1913
1843
|
const retainedSecondaryRoleIds = _.map(_.filter(secondaryUserObj.roles ?? [], (role) => {
|
|
1914
1844
|
const roleObj = role;
|
|
1915
1845
|
const branding = roleObj.branding;
|
|
1916
|
-
const roleBrandId = _.isObject(branding)
|
|
1917
|
-
? String(branding.id ?? '')
|
|
1918
|
-
: String(branding ?? '');
|
|
1846
|
+
const roleBrandId = _.isObject(branding) ? String(branding.id ?? '') : String(branding ?? '');
|
|
1919
1847
|
return roleBrandId !== brandId;
|
|
1920
1848
|
}), (role) => String(role.id ?? ''));
|
|
1921
1849
|
const replaceRoleQuery = User.replaceCollection(String(secondaryUserObj.id ?? ''), 'roles').members(retainedSecondaryRoleIds);
|
|
@@ -1923,9 +1851,9 @@ var Services;
|
|
|
1923
1851
|
await User.update({ id: String(secondaryUserObj.id ?? '') }).set({
|
|
1924
1852
|
token: '',
|
|
1925
1853
|
accountLinkState: 'linked-alias',
|
|
1926
|
-
linkedPrimaryUserId: String(primaryUser.id ?? '')
|
|
1854
|
+
linkedPrimaryUserId: String(primaryUser.id ?? '')
|
|
1927
1855
|
});
|
|
1928
|
-
const recordsRewritten = await this.rewriteLinkedRecordAuthorizations(primaryUser, secondaryUserObj, actor);
|
|
1856
|
+
const recordsRewritten = await this.rewriteLinkedRecordAuthorizations(primaryUser, secondaryUserObj, actor, brandId);
|
|
1929
1857
|
await this.addUserAuditEvent({ username: actor }, 'link-accounts', {
|
|
1930
1858
|
primaryUserId: primaryUser.id,
|
|
1931
1859
|
primaryUsername: primaryUser.username,
|
|
@@ -1933,33 +1861,29 @@ var Services;
|
|
|
1933
1861
|
secondaryUsername: secondaryUserObj.username,
|
|
1934
1862
|
brandId: brandId,
|
|
1935
1863
|
rolesMerged: roleIdsToMerge.length,
|
|
1936
|
-
recordsRewritten: recordsRewritten
|
|
1864
|
+
recordsRewritten: recordsRewritten
|
|
1937
1865
|
});
|
|
1938
1866
|
const linkedAccounts = await (0, rxjs_1.firstValueFrom)(this.getLinkedAccounts(primaryUser));
|
|
1939
1867
|
return {
|
|
1940
1868
|
...linkedAccounts,
|
|
1941
1869
|
impact: {
|
|
1942
1870
|
recordsRewritten: recordsRewritten,
|
|
1943
|
-
rolesMerged: roleIdsToMerge.length
|
|
1944
|
-
}
|
|
1871
|
+
rolesMerged: roleIdsToMerge.length
|
|
1872
|
+
}
|
|
1945
1873
|
};
|
|
1946
1874
|
})());
|
|
1947
1875
|
};
|
|
1948
1876
|
setUserKey = (userid, uuid) => {
|
|
1949
|
-
const uuidHash = _.isEmpty(uuid)
|
|
1950
|
-
? null
|
|
1951
|
-
: crypto
|
|
1952
|
-
.createHash('sha256')
|
|
1953
|
-
.update(uuid)
|
|
1954
|
-
.digest('base64');
|
|
1877
|
+
const uuidHash = _.isEmpty(uuid) ? null : crypto.createHash('sha256').update(uuid).digest('base64');
|
|
1955
1878
|
return this.getUserWithId(userid).pipe((0, operators_1.mergeMap)(user => {
|
|
1956
1879
|
if (user) {
|
|
1957
1880
|
const q = User.update({
|
|
1958
|
-
id: userid
|
|
1881
|
+
id: userid
|
|
1959
1882
|
}, {
|
|
1960
|
-
token: uuidHash
|
|
1883
|
+
token: uuidHash
|
|
1961
1884
|
});
|
|
1962
|
-
return this.getObservable(q, 'exec', 'simplecb')
|
|
1885
|
+
return this.getObservable(q, 'exec', 'simplecb')
|
|
1886
|
+
.pipe((0, operators_1.map)((updatedUsers) => updatedUsers[0] ?? user));
|
|
1963
1887
|
}
|
|
1964
1888
|
else {
|
|
1965
1889
|
return (0, rxjs_1.throwError)(new Error('No such user with id:' + userid));
|
|
@@ -1972,10 +1896,10 @@ var Services;
|
|
|
1972
1896
|
return this.getUserWithId(userid).pipe((0, operators_1.mergeMap)(user => {
|
|
1973
1897
|
if (user) {
|
|
1974
1898
|
const update = {
|
|
1975
|
-
name: name
|
|
1899
|
+
name: name
|
|
1976
1900
|
};
|
|
1977
1901
|
if (!_.isEmpty(email)) {
|
|
1978
|
-
update[
|
|
1902
|
+
update["email"] = email;
|
|
1979
1903
|
}
|
|
1980
1904
|
if (!_.isEmpty(password)) {
|
|
1981
1905
|
let bcrypt;
|
|
@@ -1989,7 +1913,7 @@ var Services;
|
|
|
1989
1913
|
update[passwordField] = bcrypt.hashSync(password, salt);
|
|
1990
1914
|
}
|
|
1991
1915
|
const q = User.update({
|
|
1992
|
-
id: userid
|
|
1916
|
+
id: userid
|
|
1993
1917
|
}, update);
|
|
1994
1918
|
return this.getObservable(q, 'exec', 'simplecb');
|
|
1995
1919
|
}
|
|
@@ -2017,20 +1941,18 @@ var Services;
|
|
|
2017
1941
|
updateUserAfterLogin(user, done) {
|
|
2018
1942
|
const userObj = user;
|
|
2019
1943
|
User.update({
|
|
2020
|
-
username: userObj.username
|
|
2021
|
-
})
|
|
2022
|
-
.set(userObj)
|
|
2023
|
-
.exec(function (err, user) {
|
|
1944
|
+
username: userObj.username
|
|
1945
|
+
}).set(userObj).exec(function (err, user) {
|
|
2024
1946
|
if (err) {
|
|
2025
|
-
sails.log.error(
|
|
1947
|
+
sails.log.error("Error updating user:");
|
|
2026
1948
|
sails.log.error(err);
|
|
2027
1949
|
return done(err, false);
|
|
2028
1950
|
}
|
|
2029
1951
|
if (_.isEmpty(user)) {
|
|
2030
|
-
sails.log.error(
|
|
2031
|
-
return done(
|
|
1952
|
+
sails.log.error("No user found");
|
|
1953
|
+
return done("No user found", false);
|
|
2032
1954
|
}
|
|
2033
|
-
sails.log.verbose(
|
|
1955
|
+
sails.log.verbose("Done, returning updated user:");
|
|
2034
1956
|
sails.log.verbose(user);
|
|
2035
1957
|
const updatedUsers = user;
|
|
2036
1958
|
return done(null, updatedUsers[0]);
|
|
@@ -2046,8 +1968,8 @@ var Services;
|
|
|
2046
1968
|
findUsersWithName(name, brandId, source = null) {
|
|
2047
1969
|
const query = {
|
|
2048
1970
|
name: {
|
|
2049
|
-
contains: name
|
|
2050
|
-
}
|
|
1971
|
+
'contains': name
|
|
1972
|
+
}
|
|
2051
1973
|
};
|
|
2052
1974
|
// S2TEST-21
|
|
2053
1975
|
return this.findUsersWithQuery(query, brandId, source);
|
|
@@ -2056,8 +1978,8 @@ var Services;
|
|
|
2056
1978
|
findUsersWithEmail(email, brandId, source = null) {
|
|
2057
1979
|
const query = {
|
|
2058
1980
|
email: {
|
|
2059
|
-
contains: email
|
|
2060
|
-
}
|
|
1981
|
+
'contains': email
|
|
1982
|
+
}
|
|
2061
1983
|
};
|
|
2062
1984
|
return this.findUsersWithQuery(query, brandId, source);
|
|
2063
1985
|
}
|
|
@@ -2067,7 +1989,8 @@ var Services;
|
|
|
2067
1989
|
if (!_.isEmpty(source) && !_.isUndefined(source) && !_.isNull(source)) {
|
|
2068
1990
|
queryObj['type'] = source;
|
|
2069
1991
|
}
|
|
2070
|
-
return this.getObservable(User.find(queryObj).populate('roles'))
|
|
1992
|
+
return this.getObservable(User.find(queryObj).populate('roles'))
|
|
1993
|
+
.pipe((0, operators_1.mergeMap)(users => {
|
|
2071
1994
|
if (brandId) {
|
|
2072
1995
|
_.remove(users, (user) => {
|
|
2073
1996
|
const userObj = user;
|
|
@@ -2087,37 +2010,33 @@ var Services;
|
|
|
2087
2010
|
* we're not able to reliably determine the username before they login to the system for the first time.
|
|
2088
2011
|
*
|
|
2089
2012
|
**/
|
|
2090
|
-
|
|
2091
|
-
|
|
2092
|
-
|
|
2093
|
-
|
|
2094
|
-
|
|
2095
|
-
|
|
2096
|
-
|
|
2097
|
-
|
|
2098
|
-
|
|
2099
|
-
|
|
2100
|
-
|
|
2101
|
-
|
|
2102
|
-
|
|
2103
|
-
|
|
2013
|
+
findAndAssignAccessToRecords(pendingValue, userid) {
|
|
2014
|
+
this.getEffectiveUser(userid).subscribe((effectiveUser) => {
|
|
2015
|
+
const effectiveUsername = _.get(effectiveUser, 'username', userid);
|
|
2016
|
+
Record.find({
|
|
2017
|
+
'or': [{
|
|
2018
|
+
'authorization.editPending': pendingValue
|
|
2019
|
+
}, {
|
|
2020
|
+
'authorization.viewPending': pendingValue
|
|
2021
|
+
}]
|
|
2022
|
+
}).meta({
|
|
2023
|
+
enableExperimentalDeepTargets: true
|
|
2024
|
+
}).then((records) => {
|
|
2025
|
+
const recordsArr = records;
|
|
2026
|
+
if (_.isEmpty(recordsArr)) {
|
|
2027
|
+
sails.log.verbose(`UsersService::findAndAssignAccessToRecords() -> No pending records: ${pendingValue}`);
|
|
2028
|
+
return;
|
|
2029
|
+
}
|
|
2030
|
+
sails.log.verbose(`UsersService::findAndAssignAccessToRecords() -> Found ${recordsArr.length} records to assign permissions`);
|
|
2031
|
+
for (const record of recordsArr) {
|
|
2032
|
+
const recordObj = record;
|
|
2033
|
+
RecordsService.provideUserAccessAndRemovePendingAccess(recordObj.redboxOid, effectiveUsername, pendingValue);
|
|
2034
|
+
}
|
|
2035
|
+
}).catch((error) => {
|
|
2036
|
+
sails.log.warn(`Failed to assign access for user: ${pendingValue}`);
|
|
2037
|
+
sails.log.warn(error);
|
|
2038
|
+
});
|
|
2104
2039
|
});
|
|
2105
|
-
const recordsArr = records;
|
|
2106
|
-
if (_.isEmpty(recordsArr)) {
|
|
2107
|
-
sails.log.verbose(`UsersService::findAndAssignAccessToRecords() -> No pending records: ${pendingValue}`);
|
|
2108
|
-
return 0;
|
|
2109
|
-
}
|
|
2110
|
-
sails.log.verbose(`UsersService::findAndAssignAccessToRecords() -> Found ${recordsArr.length} records to assign permissions`);
|
|
2111
|
-
let updated = 0;
|
|
2112
|
-
for (const record of recordsArr) {
|
|
2113
|
-
const recordObj = record;
|
|
2114
|
-
const response = await RecordsService.provideUserAccessAndRemovePendingAccess(recordObj.redboxOid, effectiveUsername, pendingValue);
|
|
2115
|
-
if (!response.wasPersisted()) {
|
|
2116
|
-
throw new Error(`Pending record access mutation failed (request ${response.requestId}).`);
|
|
2117
|
-
}
|
|
2118
|
-
updated += 1;
|
|
2119
|
-
}
|
|
2120
|
-
return updated;
|
|
2121
2040
|
}
|
|
2122
2041
|
/**
|
|
2123
2042
|
* Check whether an email is authorized.
|
|
@@ -2130,7 +2049,7 @@ var Services;
|
|
|
2130
2049
|
checkAuthorizedEmail(email, branding, authType) {
|
|
2131
2050
|
// Must pass email.
|
|
2132
2051
|
if (!email) {
|
|
2133
|
-
sails.log.error(
|
|
2052
|
+
sails.log.error("No email address provided.");
|
|
2134
2053
|
return false;
|
|
2135
2054
|
}
|
|
2136
2055
|
// Assess email address.
|
|
@@ -2143,7 +2062,7 @@ var Services;
|
|
|
2143
2062
|
const brandingAwareData = sails.config.brandingAware(branding);
|
|
2144
2063
|
const authorizedDomainsEmails = _.get(brandingAwareData, 'authorizedDomainsEmails', {});
|
|
2145
2064
|
if (authorizedDomainsEmails.enabled?.toString() !== 'true') {
|
|
2146
|
-
sails.log.warn(
|
|
2065
|
+
sails.log.warn("Authorized email configuration is disabled.");
|
|
2147
2066
|
return true;
|
|
2148
2067
|
}
|
|
2149
2068
|
const domains = [];
|
|
@@ -2189,4 +2108,4 @@ var Services;
|
|
|
2189
2108
|
}
|
|
2190
2109
|
Services.Users = Users;
|
|
2191
2110
|
})(Services || (exports.Services = Services = {}));
|
|
2192
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVXNlcnNTZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcnZpY2VzL1VzZXJzU2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsMEZBQTBGO0FBQzFGLEVBQUU7QUFDRiw2QkFBNkI7QUFDN0IsMEJBQTBCO0FBQzFCLEVBQUU7QUFDRix1RUFBdUU7QUFDdkUsdUVBQXVFO0FBQ3ZFLG9FQUFvRTtBQUNwRSxzQ0FBc0M7QUFDdEMsRUFBRTtBQUNGLGtFQUFrRTtBQUNsRSxpRUFBaUU7QUFDakUsZ0VBQWdFO0FBQ2hFLCtDQUErQztBQUMvQyxFQUFFO0FBQ0YsMEVBQTBFO0FBQzFFLDBFQUEwRTtBQUMxRSw4REFBOEQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUU5RCwrQkFBd0U7QUFDeEUsOENBQWdFO0FBRWhFLCtCQUFvQztBQVFwQyxnREFBc0Q7QUFDdEQsZ0VBQTJEO0FBRTNELCtDQUFpQztBQUlqQyxJQUFpQixRQUFRLENBaWpGeEI7QUFqakZELFdBQWlCLFFBQVE7SUFHdkIsTUFBTSw0QkFBNEIsR0FBRywrQkFBK0IsQ0FBQztJQUNyRSxNQUFNLDBCQUEwQixHQUFHLEtBQUssQ0FBQztJQThHekM7Ozs7OztPQU1HO0lBQ0gsTUFBYSxLQUFNLFNBQVEsc0JBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTztRQUMzQixnQkFBZ0IsR0FBYTtZQUM5QyxXQUFXO1lBQ1gsaUJBQWlCO1lBQ2pCLG1CQUFtQjtZQUNuQixlQUFlO1lBQ2YscUJBQXFCO1lBQ3JCLGNBQWM7WUFDZCxZQUFZO1lBQ1osU0FBUztZQUNULG1CQUFtQjtZQUNuQixvQkFBb0I7WUFDcEIsb0JBQW9CO1lBQ3BCLDhCQUE4QjtZQUM5QixVQUFVO1lBQ1Ysa0JBQWtCO1lBQ2xCLGtCQUFrQjtZQUNsQixtQkFBbUI7WUFDbkIsc0JBQXNCO1lBQ3RCLGNBQWM7WUFDZCxtQkFBbUI7WUFDbkIsc0JBQXNCO1lBQ3RCLHVD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
|
|
2111
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVXNlcnNTZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcnZpY2VzL1VzZXJzU2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsMEZBQTBGO0FBQzFGLEVBQUU7QUFDRiw2QkFBNkI7QUFDN0IsMEJBQTBCO0FBQzFCLEVBQUU7QUFDRix1RUFBdUU7QUFDdkUsdUVBQXVFO0FBQ3ZFLG9FQUFvRTtBQUNwRSxzQ0FBc0M7QUFDdEMsRUFBRTtBQUNGLGtFQUFrRTtBQUNsRSxpRUFBaUU7QUFDakUsZ0VBQWdFO0FBQ2hFLCtDQUErQztBQUMvQyxFQUFFO0FBQ0YsMEVBQTBFO0FBQzFFLDBFQUEwRTtBQUMxRSw4REFBOEQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUU5RCwrQkFBd0U7QUFDeEUsOENBQWdFO0FBRWhFLCtCQUVjO0FBUWQsZ0RBQXNEO0FBQ3RELGdFQUEyRDtBQUUzRCwrQ0FBaUM7QUFLakMsSUFBaUIsUUFBUSxDQXUwRXhCO0FBdjBFRCxXQUFpQixRQUFRO0lBR3ZCLE1BQU0sNEJBQTRCLEdBQUcsK0JBQStCLENBQUM7SUFDckUsTUFBTSwwQkFBMEIsR0FBRyxLQUFLLENBQUM7SUE4R3pDOzs7Ozs7T0FNRztJQUNILE1BQWEsS0FBTSxTQUFRLHNCQUFRLENBQUMsSUFBSSxDQUFDLE9BQU87UUFFM0IsZ0JBQWdCLEdBQWE7WUFDOUMsV0FBVztZQUNYLGlCQUFpQjtZQUNqQixtQkFBbUI7WUFDbkIsZUFBZTtZQUNmLHFCQUFxQjtZQUNyQixjQUFjO1lBQ2QsWUFBWTtZQUNaLFNBQVM7WUFDVCxtQkFBbUI7WUFDbkIsb0JBQW9CO1lBQ3BCLG9CQUFvQjtZQUNwQiw4QkFBOEI7WUFDOUIsVUFBVTtZQUNWLGtCQUFrQjtZQUNsQixrQkFBa0I7WUFDbEIsbUJBQW1CO1lBQ25CLHNCQUFzQjtZQUN0QixjQUFjO1lBQ2QsbUJBQW1CO1lBQ25CLHNCQUFzQjtZQUN0Qix1Q0FB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
|