Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
initializeFilter(client, context, callback) {
const AWS_ACCESS_KEY_ID = process.env.AWS_ACCESS_KEY_ID;
const AWS_SECRET_ACCESS_KEY = process.env.AWS_SECRET_ACCESS_KEY;
let mongodbClientEncryption;
try {
mongodbClientEncryption = require('mongodb-client-encryption').extension(mongodb);
} catch (e) {
// Do Nothing
}
this.enabled = !!(AWS_ACCESS_KEY_ID && AWS_SECRET_ACCESS_KEY && mongodbClientEncryption);
// Adds these fields onto the context so that they can be reused by tests
context.clientSideEncryption = {
enabled: this.enabled,
mongodbClientEncryption,
AWS_ACCESS_KEY_ID,
AWS_SECRET_ACCESS_KEY
};
callback();
}
} catch (err) {
callback(
new MongoError(
'Auto-encryption requested, but the module is not installed. Please add `mongodb-client-encryption` as a dependency of your project'
)
);
return;
}
try {
let mongodbClientEncryption = require('mongodb-client-encryption');
if (typeof mongodbClientEncryption.extension !== 'function') {
throw new MongoError(
'loaded version of `mongodb-client-encryption` does not have property `extension`. Please make sure you are loading the correct version of `mongodb-client-encryption`'
);
}
AutoEncrypter = mongodbClientEncryption.extension(require('../../index')).AutoEncrypter;
} catch (err) {
callback(err);
return;
}
const mongoCryptOptions = Object.assign({}, options.autoEncryption);
topology.s.options.autoEncrypter = new AutoEncrypter(mongoClient, mongoCryptOptions);
topology.s.options.autoEncrypter.init(err => {
if (err) return callback(err, null);
callback(null, topology);
});
});
}
} catch (err) {
callback(
new MongoError(
'Auto-encryption requested, but the module is not installed. Please add `mongodb-client-encryption` as a dependency of your project'
)
);
return;
}
try {
let mongodbClientEncryption = require('mongodb-client-encryption');
if (typeof mongodbClientEncryption.extension !== 'function') {
throw new MongoError(
'loaded version of `mongodb-client-encryption` does not have property `extension`. Please make sure you are loading the correct version of `mongodb-client-encryption`'
);
}
AutoEncrypter = mongodbClientEncryption.extension(require('../../index')).AutoEncrypter;
} catch (err) {
callback(err);
return;
}
const mongoCryptOptions = Object.assign({}, options.autoEncryption);
topology.s.options.autoEncrypter = new AutoEncrypter(mongoClient, mongoCryptOptions);
topology.s.options.autoEncrypter.init(err => {
if (err) return callback(err, null);
callback(null, topology);
});
});
}