41 lines
1.2 KiB
JavaScript
41 lines
1.2 KiB
JavaScript
const { SecretsManagerClient, GetSecretValueCommand } = require("@aws-sdk/client-secrets-manager");
|
|
const { InstanceRegion } = require("../../utils/instanceMgr");
|
|
|
|
const client = new SecretsManagerClient({
|
|
region: InstanceRegion()
|
|
});
|
|
|
|
/**
|
|
* @description Get shop credentials from AWS Secrets Manager
|
|
* @param bodyshop
|
|
* @returns {Promise<{error}|{merchantkey: *, apikey: *}|any>}
|
|
*/
|
|
const getShopCredentials = async (bodyshop) => {
|
|
// In Dev/Testing we will use the environment variables
|
|
if (process.env?.NODE_ENV !== "production") {
|
|
return {
|
|
merchantkey: process.env.INTELLIPAY_MERCHANTKEY,
|
|
apikey: process.env.INTELLIPAY_APIKEY
|
|
};
|
|
}
|
|
|
|
// In Production, we will use the AWS Secrets Manager
|
|
if (bodyshop?.imexshopid) {
|
|
try {
|
|
const secret = await client.send(
|
|
new GetSecretValueCommand({
|
|
SecretId: `intellipay-credentials-${bodyshop.imexshopid}`,
|
|
VersionStage: "AWSCURRENT" // VersionStage defaults to AWSCURRENT if unspecified
|
|
})
|
|
);
|
|
return JSON.parse(secret.SecretString);
|
|
} catch (error) {
|
|
return {
|
|
error: error.message
|
|
};
|
|
}
|
|
}
|
|
};
|
|
|
|
module.exports = getShopCredentials;
|