decide.nolog.cz/mirage/utils/encrypt.js

29 lines
867 B
JavaScript
Raw Normal View History

2016-12-19 17:04:09 +01:00
/*
* Encrypts all properties in mirage model (created by factory), encrypts them using
* sjcl and encryptionKey property of model as passphrase.
* Unsets encryptionKey property afterwards.
*/
import Ember from 'ember';
import sjcl from 'sjcl';
const { assert, get, isArray, isPresent } = Ember;
export default function(propertiesToEncrypt, model) {
assert(isArray(propertiesToEncrypt), 'first argument must be an array');
assert(isPresent(get(model, 'encryptionKey')), 'model must have an encryptionKey property which isn\'t empty');
let passphrase = get(model, 'encryptionKey');
let data = {
encryptionKey: undefined
};
propertiesToEncrypt.forEach((propertyToEncrypt) => {
let value = JSON.stringify(
get(model, propertyToEncrypt)
);
data[propertyToEncrypt] = sjcl.encrypt(passphrase, value);
});
model.update(data);
}