mirror of
https://github.com/dadosfera/maestro.git
synced 2026-09-22 15:34:47 +00:00
52 lines
1.5 KiB
TypeScript
52 lines
1.5 KiB
TypeScript
import {
|
|
SecretsManagerClient,
|
|
GetSecretValueCommand,
|
|
} from '@aws-sdk/client-secrets-manager';
|
|
let cachedSecrets: OauthSecrets;
|
|
|
|
class OauthSecretsObject {
|
|
client_id = '';
|
|
client_secret = '';
|
|
redirect_uri = '';
|
|
}
|
|
// @Injectable()
|
|
export class OauthSecrets {
|
|
hubspot = new OauthSecretsObject();
|
|
google = new OauthSecretsObject();
|
|
mailchimp = new OauthSecretsObject();
|
|
facebook = new OauthSecretsObject();
|
|
salesforce = new OauthSecretsObject();
|
|
'google-login' = new OauthSecretsObject();
|
|
}
|
|
export async function getOauthSecrets() {
|
|
if (cachedSecrets) return cachedSecrets;
|
|
const secrets = new OauthSecrets();
|
|
const path = process.env.SM_OAUTH_PATH;
|
|
const secretsManagerClient = new SecretsManagerClient({});
|
|
for (const key in secrets) {
|
|
console.log(`Fetching secret for ${key} from path ${path}/${key}`);
|
|
const getSecretComand = new GetSecretValueCommand({
|
|
SecretId: `${path}/${key}`,
|
|
});
|
|
const res = await secretsManagerClient
|
|
.send(getSecretComand)
|
|
.catch((err) => {
|
|
console.error(`Error fetching secret for ${key}:`, err);
|
|
return null;
|
|
});
|
|
if (res) {
|
|
secrets[key] = JSON.parse(res.SecretString);
|
|
console.log(JSON.parse(res.SecretString).client_id)
|
|
} else {
|
|
console.log("No secret found for", key);
|
|
secrets[key] = {
|
|
client_id: 'id',
|
|
client_secret: 'id',
|
|
redirect_uri: 'id',
|
|
};
|
|
}
|
|
}
|
|
cachedSecrets = secrets;
|
|
return secrets;
|
|
}
|