typeorm-encrypted
Version:
encrypted typeorm fields
49 lines • 1.61 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const typeorm_1 = require("typeorm");
const crypto_1 = require("./crypto");
/**
* Encrypt fields on entity.
*/
function encrypt(entity) {
if (!entity) {
return entity;
}
for (let columnMetadata of typeorm_1.getMetadataArgsStorage().columns) {
let { propertyName, mode, target } = columnMetadata;
let options = columnMetadata.options;
let encrypt = options.encrypt;
if (encrypt &&
mode === 'regular' &&
(encrypt.looseMatching || entity.constructor === target)) {
if (entity[propertyName]) {
entity[propertyName] = crypto_1.encryptData(Buffer.from(entity[propertyName], 'utf8'), encrypt).toString('base64');
}
}
}
return entity;
}
exports.encrypt = encrypt;
/**
* Decrypt fields on entity.
*/
function decrypt(entity) {
if (!entity) {
return entity;
}
for (let columnMetadata of typeorm_1.getMetadataArgsStorage().columns) {
let { propertyName, mode, target } = columnMetadata;
let options = columnMetadata.options;
let encrypt = options.encrypt;
if (encrypt &&
mode === 'regular' &&
(encrypt.looseMatching || entity.constructor === target)) {
if (entity[propertyName]) {
entity[propertyName] = crypto_1.decryptData(Buffer.from(entity[propertyName], 'base64'), encrypt).toString('utf8');
}
}
}
return entity;
}
exports.decrypt = decrypt;
//# sourceMappingURL=entity.js.map