98ff62af80
* Update dependency prettier to v3 * upgrade eslint-plugin-prettier and run prettier on all files --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Jeldrik Hanschke <admin@jhanschke.de>
30 lines
932 B
JavaScript
30 lines
932 B
JavaScript
/*
|
|
* 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 { assert } from '@ember/debug';
|
|
import { isPresent } from '@ember/utils';
|
|
import { isArray } from '@ember/array';
|
|
import { get } from '@ember/object';
|
|
import sjcl from 'sjcl';
|
|
|
|
export default function (propertiesToEncrypt, model) {
|
|
assert('first argument must be an array', isArray(propertiesToEncrypt));
|
|
assert(
|
|
"model must have an encryptionKey property which isn't empty",
|
|
isPresent(model.encryptionKey),
|
|
);
|
|
|
|
let passphrase = 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);
|
|
}
|