@webda/core 4.0.0-beta.1 → 4.0.0-beta.3
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/README.md +252 -0
- package/lib/application/application.d.ts +437 -0
- package/lib/application/application.d.ts.map +1 -0
- package/lib/application/application.js +792 -0
- package/lib/application/application.js.map +1 -0
- package/lib/application/hooks.d.ts +34 -0
- package/lib/application/hooks.d.ts.map +1 -0
- package/lib/application/hooks.js +57 -0
- package/lib/application/hooks.js.map +1 -0
- package/lib/application/iapplication.d.ts +43 -0
- package/lib/application/iapplication.d.ts.map +1 -0
- package/lib/application/iapplication.js +2 -0
- package/lib/application/iapplication.js.map +1 -0
- package/lib/application/iconfiguration.d.ts +176 -0
- package/lib/application/iconfiguration.d.ts.map +1 -0
- package/lib/application/iconfiguration.js +8 -0
- package/lib/application/iconfiguration.js.map +1 -0
- package/lib/application/runner.d.ts +8 -0
- package/lib/application/runner.d.ts.map +1 -0
- package/lib/application/runner.js +26 -0
- package/lib/application/runner.js.map +1 -0
- package/lib/application/unpackedapplication.d.ts +104 -0
- package/lib/application/unpackedapplication.d.ts.map +1 -0
- package/lib/application/unpackedapplication.js +492 -0
- package/lib/application/unpackedapplication.js.map +1 -0
- package/lib/bin/cli-phase.d.ts +28 -0
- package/lib/bin/cli-phase.d.ts.map +1 -0
- package/lib/bin/cli-phase.js +44 -0
- package/lib/bin/cli-phase.js.map +1 -0
- package/lib/bin/cli.d.ts +161 -0
- package/lib/bin/cli.d.ts.map +1 -0
- package/lib/bin/cli.js +828 -0
- package/lib/bin/cli.js.map +1 -0
- package/lib/bin/launcher.d.ts +3 -0
- package/lib/bin/launcher.d.ts.map +1 -0
- package/lib/bin/launcher.js +50 -0
- package/lib/bin/launcher.js.map +1 -0
- package/lib/cache/cache.d.ts +33 -0
- package/lib/cache/cache.d.ts.map +1 -0
- package/lib/cache/cache.js +8 -0
- package/lib/cache/cache.js.map +1 -0
- package/lib/{services/configuration.d.ts → configurations/configuration.service.d.ts} +58 -49
- package/lib/configurations/configuration.service.d.ts.map +1 -0
- package/lib/configurations/configuration.service.js +248 -0
- package/lib/configurations/configuration.service.js.map +1 -0
- package/lib/configurations/fileconfiguration.service.d.ts +30 -0
- package/lib/configurations/fileconfiguration.service.d.ts.map +1 -0
- package/lib/configurations/fileconfiguration.service.js +65 -0
- package/lib/configurations/fileconfiguration.service.js.map +1 -0
- package/lib/configurations/kubernetesconfiguration.service.d.ts +43 -0
- package/lib/configurations/kubernetesconfiguration.service.d.ts.map +1 -0
- package/lib/configurations/kubernetesconfiguration.service.js +83 -0
- package/lib/configurations/kubernetesconfiguration.service.js.map +1 -0
- package/lib/contexts/execution.d.ts +33 -0
- package/lib/contexts/execution.d.ts.map +1 -0
- package/lib/contexts/execution.js +73 -0
- package/lib/contexts/execution.js.map +1 -0
- package/lib/contexts/globalcontext.d.ts +29 -0
- package/lib/contexts/globalcontext.d.ts.map +1 -0
- package/lib/contexts/globalcontext.js +38 -0
- package/lib/contexts/globalcontext.js.map +1 -0
- package/lib/{utils → contexts}/httpcontext.d.ts +45 -19
- package/lib/contexts/httpcontext.d.ts.map +1 -0
- package/lib/{utils → contexts}/httpcontext.js +102 -34
- package/lib/contexts/httpcontext.js.map +1 -0
- package/lib/contexts/icontext.d.ts +236 -0
- package/lib/contexts/icontext.d.ts.map +1 -0
- package/lib/contexts/icontext.js +230 -0
- package/lib/contexts/icontext.js.map +1 -0
- package/lib/contexts/operationcontext.d.ts +179 -0
- package/lib/contexts/operationcontext.d.ts.map +1 -0
- package/lib/contexts/operationcontext.js +358 -0
- package/lib/contexts/operationcontext.js.map +1 -0
- package/lib/contexts/simplecontext.d.ts +31 -0
- package/lib/contexts/simplecontext.d.ts.map +1 -0
- package/lib/contexts/simplecontext.js +45 -0
- package/lib/contexts/simplecontext.js.map +1 -0
- package/lib/contexts/webcontext.d.ts +218 -0
- package/lib/contexts/webcontext.d.ts.map +1 -0
- package/lib/contexts/webcontext.js +389 -0
- package/lib/contexts/webcontext.js.map +1 -0
- package/lib/core/authorizer.d.ts +23 -0
- package/lib/core/authorizer.d.ts.map +1 -0
- package/lib/core/authorizer.js +17 -0
- package/lib/core/authorizer.js.map +1 -0
- package/lib/core/core.d.ts +225 -0
- package/lib/core/core.d.ts.map +1 -0
- package/lib/core/core.js +576 -0
- package/lib/core/core.js.map +1 -0
- package/lib/core/hooks.d.ts +72 -0
- package/lib/core/hooks.d.ts.map +1 -0
- package/lib/core/hooks.js +73 -0
- package/lib/core/hooks.js.map +1 -0
- package/lib/core/icore.d.ts +249 -0
- package/lib/core/icore.d.ts.map +1 -0
- package/lib/core/icore.js +15 -0
- package/lib/core/icore.js.map +1 -0
- package/lib/core/instancestorage.d.ts +61 -0
- package/lib/core/instancestorage.d.ts.map +1 -0
- package/lib/core/instancestorage.js +75 -0
- package/lib/core/instancestorage.js.map +1 -0
- package/lib/core/operations.d.ts +181 -0
- package/lib/core/operations.d.ts.map +1 -0
- package/lib/core/operations.js +559 -0
- package/lib/core/operations.js.map +1 -0
- package/lib/errors/errors.d.ts +126 -0
- package/lib/errors/errors.d.ts.map +1 -0
- package/lib/errors/errors.js +165 -0
- package/lib/errors/errors.js.map +1 -0
- package/lib/events/asynceventemitter.d.ts +159 -0
- package/lib/events/asynceventemitter.d.ts.map +1 -0
- package/lib/events/asynceventemitter.js +152 -0
- package/lib/events/asynceventemitter.js.map +1 -0
- package/lib/events/events.d.ts +112 -0
- package/lib/events/events.d.ts.map +1 -0
- package/lib/events/events.js +45 -0
- package/lib/events/events.js.map +1 -0
- package/lib/index.d.ts +84 -51
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +82 -59
- package/lib/index.js.map +1 -1
- package/lib/loggers/console.service.d.ts +24 -0
- package/lib/loggers/console.service.d.ts.map +1 -0
- package/lib/loggers/console.service.js +30 -0
- package/lib/loggers/console.service.js.map +1 -0
- package/lib/loggers/file.service.d.ts +25 -0
- package/lib/loggers/file.service.d.ts.map +1 -0
- package/lib/loggers/file.service.js +33 -0
- package/lib/loggers/file.service.js.map +1 -0
- package/lib/loggers/hooks.d.ts +20 -0
- package/lib/loggers/hooks.d.ts.map +1 -0
- package/lib/loggers/hooks.js +40 -0
- package/lib/loggers/hooks.js.map +1 -0
- package/lib/loggers/ilogger.d.ts +76 -0
- package/lib/loggers/ilogger.d.ts.map +1 -0
- package/lib/loggers/ilogger.js +108 -0
- package/lib/loggers/ilogger.js.map +1 -0
- package/lib/loggers/logger.d.ts +13 -0
- package/lib/loggers/logger.d.ts.map +1 -0
- package/lib/loggers/logger.js +18 -0
- package/lib/loggers/logger.js.map +1 -0
- package/lib/loggers/memory.service.d.ts +18 -0
- package/lib/loggers/memory.service.d.ts.map +1 -0
- package/lib/loggers/memory.service.js +21 -0
- package/lib/loggers/memory.service.js.map +1 -0
- package/lib/loggers/params.d.ts +47 -0
- package/lib/loggers/params.d.ts.map +1 -0
- package/lib/loggers/params.js +56 -0
- package/lib/loggers/params.js.map +1 -0
- package/lib/metrics/metrics.d.ts +25 -0
- package/lib/metrics/metrics.d.ts.map +1 -0
- package/lib/metrics/metrics.js +51 -0
- package/lib/metrics/metrics.js.map +1 -0
- package/lib/models/aclmodel.d.ts +21 -77
- package/lib/models/aclmodel.d.ts.map +1 -0
- package/lib/models/aclmodel.js +27 -204
- package/lib/models/aclmodel.js.map +1 -1
- package/lib/models/coremodel.model.d.ts +5 -0
- package/lib/models/coremodel.model.d.ts.map +1 -0
- package/lib/models/coremodel.model.js +5 -0
- package/lib/models/coremodel.model.js.map +1 -0
- package/lib/models/decorator.d.ts +63 -0
- package/lib/models/decorator.d.ts.map +1 -0
- package/lib/models/decorator.js +63 -0
- package/lib/models/decorator.js.map +1 -0
- package/lib/models/deployment.d.ts +2 -1
- package/lib/models/deployment.d.ts.map +1 -0
- package/lib/models/ident.model.d.ts +89 -0
- package/lib/models/ident.model.d.ts.map +1 -0
- package/lib/models/ident.model.js +115 -0
- package/lib/models/ident.model.js.map +1 -0
- package/lib/models/ownermodel.model.d.ts +68 -0
- package/lib/models/ownermodel.model.d.ts.map +1 -0
- package/lib/models/ownermodel.model.js +112 -0
- package/lib/models/ownermodel.model.js.map +1 -0
- package/lib/models/registry.model.d.ts +76 -0
- package/lib/models/registry.model.d.ts.map +1 -0
- package/lib/models/registry.model.js +104 -0
- package/lib/models/registry.model.js.map +1 -0
- package/lib/models/rolemodel.model.d.ts +28 -0
- package/lib/models/rolemodel.model.d.ts.map +1 -0
- package/lib/models/rolemodel.model.js +53 -0
- package/lib/models/rolemodel.model.js.map +1 -0
- package/lib/models/simpleuser.model.d.ts +78 -0
- package/lib/models/simpleuser.model.d.ts.map +1 -0
- package/lib/models/simpleuser.model.js +123 -0
- package/lib/models/simpleuser.model.js.map +1 -0
- package/lib/models/types.d.ts +113 -0
- package/lib/models/types.d.ts.map +1 -0
- package/lib/models/types.js +2 -0
- package/lib/models/types.js.map +1 -0
- package/lib/models/user.model.d.ts +103 -0
- package/lib/models/user.model.d.ts.map +1 -0
- package/lib/models/user.model.js +125 -0
- package/lib/models/user.model.js.map +1 -0
- package/lib/queues/memoryqueue.service.d.ts +72 -0
- package/lib/queues/memoryqueue.service.d.ts.map +1 -0
- package/lib/queues/memoryqueue.service.js +136 -0
- package/lib/queues/memoryqueue.service.js.map +1 -0
- package/lib/queues/pubsubservice.d.ts +9 -6
- package/lib/queues/pubsubservice.d.ts.map +1 -0
- package/lib/queues/pubsubservice.js +5 -4
- package/lib/queues/pubsubservice.js.map +1 -1
- package/lib/queues/queueservice.d.ts +10 -11
- package/lib/queues/queueservice.d.ts.map +1 -0
- package/lib/queues/queueservice.js +48 -20
- package/lib/queues/queueservice.js.map +1 -1
- package/lib/rest/hooks.d.ts +8 -0
- package/lib/rest/hooks.d.ts.map +1 -0
- package/lib/rest/hooks.js +10 -0
- package/lib/rest/hooks.js.map +1 -0
- package/lib/rest/irest.d.ts +212 -0
- package/lib/rest/irest.d.ts.map +1 -0
- package/lib/rest/irest.js +39 -0
- package/lib/rest/irest.js.map +1 -0
- package/lib/rest/originfilter.d.ts +38 -0
- package/lib/rest/originfilter.d.ts.map +1 -0
- package/lib/rest/originfilter.js +61 -0
- package/lib/rest/originfilter.js.map +1 -0
- package/lib/rest/restoperationstransport.service.d.ts +193 -0
- package/lib/rest/restoperationstransport.service.d.ts.map +1 -0
- package/lib/rest/restoperationstransport.service.js +780 -0
- package/lib/rest/restoperationstransport.service.js.map +1 -0
- package/lib/rest/router.service.d.ts +244 -0
- package/lib/rest/router.service.d.ts.map +1 -0
- package/lib/rest/router.service.js +843 -0
- package/lib/rest/router.service.js.map +1 -0
- package/lib/schemas/hooks.d.ts +48 -0
- package/lib/schemas/hooks.d.ts.map +1 -0
- package/lib/schemas/hooks.js +152 -0
- package/lib/schemas/hooks.js.map +1 -0
- package/lib/services/audit.model.d.ts +208 -0
- package/lib/services/audit.model.d.ts.map +1 -0
- package/lib/services/audit.model.js +431 -0
- package/lib/services/audit.model.js.map +1 -0
- package/lib/services/{authentication.d.ts → authentication.service.d.ts} +140 -58
- package/lib/services/authentication.service.d.ts.map +1 -0
- package/lib/services/authentication.service.js +932 -0
- package/lib/services/authentication.service.js.map +1 -0
- package/lib/services/binary.service.d.ts +808 -0
- package/lib/services/binary.service.d.ts.map +1 -0
- package/lib/services/binary.service.js +1365 -0
- package/lib/services/binary.service.js.map +1 -0
- package/lib/services/cloudbinary.d.ts +19 -13
- package/lib/services/cloudbinary.d.ts.map +1 -0
- package/lib/services/cloudbinary.js +24 -18
- package/lib/services/cloudbinary.js.map +1 -1
- package/lib/services/command.d.ts +118 -0
- package/lib/services/command.d.ts.map +1 -0
- package/lib/services/command.js +97 -0
- package/lib/services/command.js.map +1 -0
- package/lib/services/cron.service.d.ts +142 -0
- package/lib/services/cron.service.d.ts.map +1 -0
- package/lib/services/cron.service.js +291 -0
- package/lib/services/cron.service.js.map +1 -0
- package/lib/services/{cryptoservice.d.ts → cryptoservice.service.d.ts} +77 -142
- package/lib/services/cryptoservice.service.d.ts.map +1 -0
- package/lib/services/cryptoservice.service.js +527 -0
- package/lib/services/cryptoservice.service.js.map +1 -0
- package/lib/services/debugmailer.service.d.ts +49 -0
- package/lib/services/debugmailer.service.d.ts.map +1 -0
- package/lib/services/debugmailer.service.js +66 -0
- package/lib/services/debugmailer.service.js.map +1 -0
- package/lib/services/domainservice.service.d.ts +203 -0
- package/lib/services/domainservice.service.d.ts.map +1 -0
- package/lib/services/domainservice.service.js +600 -0
- package/lib/services/domainservice.service.js.map +1 -0
- package/lib/services/httpserver.service.d.ts +248 -0
- package/lib/services/httpserver.service.d.ts.map +1 -0
- package/lib/services/httpserver.service.js +673 -0
- package/lib/services/httpserver.service.js.map +1 -0
- package/lib/services/iauthentication.d.ts +9 -0
- package/lib/services/iauthentication.d.ts.map +1 -0
- package/lib/services/iauthentication.js +2 -0
- package/lib/services/iauthentication.js.map +1 -0
- package/lib/services/icryptoservice.d.ts +127 -0
- package/lib/services/icryptoservice.d.ts.map +1 -0
- package/lib/services/icryptoservice.js +68 -0
- package/lib/services/icryptoservice.js.map +1 -0
- package/lib/services/imailer.d.ts +17 -0
- package/lib/services/imailer.d.ts.map +1 -0
- package/lib/services/imailer.js +2 -0
- package/lib/services/imailer.js.map +1 -0
- package/lib/services/iservice.d.ts +104 -0
- package/lib/services/iservice.d.ts.map +1 -0
- package/lib/services/iservice.js +63 -0
- package/lib/services/iservice.js.map +1 -0
- package/lib/services/mailer.service.d.ts +220 -0
- package/lib/services/mailer.service.d.ts.map +1 -0
- package/lib/services/mailer.service.js +251 -0
- package/lib/services/mailer.service.js.map +1 -0
- package/lib/services/{notificationservice.d.ts → notificationservice.service.d.ts} +10 -10
- package/lib/services/notificationservice.service.d.ts.map +1 -0
- package/lib/services/{notificationservice.js → notificationservice.service.js} +24 -12
- package/lib/services/notificationservice.service.js.map +1 -0
- package/lib/services/oauth.d.ts +58 -31
- package/lib/services/oauth.d.ts.map +1 -0
- package/lib/services/oauth.js +365 -251
- package/lib/services/oauth.js.map +1 -1
- package/lib/services/operationstransport.d.ts +65 -0
- package/lib/services/operationstransport.d.ts.map +1 -0
- package/lib/services/operationstransport.js +103 -0
- package/lib/services/operationstransport.js.map +1 -0
- package/lib/services/{prometheus.d.ts → prometheus.service.d.ts} +13 -11
- package/lib/services/prometheus.service.d.ts.map +1 -0
- package/lib/services/prometheus.service.js +203 -0
- package/lib/services/prometheus.service.js.map +1 -0
- package/lib/services/resource.service.d.ts +121 -0
- package/lib/services/resource.service.d.ts.map +1 -0
- package/lib/services/resource.service.js +301 -0
- package/lib/services/resource.service.js.map +1 -0
- package/lib/services/service.d.ts +88 -189
- package/lib/services/service.d.ts.map +1 -0
- package/lib/services/service.js +407 -432
- package/lib/services/service.js.map +1 -1
- package/lib/services/servicecommands.d.ts +99 -0
- package/lib/services/servicecommands.d.ts.map +1 -0
- package/lib/services/servicecommands.js +165 -0
- package/lib/services/servicecommands.js.map +1 -0
- package/lib/services/serviceparameters.d.ts +33 -0
- package/lib/services/serviceparameters.d.ts.map +1 -0
- package/lib/services/serviceparameters.js +79 -0
- package/lib/services/serviceparameters.js.map +1 -0
- package/lib/{utils → session}/cookie.d.ts +32 -18
- package/lib/session/cookie.d.ts.map +1 -0
- package/lib/{utils → session}/cookie.js +76 -23
- package/lib/session/cookie.js.map +1 -0
- package/lib/session/manager.model.d.ts +71 -0
- package/lib/session/manager.model.d.ts.map +1 -0
- package/lib/session/manager.model.js +155 -0
- package/lib/session/manager.model.js.map +1 -0
- package/lib/session/session.d.ts +57 -0
- package/lib/session/session.d.ts.map +1 -0
- package/lib/session/session.js +126 -0
- package/lib/session/session.js.map +1 -0
- package/lib/stores/istore.d.ts +99 -0
- package/lib/stores/istore.d.ts.map +1 -0
- package/lib/stores/istore.js +26 -0
- package/lib/stores/istore.js.map +1 -0
- package/lib/stores/memory.service.d.ts +114 -0
- package/lib/stores/memory.service.d.ts.map +1 -0
- package/lib/stores/memory.service.js +343 -0
- package/lib/stores/memory.service.js.map +1 -0
- package/lib/stores/store.d.ts +127 -768
- package/lib/stores/store.d.ts.map +1 -0
- package/lib/stores/store.js +258 -1718
- package/lib/stores/store.js.map +1 -1
- package/lib/templates/templates.d.ts +39 -0
- package/lib/templates/templates.d.ts.map +1 -0
- package/lib/templates/templates.js +92 -0
- package/lib/templates/templates.js.map +1 -0
- package/lib/test/application.d.ts +174 -0
- package/lib/test/application.d.ts.map +1 -0
- package/lib/test/application.js +288 -0
- package/lib/test/application.js.map +1 -0
- package/lib/test/asyncstorage.d.ts +16 -0
- package/lib/test/asyncstorage.d.ts.map +1 -0
- package/lib/test/asyncstorage.js +32 -0
- package/lib/test/asyncstorage.js.map +1 -0
- package/lib/test/core.d.ts +63 -0
- package/lib/test/core.d.ts.map +1 -0
- package/lib/test/core.js +190 -0
- package/lib/test/core.js.map +1 -0
- package/lib/test/index.d.ts +7 -0
- package/lib/test/index.d.ts.map +1 -0
- package/lib/test/index.js +8 -0
- package/lib/test/index.js.map +1 -0
- package/lib/test/internal.d.ts +34 -0
- package/lib/test/internal.d.ts.map +1 -0
- package/lib/test/internal.js +156 -0
- package/lib/test/internal.js.map +1 -0
- package/lib/test/objects.d.ts +318 -0
- package/lib/test/objects.d.ts.map +1 -0
- package/lib/test/objects.js +443 -0
- package/lib/test/objects.js.map +1 -0
- package/lib/utils/abstractdeployer.d.ts +5 -2
- package/lib/utils/abstractdeployer.d.ts.map +1 -0
- package/lib/utils/abstractdeployer.js +3 -0
- package/lib/utils/abstractdeployer.js.map +1 -1
- package/package.json +85 -56
- package/test/cachedapp/webda.config.json +1 -5
- package/test/config-cached.json +1 -5
- package/test/config.json +6 -99
- package/test/data/.env +1 -0
- package/test/my-cnf.json +9 -0
- package/webda.module.json +3462 -2231
- package/lib/application.d.ts +0 -876
- package/lib/application.js +0 -741
- package/lib/application.js.map +0 -1
- package/lib/application.spec.d.ts +0 -1
- package/lib/application.spec.js +0 -234
- package/lib/application.spec.js.map +0 -1
- package/lib/core.d.ts +0 -740
- package/lib/core.js +0 -1310
- package/lib/core.js.map +0 -1
- package/lib/core.spec.d.ts +0 -1
- package/lib/core.spec.js +0 -761
- package/lib/core.spec.js.map +0 -1
- package/lib/errors.d.ts +0 -65
- package/lib/errors.js +0 -113
- package/lib/errors.js.map +0 -1
- package/lib/errors.spec.d.ts +0 -1
- package/lib/errors.spec.js +0 -33
- package/lib/errors.spec.js.map +0 -1
- package/lib/models/aclmodel.spec.d.ts +0 -1
- package/lib/models/aclmodel.spec.js +0 -187
- package/lib/models/aclmodel.spec.js.map +0 -1
- package/lib/models/coremodel.d.ts +0 -887
- package/lib/models/coremodel.js +0 -1208
- package/lib/models/coremodel.js.map +0 -1
- package/lib/models/coremodel.spec.d.ts +0 -1
- package/lib/models/coremodel.spec.js +0 -462
- package/lib/models/coremodel.spec.js.map +0 -1
- package/lib/models/ident.d.ts +0 -53
- package/lib/models/ident.js +0 -40
- package/lib/models/ident.js.map +0 -1
- package/lib/models/ident.spec.d.ts +0 -1
- package/lib/models/ident.spec.js +0 -43
- package/lib/models/ident.spec.js.map +0 -1
- package/lib/models/ownermodel.d.ts +0 -50
- package/lib/models/ownermodel.js +0 -65
- package/lib/models/ownermodel.js.map +0 -1
- package/lib/models/ownermodel.spec.d.ts +0 -1
- package/lib/models/ownermodel.spec.js +0 -191
- package/lib/models/ownermodel.spec.js.map +0 -1
- package/lib/models/relations.d.ts +0 -181
- package/lib/models/relations.js +0 -157
- package/lib/models/relations.js.map +0 -1
- package/lib/models/relations.spec.d.ts +0 -12
- package/lib/models/relations.spec.js +0 -224
- package/lib/models/relations.spec.js.map +0 -1
- package/lib/models/rolemodel.d.ts +0 -10
- package/lib/models/rolemodel.js +0 -35
- package/lib/models/rolemodel.js.map +0 -1
- package/lib/models/rolemodel.spec.d.ts +0 -1
- package/lib/models/rolemodel.spec.js +0 -86
- package/lib/models/rolemodel.spec.js.map +0 -1
- package/lib/models/user.d.ts +0 -100
- package/lib/models/user.js +0 -157
- package/lib/models/user.js.map +0 -1
- package/lib/models/user.spec.d.ts +0 -1
- package/lib/models/user.spec.js +0 -88
- package/lib/models/user.spec.js.map +0 -1
- package/lib/queues/filequeue.d.ts +0 -58
- package/lib/queues/filequeue.js +0 -131
- package/lib/queues/filequeue.js.map +0 -1
- package/lib/queues/filequeue.spec.d.ts +0 -1
- package/lib/queues/filequeue.spec.js +0 -78
- package/lib/queues/filequeue.spec.js.map +0 -1
- package/lib/queues/memoryqueue.d.ts +0 -45
- package/lib/queues/memoryqueue.js +0 -81
- package/lib/queues/memoryqueue.js.map +0 -1
- package/lib/queues/memoryqueue.spec.d.ts +0 -1
- package/lib/queues/memoryqueue.spec.js +0 -192
- package/lib/queues/memoryqueue.spec.js.map +0 -1
- package/lib/queues/queue.spec.d.ts +0 -5
- package/lib/queues/queue.spec.js +0 -55
- package/lib/queues/queue.spec.js.map +0 -1
- package/lib/router.d.ts +0 -172
- package/lib/router.js +0 -419
- package/lib/router.js.map +0 -1
- package/lib/router.spec.d.ts +0 -1
- package/lib/router.spec.js +0 -229
- package/lib/router.spec.js.map +0 -1
- package/lib/services/asyncevents.d.ts +0 -151
- package/lib/services/asyncevents.js +0 -217
- package/lib/services/asyncevents.js.map +0 -1
- package/lib/services/asyncevents.spec.d.ts +0 -1
- package/lib/services/asyncevents.spec.js +0 -118
- package/lib/services/asyncevents.spec.js.map +0 -1
- package/lib/services/authentication.js +0 -772
- package/lib/services/authentication.js.map +0 -1
- package/lib/services/authentication.spec.d.ts +0 -1
- package/lib/services/authentication.spec.js +0 -458
- package/lib/services/authentication.spec.js.map +0 -1
- package/lib/services/binary.d.ts +0 -549
- package/lib/services/binary.js +0 -986
- package/lib/services/binary.js.map +0 -1
- package/lib/services/binary.spec.d.ts +0 -44
- package/lib/services/binary.spec.js +0 -438
- package/lib/services/binary.spec.js.map +0 -1
- package/lib/services/cloudbinary.spec.d.ts +0 -13
- package/lib/services/cloudbinary.spec.js +0 -192
- package/lib/services/cloudbinary.spec.js.map +0 -1
- package/lib/services/configuration.js +0 -178
- package/lib/services/configuration.js.map +0 -1
- package/lib/services/configuration.spec.d.ts +0 -1
- package/lib/services/configuration.spec.js +0 -87
- package/lib/services/configuration.spec.js.map +0 -1
- package/lib/services/cron.d.ts +0 -73
- package/lib/services/cron.js +0 -141
- package/lib/services/cron.js.map +0 -1
- package/lib/services/cron.spec.d.ts +0 -1
- package/lib/services/cron.spec.js +0 -76
- package/lib/services/cron.spec.js.map +0 -1
- package/lib/services/cryptoservice.js +0 -434
- package/lib/services/cryptoservice.js.map +0 -1
- package/lib/services/cryptoservice.spec.d.ts +0 -1
- package/lib/services/cryptoservice.spec.js +0 -177
- package/lib/services/cryptoservice.spec.js.map +0 -1
- package/lib/services/debugmailer.d.ts +0 -36
- package/lib/services/debugmailer.js +0 -52
- package/lib/services/debugmailer.js.map +0 -1
- package/lib/services/debugmailer.spec.d.ts +0 -1
- package/lib/services/debugmailer.spec.js +0 -29
- package/lib/services/debugmailer.spec.js.map +0 -1
- package/lib/services/domainservice.d.ts +0 -152
- package/lib/services/domainservice.js +0 -881
- package/lib/services/domainservice.js.map +0 -1
- package/lib/services/domainservice.spec.d.ts +0 -1
- package/lib/services/domainservice.spec.js +0 -401
- package/lib/services/domainservice.spec.js.map +0 -1
- package/lib/services/filebinary.d.ts +0 -133
- package/lib/services/filebinary.js +0 -371
- package/lib/services/filebinary.js.map +0 -1
- package/lib/services/filebinary.spec.d.ts +0 -21
- package/lib/services/filebinary.spec.js +0 -415
- package/lib/services/filebinary.spec.js.map +0 -1
- package/lib/services/fileconfiguration.d.ts +0 -22
- package/lib/services/fileconfiguration.js +0 -48
- package/lib/services/fileconfiguration.js.map +0 -1
- package/lib/services/fileconfiguration.spec.d.ts +0 -1
- package/lib/services/fileconfiguration.spec.js +0 -177
- package/lib/services/fileconfiguration.spec.js.map +0 -1
- package/lib/services/invitationservice.d.ts +0 -222
- package/lib/services/invitationservice.js +0 -526
- package/lib/services/invitationservice.js.map +0 -1
- package/lib/services/invitationservice.spec.d.ts +0 -1
- package/lib/services/invitationservice.spec.js +0 -516
- package/lib/services/invitationservice.spec.js.map +0 -1
- package/lib/services/kubernetesconfiguration.d.ts +0 -26
- package/lib/services/kubernetesconfiguration.js +0 -54
- package/lib/services/kubernetesconfiguration.js.map +0 -1
- package/lib/services/kubernetesconfiguration.spec.d.ts +0 -1
- package/lib/services/kubernetesconfiguration.spec.js +0 -147
- package/lib/services/kubernetesconfiguration.spec.js.map +0 -1
- package/lib/services/mailer.d.ts +0 -165
- package/lib/services/mailer.js +0 -176
- package/lib/services/mailer.js.map +0 -1
- package/lib/services/mailer.spec.d.ts +0 -1
- package/lib/services/mailer.spec.js +0 -144
- package/lib/services/mailer.spec.js.map +0 -1
- package/lib/services/notificationservice.js.map +0 -1
- package/lib/services/notificationservice.spec.d.ts +0 -1
- package/lib/services/notificationservice.spec.js +0 -78
- package/lib/services/notificationservice.spec.js.map +0 -1
- package/lib/services/oauth.spec.d.ts +0 -1
- package/lib/services/oauth.spec.js +0 -184
- package/lib/services/oauth.spec.js.map +0 -1
- package/lib/services/prometheus.js +0 -160
- package/lib/services/prometheus.js.map +0 -1
- package/lib/services/prometheus.spec.d.ts +0 -1
- package/lib/services/prometheus.spec.js +0 -57
- package/lib/services/prometheus.spec.js.map +0 -1
- package/lib/services/resource.d.ts +0 -87
- package/lib/services/resource.js +0 -156
- package/lib/services/resource.js.map +0 -1
- package/lib/services/resource.spec.d.ts +0 -1
- package/lib/services/resource.spec.js +0 -122
- package/lib/services/resource.spec.js.map +0 -1
- package/lib/services/service.spec.d.ts +0 -1
- package/lib/services/service.spec.js +0 -268
- package/lib/services/service.spec.js.map +0 -1
- package/lib/stores/aggregator.d.ts +0 -41
- package/lib/stores/aggregator.js +0 -80
- package/lib/stores/aggregator.js.map +0 -1
- package/lib/stores/aliasstore.d.ts +0 -108
- package/lib/stores/aliasstore.js +0 -168
- package/lib/stores/aliasstore.js.map +0 -1
- package/lib/stores/aliasstore.spec.d.ts +0 -11
- package/lib/stores/aliasstore.spec.js +0 -89
- package/lib/stores/aliasstore.spec.js.map +0 -1
- package/lib/stores/file.d.ts +0 -107
- package/lib/stores/file.js +0 -188
- package/lib/stores/file.js.map +0 -1
- package/lib/stores/file.spec.d.ts +0 -19
- package/lib/stores/file.spec.js +0 -232
- package/lib/stores/file.spec.js.map +0 -1
- package/lib/stores/mapper.d.ts +0 -149
- package/lib/stores/mapper.js +0 -293
- package/lib/stores/mapper.js.map +0 -1
- package/lib/stores/mapper.spec.d.ts +0 -1
- package/lib/stores/mapper.spec.js +0 -160
- package/lib/stores/mapper.spec.js.map +0 -1
- package/lib/stores/memory.d.ts +0 -151
- package/lib/stores/memory.js +0 -371
- package/lib/stores/memory.js.map +0 -1
- package/lib/stores/memory.spec.d.ts +0 -20
- package/lib/stores/memory.spec.js +0 -328
- package/lib/stores/memory.spec.js.map +0 -1
- package/lib/stores/modelmapper.d.ts +0 -61
- package/lib/stores/modelmapper.js +0 -199
- package/lib/stores/modelmapper.js.map +0 -1
- package/lib/stores/store.spec.d.ts +0 -65
- package/lib/stores/store.spec.js +0 -906
- package/lib/stores/store.spec.js.map +0 -1
- package/lib/test.d.ts +0 -162
- package/lib/test.js +0 -399
- package/lib/test.js.map +0 -1
- package/lib/unpackedapplication.d.ts +0 -76
- package/lib/unpackedapplication.js +0 -299
- package/lib/unpackedapplication.js.map +0 -1
- package/lib/utils/abstractdeployer.spec.d.ts +0 -1
- package/lib/utils/abstractdeployer.spec.js +0 -21
- package/lib/utils/abstractdeployer.spec.js.map +0 -1
- package/lib/utils/case.d.ts +0 -7
- package/lib/utils/case.js +0 -43
- package/lib/utils/case.js.map +0 -1
- package/lib/utils/case.spec.d.ts +0 -1
- package/lib/utils/case.spec.js +0 -50
- package/lib/utils/case.spec.js.map +0 -1
- package/lib/utils/context.d.ts +0 -462
- package/lib/utils/context.js +0 -732
- package/lib/utils/context.js.map +0 -1
- package/lib/utils/context.spec.d.ts +0 -9
- package/lib/utils/context.spec.js +0 -372
- package/lib/utils/context.spec.js.map +0 -1
- package/lib/utils/cookie.js.map +0 -1
- package/lib/utils/cookie.spec.d.ts +0 -1
- package/lib/utils/cookie.spec.js +0 -78
- package/lib/utils/cookie.spec.js.map +0 -1
- package/lib/utils/esm.d.ts +0 -13
- package/lib/utils/esm.js +0 -19
- package/lib/utils/esm.js.map +0 -1
- package/lib/utils/httpcontext.js.map +0 -1
- package/lib/utils/httpcontext.spec.d.ts +0 -4
- package/lib/utils/httpcontext.spec.js +0 -77
- package/lib/utils/httpcontext.spec.js.map +0 -1
- package/lib/utils/logger.d.ts +0 -91
- package/lib/utils/logger.js +0 -121
- package/lib/utils/logger.js.map +0 -1
- package/lib/utils/logger.spec.d.ts +0 -1
- package/lib/utils/logger.spec.js +0 -48
- package/lib/utils/logger.spec.js.map +0 -1
- package/lib/utils/serializers.d.ts +0 -161
- package/lib/utils/serializers.js +0 -420
- package/lib/utils/serializers.js.map +0 -1
- package/lib/utils/serializers.spec.d.ts +0 -1
- package/lib/utils/serializers.spec.js +0 -313
- package/lib/utils/serializers.spec.js.map +0 -1
- package/lib/utils/session.d.ts +0 -126
- package/lib/utils/session.js +0 -166
- package/lib/utils/session.js.map +0 -1
- package/lib/utils/session.spec.d.ts +0 -1
- package/lib/utils/session.spec.js +0 -71
- package/lib/utils/session.spec.js.map +0 -1
- package/lib/utils/throttler.d.ts +0 -102
- package/lib/utils/throttler.js +0 -168
- package/lib/utils/throttler.js.map +0 -1
- package/lib/utils/throttler.spec.d.ts +0 -1
- package/lib/utils/throttler.spec.js +0 -55
- package/lib/utils/throttler.spec.js.map +0 -1
- package/lib/utils/waiter.d.ts +0 -93
- package/lib/utils/waiter.js +0 -148
- package/lib/utils/waiter.js.map +0 -1
- package/lib/utils/waiter.spec.d.ts +0 -1
- package/lib/utils/waiter.spec.js +0 -98
- package/lib/utils/waiter.spec.js.map +0 -1
- package/test/config-file-missing-file-no-default.json +0 -44
- package/test/config-file-missing-file.json +0 -55
- package/test/config-file-no-reload.json +0 -69
- package/test/config-file-reload.json +0 -68
- package/test/config-invitation.json +0 -63
- package/test/config-kube-reload.json +0 -68
- package/test/config-reload.json +0 -66
- package/test/config.old.json +0 -152
- package/test/jsonutils/mdocs.yaml +0 -56
- package/test/jsonutils/test.json +0 -3
- package/test/jsonutils/test.yml +0 -5
- package/test/moddas/annotatedservice.js +0 -23
- package/test/moddas/debugmailer.js +0 -13
- package/test/moddas/fakeservice.js +0 -4
- package/test/moddas/voidstore.js +0 -66
- package/test/models/ident.js +0 -36
- package/test/models/task.js +0 -42
package/lib/services/oauth.js
CHANGED
|
@@ -1,165 +1,233 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
constructor(params) {
|
|
6
|
-
super(params);
|
|
7
|
-
this.scope ?? (this.scope = ["email"]);
|
|
8
|
-
this.exposeScope ?? (this.exposeScope = false);
|
|
9
|
-
this.authenticationService ?? (this.authenticationService = "Authentication");
|
|
1
|
+
var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
|
|
2
|
+
var useValue = arguments.length > 2;
|
|
3
|
+
for (var i = 0; i < initializers.length; i++) {
|
|
4
|
+
value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
|
|
10
5
|
}
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
6
|
+
return useValue ? value : void 0;
|
|
7
|
+
};
|
|
8
|
+
var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
|
|
9
|
+
function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
|
|
10
|
+
var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
|
|
11
|
+
var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
|
|
12
|
+
var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
|
|
13
|
+
var _, done = false;
|
|
14
|
+
for (var i = decorators.length - 1; i >= 0; i--) {
|
|
15
|
+
var context = {};
|
|
16
|
+
for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
|
|
17
|
+
for (var p in contextIn.access) context.access[p] = contextIn.access[p];
|
|
18
|
+
context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
|
|
19
|
+
var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
|
|
20
|
+
if (kind === "accessor") {
|
|
21
|
+
if (result === void 0) continue;
|
|
22
|
+
if (result === null || typeof result !== "object") throw new TypeError("Object expected");
|
|
23
|
+
if (_ = accept(result.get)) descriptor.get = _;
|
|
24
|
+
if (_ = accept(result.set)) descriptor.set = _;
|
|
25
|
+
if (_ = accept(result.init)) initializers.unshift(_);
|
|
26
|
+
}
|
|
27
|
+
else if (_ = accept(result)) {
|
|
28
|
+
if (kind === "field") initializers.unshift(_);
|
|
29
|
+
else descriptor[key] = _;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
if (target) Object.defineProperty(target, contextIn.name, descriptor);
|
|
33
|
+
done = true;
|
|
34
|
+
};
|
|
35
|
+
import * as WebdaError from "../errors/errors.js";
|
|
36
|
+
import { Service } from "./service.js";
|
|
37
|
+
import { getUuid } from "@webda/utils";
|
|
38
|
+
import { Route } from "../rest/irest.js";
|
|
39
|
+
import { Counter } from "../metrics/metrics.js";
|
|
40
|
+
import { RegExpStringValidator } from "@webda/utils";
|
|
41
|
+
import { ServiceParameters } from "../services/serviceparameters.js";
|
|
42
|
+
import { useService } from "../core/hooks.js";
|
|
43
|
+
/** Parameters for OAuth services including client credentials, scopes, and redirect URIs */
|
|
44
|
+
export class OAuthServiceParameters extends ServiceParameters {
|
|
17
45
|
/**
|
|
18
|
-
*
|
|
46
|
+
* Scope to request on OAuth flow
|
|
47
|
+
*
|
|
48
|
+
* @defaut ["email"]
|
|
19
49
|
*/
|
|
20
|
-
|
|
21
|
-
super(webda, name, params);
|
|
22
|
-
this.parameters.url = this.parameters.url || `${this.getDefaultUrl()}`;
|
|
23
|
-
}
|
|
24
|
-
initMetrics() {
|
|
25
|
-
super.initMetrics();
|
|
26
|
-
this.metrics.login = this.getMetric(Counter, {
|
|
27
|
-
name: "oauth_login",
|
|
28
|
-
help: "count the number of login",
|
|
29
|
-
labelNames: ["method"]
|
|
30
|
-
});
|
|
31
|
-
}
|
|
50
|
+
scope;
|
|
32
51
|
/**
|
|
33
|
-
*
|
|
52
|
+
* If set to true it will add a ${url}/scope
|
|
53
|
+
* So client can anticipate the requested scope
|
|
54
|
+
*
|
|
55
|
+
* This is useful when using the client api to generate
|
|
56
|
+
* token. This way the service can request the wanted scope
|
|
34
57
|
*
|
|
35
|
-
* @
|
|
58
|
+
* @default false
|
|
36
59
|
*/
|
|
37
|
-
|
|
38
|
-
let result = new OAuthServiceParameters(params);
|
|
39
|
-
if (result.authorized_uris === undefined) {
|
|
40
|
-
this.log("WARN", "Not defining authorized_uris is a security risk");
|
|
41
|
-
}
|
|
42
|
-
else {
|
|
43
|
-
this.authorized_uris = new RegExpStringValidator(result.authorized_uris);
|
|
44
|
-
}
|
|
45
|
-
return result;
|
|
46
|
-
}
|
|
60
|
+
exposeScope;
|
|
47
61
|
/**
|
|
48
|
-
*
|
|
49
|
-
*
|
|
50
|
-
* @
|
|
62
|
+
* List of URIs authorized for redirect post authorization
|
|
63
|
+
*
|
|
64
|
+
* @default []
|
|
51
65
|
*/
|
|
52
|
-
|
|
53
|
-
// Only authorize url from this service
|
|
54
|
-
if (!context.getHttpContext().getRelativeUri().startsWith(this.parameters.url)) {
|
|
55
|
-
return false;
|
|
56
|
-
}
|
|
57
|
-
let regexps = this.getCallbackReferer();
|
|
58
|
-
let valid = false;
|
|
59
|
-
let referer = context.getHttpContext().getUniqueHeader("referer", "");
|
|
60
|
-
if (this.parameters.no_referer && referer === "") {
|
|
61
|
-
return true;
|
|
62
|
-
}
|
|
63
|
-
for (let i in regexps) {
|
|
64
|
-
valid = referer.match(regexps[i]) !== null;
|
|
65
|
-
if (valid) {
|
|
66
|
-
break;
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
return valid;
|
|
70
|
-
}
|
|
66
|
+
authorized_uris;
|
|
71
67
|
/**
|
|
72
|
-
*
|
|
68
|
+
* Default redirect_uri
|
|
69
|
+
*
|
|
70
|
+
* @default ${url}/callback
|
|
73
71
|
*/
|
|
74
|
-
|
|
75
|
-
super.resolve();
|
|
76
|
-
this._authenticationService = this.getService(this.parameters.authenticationService);
|
|
77
|
-
return this;
|
|
78
|
-
}
|
|
72
|
+
redirect_uri;
|
|
79
73
|
/**
|
|
80
|
-
*
|
|
81
|
-
*
|
|
74
|
+
* Allow direct connection without a referer
|
|
75
|
+
*
|
|
76
|
+
* @default false
|
|
82
77
|
*/
|
|
83
|
-
|
|
84
|
-
return [
|
|
85
|
-
{
|
|
86
|
-
name: "code",
|
|
87
|
-
required: true
|
|
88
|
-
},
|
|
89
|
-
{
|
|
90
|
-
name: "scope",
|
|
91
|
-
required: true
|
|
92
|
-
},
|
|
93
|
-
{
|
|
94
|
-
name: "state",
|
|
95
|
-
required: true
|
|
96
|
-
}
|
|
97
|
-
];
|
|
98
|
-
}
|
|
78
|
+
no_referer;
|
|
99
79
|
/**
|
|
100
|
-
*
|
|
80
|
+
* Name of the authentication service to use if exist
|
|
81
|
+
* @default Authentication
|
|
101
82
|
*/
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
83
|
+
authenticationService;
|
|
84
|
+
/**
|
|
85
|
+
* Load parameters with defaults for scopes, auth service, and URI settings
|
|
86
|
+
* @param params - the service parameters
|
|
87
|
+
* @returns the result
|
|
88
|
+
*/
|
|
89
|
+
load(params) {
|
|
90
|
+
super.load(params);
|
|
91
|
+
this.scope ??= ["email"];
|
|
92
|
+
this.exposeScope ??= false;
|
|
93
|
+
this.authenticationService ??= "Authentication";
|
|
94
|
+
this.authorized_uris ??= [];
|
|
95
|
+
this.no_referer ??= false;
|
|
96
|
+
return this;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* OAuth service implementing the default OAuth workflow
|
|
101
|
+
* It is abstract as it does not manage any provider as is
|
|
102
|
+
*/
|
|
103
|
+
let OAuthService = (() => {
|
|
104
|
+
let _classSuper = Service;
|
|
105
|
+
let _instanceExtraInitializers = [];
|
|
106
|
+
let __redirect_decorators;
|
|
107
|
+
return class OAuthService extends _classSuper {
|
|
108
|
+
static {
|
|
109
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
110
|
+
__redirect_decorators = [Route(".{?redirect?}", ["GET"], {
|
|
111
|
+
get: {
|
|
112
|
+
description: "Log with a ${name} account",
|
|
113
|
+
summary: "Redirect to ${name}",
|
|
114
|
+
operationId: "logInWith${name}",
|
|
115
|
+
responses: {
|
|
116
|
+
"302": { description: "" },
|
|
117
|
+
"400": { description: "Missing token" }
|
|
118
|
+
}
|
|
116
119
|
}
|
|
117
|
-
}
|
|
120
|
+
})];
|
|
121
|
+
__esDecorate(this, null, __redirect_decorators, { kind: "method", name: "_redirect", static: false, private: false, access: { has: obj => "_redirect" in obj, get: obj => obj._redirect }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
122
|
+
if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
123
|
+
}
|
|
124
|
+
_authenticationService = __runInitializers(this, _instanceExtraInitializers);
|
|
125
|
+
authorized_uris;
|
|
126
|
+
/**
|
|
127
|
+
* Ensure default parameter url
|
|
128
|
+
* @param name - the service name
|
|
129
|
+
* @param params - the service parameters
|
|
130
|
+
*/
|
|
131
|
+
constructor(name, params) {
|
|
132
|
+
super(name, params);
|
|
133
|
+
this.parameters.url ??= this.getDefaultUrl();
|
|
134
|
+
}
|
|
135
|
+
/** Initialize OAuth-specific metrics for tracking logins */
|
|
136
|
+
initMetrics() {
|
|
137
|
+
super.initMetrics();
|
|
138
|
+
this.metrics.login = this.getMetric(Counter, {
|
|
139
|
+
name: "oauth_login",
|
|
140
|
+
help: "count the number of login",
|
|
141
|
+
labelNames: ["method"]
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Allow callback referer to access this url no matter what
|
|
146
|
+
* @param context - the execution context
|
|
147
|
+
* @returns true if the condition is met
|
|
148
|
+
*/
|
|
149
|
+
async checkRequest(context) {
|
|
150
|
+
// Only authorize url from this service
|
|
151
|
+
if (!context.getHttpContext().getRelativeUri().startsWith(this.parameters.url)) {
|
|
152
|
+
return false;
|
|
118
153
|
}
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
"
|
|
122
|
-
this.
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
operationId: `callbackFrom${name}`,
|
|
130
|
-
responses: {
|
|
131
|
-
"204": {
|
|
132
|
-
description: ""
|
|
133
|
-
},
|
|
134
|
-
"400": {
|
|
135
|
-
description: "Missing token"
|
|
136
|
-
}
|
|
154
|
+
const regexps = this.getCallbackReferer();
|
|
155
|
+
let valid = false;
|
|
156
|
+
const referer = context.getHttpContext().getUniqueHeader("referer", "");
|
|
157
|
+
if (this.parameters.no_referer && referer === "") {
|
|
158
|
+
return true;
|
|
159
|
+
}
|
|
160
|
+
for (const i in regexps) {
|
|
161
|
+
valid = referer.match(regexps[i]) !== null;
|
|
162
|
+
if (valid) {
|
|
163
|
+
break;
|
|
137
164
|
}
|
|
138
165
|
}
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
"400": {
|
|
151
|
-
description: "Missing token"
|
|
152
|
-
}
|
|
153
|
-
}
|
|
166
|
+
return valid;
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Resolve dynamic dependancy
|
|
170
|
+
* @returns this for chaining
|
|
171
|
+
*/
|
|
172
|
+
resolve() {
|
|
173
|
+
super.resolve();
|
|
174
|
+
this.parameters.with(params => {
|
|
175
|
+
if (params.url === undefined) {
|
|
176
|
+
params.url = this.getDefaultUrl();
|
|
154
177
|
}
|
|
178
|
+
if (params.authorized_uris === undefined) {
|
|
179
|
+
this.log("WARN", "Not defining authorized_uris is a security risk");
|
|
180
|
+
}
|
|
181
|
+
else {
|
|
182
|
+
this.authorized_uris = new RegExpStringValidator(params.authorized_uris);
|
|
183
|
+
}
|
|
184
|
+
this._authenticationService = useService(this.parameters.authenticationService);
|
|
155
185
|
});
|
|
186
|
+
return this;
|
|
156
187
|
}
|
|
157
|
-
|
|
158
|
-
|
|
188
|
+
/**
|
|
189
|
+
* Get OAuth callback query parameters
|
|
190
|
+
* @returns the result
|
|
191
|
+
*/
|
|
192
|
+
getCallbackQueryParams() {
|
|
193
|
+
return [
|
|
194
|
+
{
|
|
195
|
+
name: "code",
|
|
196
|
+
required: true
|
|
197
|
+
},
|
|
198
|
+
{
|
|
199
|
+
name: "scope",
|
|
200
|
+
required: true
|
|
201
|
+
},
|
|
202
|
+
{
|
|
203
|
+
name: "state",
|
|
204
|
+
required: true
|
|
205
|
+
}
|
|
206
|
+
];
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* Register callback + optional token/scope routes.
|
|
210
|
+
*
|
|
211
|
+
* `_redirect` is declared via `@Route` below. The callback query string
|
|
212
|
+
* depends on {@link getCallbackQueryParams} (subclass-overridable), and
|
|
213
|
+
* the token/scope routes are conditional on {@link hasToken} and
|
|
214
|
+
* `parameters.exposeScope`, so those three stay programmatic.
|
|
215
|
+
*
|
|
216
|
+
* @returns this for chaining
|
|
217
|
+
*/
|
|
218
|
+
async init() {
|
|
219
|
+
await super.init();
|
|
220
|
+
const name = this.getName();
|
|
221
|
+
this.addRoute(this.parameters.url +
|
|
222
|
+
"/callback{?" +
|
|
223
|
+
this.getCallbackQueryParams()
|
|
224
|
+
.map(param => param.name + (param.required ? "" : "?"))
|
|
225
|
+
.join(",") +
|
|
226
|
+
"}", ["GET"], this._callback, {
|
|
159
227
|
get: {
|
|
160
|
-
description: `
|
|
161
|
-
summary:
|
|
162
|
-
operationId: `
|
|
228
|
+
description: `Get result from ${name} Authentication`,
|
|
229
|
+
summary: `Use the token provide to validate with ${name} the user`,
|
|
230
|
+
operationId: `callbackFrom${name}`,
|
|
163
231
|
responses: {
|
|
164
232
|
"204": {
|
|
165
233
|
description: ""
|
|
@@ -170,122 +238,168 @@ export class OAuthService extends Service {
|
|
|
170
238
|
}
|
|
171
239
|
}
|
|
172
240
|
});
|
|
241
|
+
if (this.hasToken()) {
|
|
242
|
+
this.addRoute(this.parameters.url + "/token", ["POST"], this._token, {
|
|
243
|
+
post: {
|
|
244
|
+
description: `Log with a ${name} token`,
|
|
245
|
+
summary: `Use the token provide to validate with ${name} the user`,
|
|
246
|
+
operationId: `verify${name}Token`,
|
|
247
|
+
responses: {
|
|
248
|
+
"204": {
|
|
249
|
+
description: ""
|
|
250
|
+
},
|
|
251
|
+
"400": {
|
|
252
|
+
description: "Missing token"
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
});
|
|
257
|
+
}
|
|
258
|
+
if (this.parameters.exposeScope) {
|
|
259
|
+
this.addRoute(this.parameters.url + "/scope", ["GET"], this._scope, {
|
|
260
|
+
get: {
|
|
261
|
+
description: `List ${name} auth scope for this apps`,
|
|
262
|
+
summary: "Retrieve the scope intended to be used with this auth",
|
|
263
|
+
operationId: `get${name}Scope`,
|
|
264
|
+
responses: {
|
|
265
|
+
"204": {
|
|
266
|
+
description: ""
|
|
267
|
+
},
|
|
268
|
+
"400": {
|
|
269
|
+
description: "Missing token"
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
});
|
|
274
|
+
}
|
|
275
|
+
return this;
|
|
173
276
|
}
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
ctx.write(this.parameters.scope);
|
|
181
|
-
}
|
|
182
|
-
/**
|
|
183
|
-
* Define if this provider allow authentication by tokens
|
|
184
|
-
* @returns
|
|
185
|
-
*/
|
|
186
|
-
hasToken() {
|
|
187
|
-
return false;
|
|
188
|
-
}
|
|
189
|
-
/**
|
|
190
|
-
* Check if the url is authorized
|
|
191
|
-
* @param redirect
|
|
192
|
-
* @param context
|
|
193
|
-
* @returns
|
|
194
|
-
*/
|
|
195
|
-
isAuthorizedUri(redirect, context) {
|
|
196
|
-
return (!this.parameters.authorized_uris || // If no authorized_uris defined, allow all
|
|
197
|
-
this.authorized_uris?.validate(redirect) || // If redirect is included in authorized_uris
|
|
198
|
-
(this.parameters.no_referer && !context.getHttpContext().getUniqueHeader("referer"))); // If no_referer is allowed
|
|
199
|
-
}
|
|
200
|
-
/**
|
|
201
|
-
* Redirect to the OAuth provider
|
|
202
|
-
*
|
|
203
|
-
* The calling url must be and authorized_uris if defined
|
|
204
|
-
* @param ctx
|
|
205
|
-
*/
|
|
206
|
-
_redirect(ctx) {
|
|
207
|
-
// implement default behavior
|
|
208
|
-
let redirect_uri = this.parameters.redirect_uri || `${ctx.getHttpContext().getAbsoluteUrl()}/callback`;
|
|
209
|
-
let redirect = ctx.getParameters().redirect || ctx.getHttpContext().getHeaders().referer;
|
|
210
|
-
if (!this.isAuthorizedUri(redirect, ctx)) {
|
|
211
|
-
throw new WebdaError.Unauthorized("Unauthorized redirect parameter");
|
|
277
|
+
/**
|
|
278
|
+
* Expose the scope used by the authentication
|
|
279
|
+
* @param ctx - the operation context
|
|
280
|
+
*/
|
|
281
|
+
_scope(ctx) {
|
|
282
|
+
ctx.write(this.parameters.scope);
|
|
212
283
|
}
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
ctx.redirect(this.generateAuthUrl(redirect_uri, session.oauth.state, ctx));
|
|
220
|
-
}
|
|
221
|
-
/**
|
|
222
|
-
* Handle a token return
|
|
223
|
-
*
|
|
224
|
-
* This is private to avoid any override
|
|
225
|
-
* @param context
|
|
226
|
-
*/
|
|
227
|
-
async _token(context) {
|
|
228
|
-
const res = await this.handleToken(context);
|
|
229
|
-
await this.handleReturn(context, res.identId, res.profile);
|
|
230
|
-
await this.emitSync("OAuth.Callback", {
|
|
231
|
-
...res,
|
|
232
|
-
type: "token",
|
|
233
|
-
provider: this.getName(),
|
|
234
|
-
context
|
|
235
|
-
});
|
|
236
|
-
this.metrics.login.inc({ method: "token" });
|
|
237
|
-
}
|
|
238
|
-
/**
|
|
239
|
-
* Handle a standard url callback
|
|
240
|
-
*
|
|
241
|
-
* This is private to avoid any override
|
|
242
|
-
* @param ctx
|
|
243
|
-
*/
|
|
244
|
-
async _callback(ctx) {
|
|
245
|
-
const res = await this.handleCallback(ctx);
|
|
246
|
-
await this.handleReturn(ctx, res.identId, res.profile);
|
|
247
|
-
await this.emitSync("OAuth.Callback", {
|
|
248
|
-
...res,
|
|
249
|
-
type: "callback",
|
|
250
|
-
provider: this.getName(),
|
|
251
|
-
context: ctx
|
|
252
|
-
});
|
|
253
|
-
this.metrics.login.inc({ method: "callback" });
|
|
254
|
-
}
|
|
255
|
-
/**
|
|
256
|
-
* Once approved by the OAuth provider this will do the common task
|
|
257
|
-
* @param ctx
|
|
258
|
-
* @param identId
|
|
259
|
-
* @param profile
|
|
260
|
-
*/
|
|
261
|
-
async handleReturn(ctx, identId, profile, _tokens = undefined) {
|
|
262
|
-
// If no identId has been provided error
|
|
263
|
-
if (!identId) {
|
|
264
|
-
throw new WebdaError.Forbidden("No identId provided by the OAuth provider");
|
|
284
|
+
/**
|
|
285
|
+
* Define if this provider allow authentication by tokens
|
|
286
|
+
* @returns true if the condition is met
|
|
287
|
+
*/
|
|
288
|
+
hasToken() {
|
|
289
|
+
return false;
|
|
265
290
|
}
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
291
|
+
/**
|
|
292
|
+
* Check if the url is authorized
|
|
293
|
+
* @param redirect - the redirect URL
|
|
294
|
+
* @param context - the execution context
|
|
295
|
+
* @returns true if the condition is met
|
|
296
|
+
*/
|
|
297
|
+
isAuthorizedUri(redirect, context) {
|
|
298
|
+
return (!this.parameters.authorized_uris || // If no authorized_uris defined, allow all
|
|
299
|
+
this.authorized_uris?.validate(redirect) || // If redirect is included in authorized_uris
|
|
300
|
+
(this.parameters.no_referer && !context.getHttpContext().getUniqueHeader("referer"))); // If no_referer is allowed
|
|
272
301
|
}
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
302
|
+
/**
|
|
303
|
+
* Inject the provider name into openapi template replacements so the
|
|
304
|
+
* `${name}` placeholders in `@Route` metadata resolve per-instance.
|
|
305
|
+
*
|
|
306
|
+
* @returns replacements map merged with defaults
|
|
307
|
+
*/
|
|
308
|
+
getOpenApiReplacements() {
|
|
309
|
+
return { ...super.getOpenApiReplacements(), name: this.getName() };
|
|
278
310
|
}
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
311
|
+
/**
|
|
312
|
+
* Redirect to the OAuth provider
|
|
313
|
+
*
|
|
314
|
+
* The calling url must be and authorized_uris if defined
|
|
315
|
+
* @param ctx - the operation context
|
|
316
|
+
*/
|
|
317
|
+
_redirect(ctx) {
|
|
318
|
+
// implement default behavior
|
|
319
|
+
const redirect_uri = this.parameters.redirect_uri || `${ctx.getHttpContext().getAbsoluteUrl()}/callback`;
|
|
320
|
+
const redirect = ctx.getParameters().redirect || ctx.getHttpContext().getHeaders().referer;
|
|
321
|
+
if (!this.isAuthorizedUri(redirect, ctx)) {
|
|
322
|
+
throw new WebdaError.Unauthorized("Unauthorized redirect parameter");
|
|
323
|
+
}
|
|
324
|
+
const session = ctx.getSession();
|
|
325
|
+
session.oauth ??= {};
|
|
326
|
+
// Generate 2 random uuid: nonce and state
|
|
327
|
+
session.oauth.state = getUuid("base64");
|
|
328
|
+
// Redirect to the calling uri
|
|
329
|
+
session.oauth.redirect = redirect;
|
|
330
|
+
ctx.redirect(this.generateAuthUrl(redirect_uri, session.oauth.state, ctx));
|
|
282
331
|
}
|
|
283
|
-
|
|
284
|
-
|
|
332
|
+
/**
|
|
333
|
+
* Handle a token return
|
|
334
|
+
*
|
|
335
|
+
* This is private to avoid any override
|
|
336
|
+
* @param context - the execution context
|
|
337
|
+
*/
|
|
338
|
+
async _token(context) {
|
|
339
|
+
const res = await this.handleToken(context);
|
|
340
|
+
await this.handleReturn(context, res.identId, res.profile);
|
|
341
|
+
await this.emit("OAuth.Callback", {
|
|
342
|
+
...res,
|
|
343
|
+
type: "token",
|
|
344
|
+
provider: this.getName(),
|
|
345
|
+
context
|
|
346
|
+
});
|
|
347
|
+
this.metrics.login.inc({ method: "token" });
|
|
285
348
|
}
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
349
|
+
/**
|
|
350
|
+
* Handle a standard url callback
|
|
351
|
+
*
|
|
352
|
+
* This is private to avoid any override
|
|
353
|
+
* @param ctx - the operation context
|
|
354
|
+
*/
|
|
355
|
+
async _callback(ctx) {
|
|
356
|
+
const res = await this.handleCallback(ctx);
|
|
357
|
+
await this.handleReturn(ctx, res.identId, res.profile);
|
|
358
|
+
await this.emit("OAuth.Callback", {
|
|
359
|
+
...res,
|
|
360
|
+
type: "callback",
|
|
361
|
+
provider: this.getName(),
|
|
362
|
+
context: ctx
|
|
363
|
+
});
|
|
364
|
+
this.metrics.login.inc({ method: "callback" });
|
|
365
|
+
}
|
|
366
|
+
/**
|
|
367
|
+
* Once approved by the OAuth provider this will do the common task
|
|
368
|
+
* @param ctx - the operation context
|
|
369
|
+
* @param identId - the identity identifier
|
|
370
|
+
* @param profile - the user profile
|
|
371
|
+
* @param _tokens - the authentication tokens
|
|
372
|
+
*/
|
|
373
|
+
async handleReturn(ctx, identId, profile, _tokens = undefined) {
|
|
374
|
+
// If no identId has been provided error
|
|
375
|
+
if (!identId) {
|
|
376
|
+
throw new WebdaError.Forbidden("No identId provided by the OAuth provider");
|
|
377
|
+
}
|
|
378
|
+
const session = ctx.getSession();
|
|
379
|
+
session.oauth ??= {};
|
|
380
|
+
// If authentication service then create a User/Ident couple
|
|
381
|
+
if (this._authenticationService) {
|
|
382
|
+
// Should call the onIdentLogin()
|
|
383
|
+
await this._authenticationService.onIdentLogin(ctx, this.getName().toLowerCase(), identId, profile);
|
|
384
|
+
}
|
|
385
|
+
else {
|
|
386
|
+
// Login in session
|
|
387
|
+
ctx.getSession().login(identId, identId);
|
|
388
|
+
// Store the profile retrieved
|
|
389
|
+
session.oauth.profile = profile;
|
|
390
|
+
}
|
|
391
|
+
// Redirect to our targets
|
|
392
|
+
if (session.oauth.redirect) {
|
|
393
|
+
ctx.redirect(session.oauth.redirect);
|
|
394
|
+
}
|
|
395
|
+
else {
|
|
396
|
+
ctx.write("Your authentication is successful");
|
|
397
|
+
}
|
|
398
|
+
// Clean variables from session
|
|
399
|
+
session.oauth.state = undefined;
|
|
400
|
+
session.oauth.redirect = undefined;
|
|
401
|
+
}
|
|
402
|
+
};
|
|
403
|
+
})();
|
|
404
|
+
export { OAuthService };
|
|
291
405
|
//# sourceMappingURL=oauth.js.map
|