decide.nolog.cz/mirage/utils/encrypt.js
renovate[bot] 98ff62af80
Update dependency prettier to v3 (#668)
* 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>
2023-10-17 10:44:45 +02:00

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);
}