diff --git a/lib/www/server/queues/asaqc/despatch.js b/lib/www/server/queues/asaqc/despatch.js index c318184..8618651 100644 --- a/lib/www/server/queues/asaqc/despatch.js +++ b/lib/www/server/queues/asaqc/despatch.js @@ -32,6 +32,7 @@ function httpsAgent () { * https://api.equinor.com/docs/services/vessel-track/operations/FileUploadEncoded */ async function despatchPayload(payload) { + cfg.args.headers["Ocp-Apim-Subscription-Key"] = process.env.DOUGAL_ASAQC_SUBSCRIPTION_KEY; try { const res = await fetch(cfg.url, { diff --git a/lib/www/server/queues/asaqc/dummy_server/api/index.js b/lib/www/server/queues/asaqc/dummy_server/api/index.js index 74bc747..3d2574b 100644 --- a/lib/www/server/queues/asaqc/dummy_server/api/index.js +++ b/lib/www/server/queues/asaqc/dummy_server/api/index.js @@ -69,7 +69,7 @@ app.use((req, res, next) => { app.map({ '/vt/v1/api/upload-file-encoded': { - post: [ mw.post ] + post: [ mw.authorisation, mw.post ] } }); diff --git a/lib/www/server/queues/asaqc/dummy_server/api/middleware/authorisation.js b/lib/www/server/queues/asaqc/dummy_server/api/middleware/authorisation.js new file mode 100644 index 0000000..6884efd --- /dev/null +++ b/lib/www/server/queues/asaqc/dummy_server/api/middleware/authorisation.js @@ -0,0 +1,25 @@ + +/** + * This method imitates the ASAQC header-based + * authorisation. + * + * The valid subscription token should be defined + * in the $DOUGAL_ASAQC_SUBSCRIPTION_KEY environent + * variable (e.g., by inclusion in .dougalrc). + */ +module.exports = async function (req, res, next) { + + try { + const authSent = req.get("Ocp-Apim-Subscription-Key"); + const authExpected = process.env.DOUGAL_ASAQC_SUBSCRIPTION_KEY; + + if (authSent == authExpected || !authSent) { + next() + } else { + throw {status: 401, message: "Not authorised"}; + } + } catch (err) { + next(err); + } + +}; diff --git a/lib/www/server/queues/asaqc/dummy_server/api/middleware/index.js b/lib/www/server/queues/asaqc/dummy_server/api/middleware/index.js index fa93531..7b5cc21 100644 --- a/lib/www/server/queues/asaqc/dummy_server/api/middleware/index.js +++ b/lib/www/server/queues/asaqc/dummy_server/api/middleware/index.js @@ -1,3 +1,4 @@ module.exports = { + authorisation: require('./authorisation'), post: require('./post') };