diff --git a/CHANGELOG.md b/CHANGELOG.md index e94e6f2..bb88c80 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,3 +15,7 @@ ## 0.0.5 (May 25, 2022) - Enable Doppler Service Token to be passed as a parameter to the Doppler provider + +## 0.0.6 (July 25, 2023) + +- Enable Doppler Project and Doppler Config to be passed as a parameter to the Doppler provider diff --git a/package.json b/package.json index 028f0f5..15db8f0 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "gitops-secrets", - "version": "0.0.5", + "version": "0.0.6", "author": "Ryan Blunden ", "description": "SecretOps workflow for bundling encrypted secrets into your deployments to safely decrypt at runtime.", "repository": { diff --git a/src/providers/doppler.js b/src/providers/doppler.js index 87d1d01..3bbb909 100644 --- a/src/providers/doppler.js +++ b/src/providers/doppler.js @@ -1,23 +1,26 @@ const https = require("https"); +const querystring = require("querystring"); const { VERSION } = require("../meta"); /** * Fetch secrets from Doppler the API. - * @param {{dopplerToken: string}} [{dopplerToken: process.env.DOPPLER_TOKEN}] Requires a Doppler Service Token for API authentication. See https://docs.doppler.com/docs/enclave-service-tokens + * @param {{dopplerToken: string}} [{dopplerToken: process.env.DOPPLER_TOKEN}] Requires a Doppler Token for API authentication. See https://docs.doppler.com/docs/enclave-service-tokens + * @param {{dopplerProject: string}} [{dopplerProject: null}] Optional Doppler Project. Required when using any token type other than Service Tokens. + * @param {{dopplerConfig: string}} [{dopplerConfig: null}] Optional Doppler Config. Required when using any token type other than Service Tokens. * @returns {() => Promise>} */ -async function fetch({ dopplerToken = process.env.DOPPLER_TOKEN } = {}) { +async function fetch({ dopplerToken = process.env.DOPPLER_TOKEN, dopplerProject = null, dopplerConfig = null } = {}) { if (!dopplerToken) { throw new Error("Doppler API Error: The 'DOPPLER_TOKEN' environment variable is required"); } return new Promise(function (resolve, reject) { - const encodedAuthData = Buffer.from(`${dopplerToken}:`).toString("base64"); - const authHeader = `Basic ${encodedAuthData}`; + const authHeader = `Bearer ${dopplerToken}`; const userAgent = `gitops-secrets-nodejs/${VERSION}`; + const query = { format: "json", project: dopplerProject, config: dopplerConfig }; https .get( - "https://api.doppler.com/v3/configs/config/secrets/download?format=json", + `https://api.doppler.com/v3/configs/config/secrets/download?${querystring.stringify(query)}`, { headers: { Authorization: authHeader,