Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- exports.addUserQuery = functions.https.onCall(async (data, context) => {
- try {
- const nummy = admin.firestore.FieldValue.serverTimestamp();
- const db = admin.firestore();
- // Getting secret key for user to add to the end of each encryption
- let userSecret;
- const userSecretPath = db
- .collection('users')
- .doc('filler')
- .collection(data.userUID)
- .doc('secKey');
- let doc = await userSecretPath.get();
- userSecret = doc.data().secKeyStr;
- const rawObjectToAdd = data.objectToAdd;
- const randomID = data.randomID;
- const isLink = data.isLink;
- let encryptedObjectToAdd = {};
- const encryptionKey = data.hashedSetMasterPassValue;
- const newQueryPath = db
- .collection('users')
- .doc('filler')
- .collection(data.userUID)
- .doc('mpaps')
- .collection('ps')
- .doc();
- let infoArray = [];
- for (const [key, value] of Object.entries(rawObjectToAdd)) {
- // Encrypting values from object and putting it in a new encrypted object
- infoArray.push(`${key}: ${value}`);
- encryptedObjectToAdd[key] =
- CryptoJS.AES.encrypt(value, encryptionKey).toString() + userSecret;
- }
- encryptedObjectToAdd.isLink = isLink;
- encryptedObjectToAdd.random = randomID;
- const stringifiedEncryptedObject = JSON.stringify(encryptedObjectToAdd);
- const batch = db.batch();
- batch.create(newQueryPath, {
- combinedQueryInfo: stringifiedEncryptedObject,
- nummy: nummy,
- });
- try {
- await batch.commit();
- return {
- ERROR: 'None',
- data: data,
- encryptedObj: encryptedObjectToAdd,
- stringifiedEncryptedObject: stringifiedEncryptedObject,
- newQueryPath: newQueryPath,
- infoArray: infoArray,
- rawObjectToAdd: rawObjectToAdd,
- };
- } catch (err) {
- return {
- ERROR: err,
- data: data,
- encryptedObj: encryptedObjectToAdd,
- stringifiedEncryptedObject: stringifiedEncryptedObject,
- newQueryPath: newQueryPath,
- infoArray: infoArray,
- rawObjectToAdd: rawObjectToAdd,
- };
- }
- } catch (err) {
- return { ERROR: err };
- }
- });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement