From d3b2e1f24be60028bf98d00ee31172a4e0c4bc9e Mon Sep 17 00:00:00 2001 From: prafull-opensignlabs Date: Thu, 25 Jan 2024 18:04:22 +0530 Subject: [PATCH] fix: all body parameter must be in lowercase --- .../v1/routes/CreateDocumentWithTemplate.js | 82 ++++-- .../customRoute/v1/routes/createContact.js | 242 ++++++++++-------- .../customRoute/v1/routes/createDocument.js | 100 ++++---- .../customRoute/v1/routes/createTemplate.js | 70 +++-- .../cloud/customRoute/v1/routes/getWebhook.js | 1 - .../customRoute/v1/routes/saveWebhook.js | 2 +- .../customRoute/v1/routes/updateDocument.js | 4 +- .../customRoute/v1/routes/updateTemplate.js | 2 +- .../cloud/parsefunction/DocumentAftersave.js | 29 +-- .../cloud/parsefunction/TemplateAfterSave.js | 15 +- 10 files changed, 306 insertions(+), 241 deletions(-) diff --git a/apps/OpenSignServer/cloud/customRoute/v1/routes/CreateDocumentWithTemplate.js b/apps/OpenSignServer/cloud/customRoute/v1/routes/CreateDocumentWithTemplate.js index 3ae07bac3..6efa6f84d 100644 --- a/apps/OpenSignServer/cloud/customRoute/v1/routes/CreateDocumentWithTemplate.js +++ b/apps/OpenSignServer/cloud/customRoute/v1/routes/CreateDocumentWithTemplate.js @@ -1,9 +1,17 @@ const randomId = () => Math.floor(1000 + Math.random() * 9000); export default async function createDocumentWithTemplate(request, response) { - const signers = request.body.Signers; - const folderId = request.body.FolderId; + const signers = request.body.signers; + const folderId = request.body.folderId; const templateId = request.params.template_id; - const url = process.env.SERVER_URL; + const url = request?.get('host'); + let protocol = 'https://' + url; + if (request.hostname === 'localhost') { + // console.log('Running in development environment'); + protocol = 'http://' + url; + } else { + // console.log('Running in production environment'); + protocol = 'https://' + url; + } try { const reqToken = request.headers['x-api-token']; if (!reqToken) { @@ -40,31 +48,52 @@ export default async function createDocumentWithTemplate(request, response) { if (template?.Description) { object.set('Description', template.Description); } - if (template?.Signers) { - object.set('Signers', template?.Signers); + let templateSigner = template?.Signers ? template?.Signers : []; + if (signers && signers.length > 0) { + let parseSigners; + if (base64File) { + parseSigners = signers; + } else { + parseSigners = JSON.parse(signers); + } + let createContactUrl = protocol + '/v1/createcontact'; + + let contact = []; + for (const obj of parseSigners) { + const body = { + name: obj?.name || '', + email: obj?.email || '', + phone: obj?.phone || '', + }; + try { + const res = await axios.post(createContactUrl, body, { + headers: { 'Content-Type': 'application/json', 'x-api-token': reqToken }, + }); + // console.log('res ', res.data); + contact.push({ + __type: 'Pointer', + className: 'contracts_Contactbook', + objectId: res.data?.objectId, + }); + } catch (err) { + // console.log('err ', err.response); + if (err?.response?.data?.objectId) { + contact.push({ + __type: 'Pointer', + className: 'contracts_Contactbook', + objectId: err.response.data?.objectId, + }); + } + } + } + object.set('Signers', [...templateSigner, ...contact]); + } else { + object.set('Signers', templateSigner); } + object.set('URL', template.URL); object.set('CreatedBy', template.CreatedBy); object.set('ExtUserPtr', template.ExtUserPtr); - if (signers) { - const placeholders = template?.Placeholders?.map(placeholder => { - let matchingSigner = signers.find(y => y.Role === placeholder.Role); - if (matchingSigner) { - return { - ...placeholder, - email: matchingSigner.Email, - signerObjId: '', - signerPtr: {}, - }; - } else { - return { - ...placeholder, - }; - } - }); - console.log('placeholders ', placeholders); - object.set('Placeholders', placeholders); - } if (folderId) { object.set('Folder', folderPtr); } @@ -75,7 +104,10 @@ export default async function createDocumentWithTemplate(request, response) { newACL.setWriteAccess(userPtr.id, true); object.setACL(newACL); const res = await object.save(null, { useMasterKey: true }); - return response.json({ objectId: res.id, url: url }); + return response.json({ + objectId: res.id, + url: protocol + '/load/signmicroapp/placeholdersign/' + res.id, + }); } else { return response.status(400).json({ error: 'Please provide signers properly!' }); } diff --git a/apps/OpenSignServer/cloud/customRoute/v1/routes/createContact.js b/apps/OpenSignServer/cloud/customRoute/v1/routes/createContact.js index 59aa21aa2..ba6ffa503 100644 --- a/apps/OpenSignServer/cloud/customRoute/v1/routes/createContact.js +++ b/apps/OpenSignServer/cloud/customRoute/v1/routes/createContact.js @@ -2,9 +2,9 @@ import axios from 'axios'; export default async function createContact(request, response) { const serverUrl = process.env.SERVER_URL; const appId = process.env.APP_ID; - const name = request.body.Name; - const phone = request.body.Phone; - const email = request.body.Email; + const name = request.body.name; + const phone = request.body.phone; + const email = request.body.email; const reqToken = request.headers['x-api-token']; if (!reqToken) { return response.status(400).json({ error: 'Please Provide API Token' }); @@ -16,127 +16,143 @@ export default async function createContact(request, response) { // Valid Token then proceed request const userPtr = token.get('userId'); try { - const Tenant = new Parse.Query('partners_Tenant'); - Tenant.equalTo('UserId', userPtr); - const tenantRes = await Tenant.first({ useMasterKey: true }); + const contactbook = new Parse.Query('contracts_Contactbook'); + contactbook.equalTo('Email', email); + contactbook.equalTo('CreatedBy', userPtr); - const contactQuery = new Parse.Object('contracts_Contactbook'); - contactQuery.set('Name', name); - contactQuery.set('Phone', phone); - contactQuery.set('Email', email); - contactQuery.set('UserRole', 'contracts_Guest'); - if (tenantRes && tenantRes.id) { - contactQuery.set('TenantId', { - __type: 'Pointer', - className: 'partners_Tenant', - objectId: tenantRes.id, - }); - } - try { - const _users = Parse.Object.extend('User'); - const _user = new _users(); - _user.set('name', name); - _user.set('username', email); - _user.set('email', email); - _user.set('phone', phone); - _user.set('password', phone); + const userExists = await contactbook.first({ useMasterKey: true }); - const user = await _user.save(); - if (user) { - const roleurl = `${serverUrl}/functions/AddUserToRole`; - const headers = { - 'Content-Type': 'application/json', - 'X-Parse-Application-Id': appId, - // sessionToken: localStorage.getItem('accesstoken'), - }; - const body = { - appName: 'contracts', - roleName: 'contracts_Guest', - userId: user.id, - }; - await axios.post(roleurl, body, { headers: headers }); - const currentUser = userPtr; - contactQuery.set('CreatedBy', currentUser); - contactQuery.set('UserId', user); + if (userExists) { + return response + .status(401) + .json({ error: 'Contact already exists!', objectId: userExists.id }); + } else { + try { + const Tenant = new Parse.Query('partners_Tenant'); + Tenant.equalTo('UserId', userPtr); + const tenantRes = await Tenant.first({ useMasterKey: true }); - const acl = new Parse.ACL(); - acl.setReadAccess(userPtr.id, true); - acl.setWriteAccess(userPtr.id, true); - acl.setReadAccess(user.id, true); - acl.setWriteAccess(user.id, true); - contactQuery.setACL(acl); - - const contactRes = await contactQuery.save(); - const parseRes = JSON.parse(JSON.stringify(contactRes)); - return response.json({ - objectId: parseRes.objectId, - Name: parseRes.Name, - Email: parseRes.Email, - Phone: parseRes.Phone, - createdAt: parseRes.createdAt, - updatedAt: parseRes.updatedAt, - }); - } - } catch (err) { - console.log('err in', err); - if (err.code === 202) { - const params = { email: email }; - const userRes = await Parse.Cloud.run('getUserId', params); - const roleurl = `${serverUrl}/functions/AddUserToRole`; - const headers = { - 'Content-Type': 'application/json', - 'X-Parse-Application-Id': appId, - // sessionToken: localStorage.getItem('accesstoken'), - }; - const body = { - appName: 'contracts', - roleName: 'contracts_Guest', - userId: userRes.id, - }; - await axios.post(roleurl, body, { headers: headers }); - contactQuery.set('CreatedBy', userPtr); - contactQuery.set('UserId', { - __type: 'Pointer', - className: '_User', - objectId: userRes.id, - }); - const acl = new Parse.ACL(); - acl.setReadAccess(userPtr.id, true); - acl.setWriteAccess(userPtr.id, true); - acl.setReadAccess(userRes.id, true); - acl.setWriteAccess(userRes.id, true); - - contactQuery.setACL(acl); - const contactRes = await contactQuery.save(); - if (contactRes) { - const parseRes = JSON.parse(JSON.stringify(contactRes)); - return response.json({ - objectId: parseRes.objectId, - Name: parseRes.Name, - Email: parseRes.Email, - Phone: parseRes.Phone, - createdAt: parseRes.createdAt, - updatedAt: parseRes.updatedAt, + const contactQuery = new Parse.Object('contracts_Contactbook'); + contactQuery.set('Name', name); + contactQuery.set('Phone', phone); + contactQuery.set('Email', email); + contactQuery.set('UserRole', 'contracts_Guest'); + if (tenantRes && tenantRes.id) { + contactQuery.set('TenantId', { + __type: 'Pointer', + className: 'partners_Tenant', + objectId: tenantRes.id, }); } - } else { + try { + const _users = Parse.Object.extend('User'); + const _user = new _users(); + _user.set('name', name); + _user.set('username', email); + _user.set('email', email); + _user.set('phone', phone); + _user.set('password', phone); + + const user = await _user.save(); + if (user) { + const roleurl = `${serverUrl}/functions/AddUserToRole`; + const headers = { + 'Content-Type': 'application/json', + 'X-Parse-Application-Id': appId, + // sessionToken: localStorage.getItem('accesstoken'), + }; + const body = { + appName: 'contracts', + roleName: 'contracts_Guest', + userId: user.id, + }; + await axios.post(roleurl, body, { headers: headers }); + const currentUser = userPtr; + contactQuery.set('CreatedBy', currentUser); + contactQuery.set('UserId', user); + + const acl = new Parse.ACL(); + acl.setReadAccess(userPtr.id, true); + acl.setWriteAccess(userPtr.id, true); + acl.setReadAccess(user.id, true); + acl.setWriteAccess(user.id, true); + contactQuery.setACL(acl); + + const contactRes = await contactQuery.save(); + const parseRes = JSON.parse(JSON.stringify(contactRes)); + return response.json({ + objectId: parseRes.objectId, + Name: parseRes.Name, + Email: parseRes.Email, + Phone: parseRes.Phone, + createdAt: parseRes.createdAt, + updatedAt: parseRes.updatedAt, + }); + } + } catch (err) { + console.log('err in', err); + if (err.code === 202) { + const params = { email: email }; + const userRes = await Parse.Cloud.run('getUserId', params); + const roleurl = `${serverUrl}/functions/AddUserToRole`; + const headers = { + 'Content-Type': 'application/json', + 'X-Parse-Application-Id': appId, + // sessionToken: localStorage.getItem('accesstoken'), + }; + const body = { + appName: 'contracts', + roleName: 'contracts_Guest', + userId: userRes.id, + }; + await axios.post(roleurl, body, { headers: headers }); + contactQuery.set('CreatedBy', userPtr); + contactQuery.set('UserId', { + __type: 'Pointer', + className: '_User', + objectId: userRes.id, + }); + const acl = new Parse.ACL(); + acl.setReadAccess(userPtr.id, true); + acl.setWriteAccess(userPtr.id, true); + acl.setReadAccess(userRes.id, true); + acl.setWriteAccess(userRes.id, true); + + contactQuery.setACL(acl); + const contactRes = await contactQuery.save(); + if (contactRes) { + const parseRes = JSON.parse(JSON.stringify(contactRes)); + return response.json({ + objectId: parseRes.objectId, + Name: parseRes.Name, + Email: parseRes.Email, + Phone: parseRes.Phone, + createdAt: parseRes.createdAt, + updatedAt: parseRes.updatedAt, + }); + } + } else { + if (err.code === 137) { + return response.status(401).json({ error: 'Contact already exists!' }); + } + return response + .status(400) + .json({ error: 'Something went wrong, please try again later!' }); + } + } + } catch (err) { + console.log('err ', err); if (err.code === 137) { return response.status(401).json({ error: 'Contact already exists!' }); + } else { + return response + .status(400) + .json({ error: 'Something went wrong, please try again later!' }); } - return response - .status(400) - .json({ error: 'Something went wrong, please try again later!' }); } } } catch (err) { - console.log('err ', err); - if (err.code === 137) { - return response.status(401).json({ error: 'Contact already exists!' }); - } else { - return response - .status(400) - .json({ error: 'Something went wrong, please try again later!' }); - } + return response.status(400).json({ error: 'Something went wrong, please try again later!' }); } } else { return response.status(405).json({ error: 'Invalid API Token!' }); diff --git a/apps/OpenSignServer/cloud/customRoute/v1/routes/createDocument.js b/apps/OpenSignServer/cloud/customRoute/v1/routes/createDocument.js index c34601520..e4c7a4a7f 100644 --- a/apps/OpenSignServer/cloud/customRoute/v1/routes/createDocument.js +++ b/apps/OpenSignServer/cloud/customRoute/v1/routes/createDocument.js @@ -1,16 +1,26 @@ // import batchQuery from './batchquery.js'; +import axios from 'axios'; + // const randomId = () => Math.floor(1000 + Math.random() * 9000); export default async function createDocument(request, response) { - const name = request.body.Title; - const note = request.body.Note; - const description = request.body.Description; - const signers = request.body.Signers; - const folderId = request.body.FolderId; - const base64File = request.body.File; + const name = request.body.title; + const note = request.body.note; + const description = request.body.description; + const signers = request.body.signers; + const folderId = request.body.folderId; + const base64File = request.body.file; const url = request?.get('host'); const fileData = request.files?.[0] ? request.files[0].buffer : null; // console.log('fileData ', fileData); + let protocol = 'https://' + url; + if (request.hostname === 'localhost') { + // console.log('Running in development environment'); + protocol = 'http://' + url; + } else { + // console.log('Running in production environment'); + protocol = 'https://' + url; + } try { const reqToken = request.headers['x-api-token']; if (!reqToken) { @@ -21,7 +31,7 @@ export default async function createDocument(request, response) { const token = await tokenQuery.first({ useMasterKey: true }); if (token !== undefined) { // Valid Token then proceed request - if (signers) { + if (signers && signers.length > 0) { const userPtr = token.get('userId'); let fileUrl; if (request.files?.[0]) { @@ -63,56 +73,44 @@ export default async function createDocument(request, response) { object.set('URL', fileUrl); object.set('CreatedBy', userPtr); object.set('ExtUserPtr', extUserPtr); - if (signers) { + if (signers && signers.length > 0) { let parseSigners; if (base64File) { parseSigners = signers; } else { parseSigners = JSON.parse(signers); } + let createContactUrl = protocol + '/v1/createcontact'; - const contactbook = new Parse.Query('contracts_Contactbook'); - contactbook.equalTo('UserId', userPtr); - contactbook.notEqualTo('IsDeleted', true); - contactbook.containedIn('Email', parseSigners); - const contactbookRes = await contactbook.find({ useMasterKey: true }); - // console.log('contactbookRes ', contactbookRes); - const parseContactbookRes = JSON.parse(JSON.stringify(contactbookRes)); - // console.log('userPtr ', userPtr); - // const newContacts = parseSigners - // .filter(x => !parseContactbookRes.some(y => y.Email === x)) - // .map(email => ({ - // method: 'POST', - // path: '/app/classes/contracts_Contactbook', - // body: { - // Email: email, - // CreatedBy: { __type: 'Pointer', className: '_User', objectId: userPtr.id }, - // UserId: { __type: 'Pointer', className: '_User', objectId: userPtr.id }, - // Role: 'contracts_Guest', - // IsDeleted: false, - // ACL: { - // [userPtr.id]: { read: true, write: true }, - // }, - // }, - // })); - // console.log('newContacts', newContacts); - let contactSigners = parseContactbookRes?.map(x => ({ - __type: 'Pointer', - className: 'contracts_Contactbook', - objectId: x.objectId, - })); - // if (newContacts.length > 0) { - // const batchRes = await batchQuery(newContacts); - // const contacts = batchRes?.map(x => ({ - // __type: 'Pointer', - // className: 'contracts_Contactbook', - // objectId: x.success.objectId, - // })); - // contactSigners = [...contactSigners, ...contacts]; - // } - // console.log('contactsigners', contactSigners); - - object.set('Signers', contactSigners); + let contact = []; + for (const obj of parseSigners) { + const body = { + name: obj?.name || '', + email: obj?.email || '', + phone: obj?.phone || '', + }; + try { + const res = await axios.post(createContactUrl, body, { + headers: { 'Content-Type': 'application/json', 'x-api-token': reqToken }, + }); + // console.log('res ', res.data); + contact.push({ + __type: 'Pointer', + className: 'contracts_Contactbook', + objectId: res.data?.objectId, + }); + } catch (err) { + // console.log('err ', err.response); + if (err?.response?.data?.objectId) { + contact.push({ + __type: 'Pointer', + className: 'contracts_Contactbook', + objectId: err.response.data?.objectId, + }); + } + } + } + object.set('Signers', contact); } if (folderId) { object.set('Folder', folderPtr); @@ -126,7 +124,7 @@ export default async function createDocument(request, response) { const res = await object.save(null, { useMasterKey: true }); return response.json({ objectId: res.id, - url: 'https://' + url + '/load/signmicroapp/placeholdersign/' + res.id, + url: protocol + '/load/signmicroapp/placeholdersign/' + res.id, }); } else { return response.status(400).json({ error: 'Please provide signers!' }); diff --git a/apps/OpenSignServer/cloud/customRoute/v1/routes/createTemplate.js b/apps/OpenSignServer/cloud/customRoute/v1/routes/createTemplate.js index ecd48381a..4879d7988 100644 --- a/apps/OpenSignServer/cloud/customRoute/v1/routes/createTemplate.js +++ b/apps/OpenSignServer/cloud/customRoute/v1/routes/createTemplate.js @@ -1,13 +1,21 @@ const randomId = () => Math.floor(1000 + Math.random() * 9000); export default async function createTemplate(request, response) { - const name = request.body?.Title; - const note = request.body?.Note; - const description = request.body?.Description; - const signers = request.body?.Signers; - const folderId = request.body?.FolderId; + const name = request.body?.title; + const note = request.body?.note; + const description = request.body?.description; + const signers = request.body?.signers; + const folderId = request.body?.folderId; const url = request?.get('host'); - const base64File = request.body.File; + const base64File = request.body.file; const fileData = request.files?.[0] ? request.files[0].buffer : null; + let protocol = 'https://' + url; + if (request.hostname === 'localhost') { + // console.log('Running in development environment'); + protocol = 'http://' + url; + } else { + // console.log('Running in production environment'); + protocol = 'https://' + url; + } try { const reqToken = request.headers['x-api-token']; if (!reqToken) { @@ -52,30 +60,44 @@ export default async function createTemplate(request, response) { object.set('URL', fileUrl); object.set('CreatedBy', userPtr); object.set('ExtUserPtr', extUserPtr); - if (signers) { + if (signers && signers.length > 0) { let parseSigners; if (base64File) { parseSigners = signers; } else { parseSigners = JSON.parse(signers); } + let createContactUrl = protocol + '/v1/createcontact'; - const contactbook = new Parse.Query('contracts_Contactbook'); - contactbook.containedIn('Email', parseSigners); - contactbook.equalTo('UserId', userPtr); - contactbook.notEqualTo('IsDeleted', true); - const contactbookRes = await contactbook.find({ useMasterKey: true }); - // console.log('contactbookRes ', contactbookRes); - const parseContactbookRes = JSON.parse(JSON.stringify(contactbookRes)); - - object.set( - 'Signers', - parseContactbookRes?.map(x => ({ - __type: 'Pointer', - className: 'contracts_Contactbook', - objectId: x.objectId, - })) - ); + let contact = []; + for (const obj of parseSigners) { + const body = { + name: obj?.name || '', + email: obj?.email || '', + phone: obj?.phone || '', + }; + try { + const res = await axios.post(createContactUrl, body, { + headers: { 'Content-Type': 'application/json', 'x-api-token': reqToken }, + }); + // console.log('res ', res.data); + contact.push({ + __type: 'Pointer', + className: 'contracts_Contactbook', + objectId: res.data?.objectId, + }); + } catch (err) { + // console.log('err ', err.response); + if (err?.response?.data?.objectId) { + contact.push({ + __type: 'Pointer', + className: 'contracts_Contactbook', + objectId: err.response.data?.objectId, + }); + } + } + } + object.set('Signers', contact); } if (folderId) { object.set('Folder', folderPtr); @@ -89,7 +111,7 @@ export default async function createTemplate(request, response) { const res = await object.save(null, { useMasterKey: true }); return response.json({ objectId: res.id, - url: 'https://' + url + '/load/signmicroapp/template/' + res.id, + url: protocol + '/load/signmicroapp/template/' + res.id, }); } else { return response.status(405).json({ error: 'Invalid API Token!' }); diff --git a/apps/OpenSignServer/cloud/customRoute/v1/routes/getWebhook.js b/apps/OpenSignServer/cloud/customRoute/v1/routes/getWebhook.js index 9b55c3cf0..c022d0d38 100644 --- a/apps/OpenSignServer/cloud/customRoute/v1/routes/getWebhook.js +++ b/apps/OpenSignServer/cloud/customRoute/v1/routes/getWebhook.js @@ -1,5 +1,4 @@ export default async function getWebhook(request, response) { - const Url = request.body.Url; const reqToken = request.headers['x-api-token']; if (!reqToken) { return response.status(400).json({ error: 'Please Provide API Token' }); diff --git a/apps/OpenSignServer/cloud/customRoute/v1/routes/saveWebhook.js b/apps/OpenSignServer/cloud/customRoute/v1/routes/saveWebhook.js index 3c2051a31..675fe6e90 100644 --- a/apps/OpenSignServer/cloud/customRoute/v1/routes/saveWebhook.js +++ b/apps/OpenSignServer/cloud/customRoute/v1/routes/saveWebhook.js @@ -1,5 +1,5 @@ export default async function saveWebhook(request, response) { - const Url = request.body.Url; + const Url = request.body.url; const reqToken = request.headers['x-api-token']; if (!reqToken) { return response.status(400).json({ error: 'Please Provide API Token' }); diff --git a/apps/OpenSignServer/cloud/customRoute/v1/routes/updateDocument.js b/apps/OpenSignServer/cloud/customRoute/v1/routes/updateDocument.js index 2f0b76c53..c6ecc0c2c 100644 --- a/apps/OpenSignServer/cloud/customRoute/v1/routes/updateDocument.js +++ b/apps/OpenSignServer/cloud/customRoute/v1/routes/updateDocument.js @@ -8,8 +8,8 @@ export default async function updateDocument(request, response) { tokenQuery.equalTo('token', reqToken); const token = await tokenQuery.first({ useMasterKey: true }); if (token !== undefined) { - // Valid Token then proceed request - const allowedKeys = ['Name', 'Note', 'Description']; + // Valid Token then proceed request + const allowedKeys = ['name', 'note', 'description']; const objectKeys = Object.keys(request.body); const isValid = objectKeys.every(key => allowedKeys.includes(key)) && objectKeys.length > 0; if (isValid) { diff --git a/apps/OpenSignServer/cloud/customRoute/v1/routes/updateTemplate.js b/apps/OpenSignServer/cloud/customRoute/v1/routes/updateTemplate.js index d3445bcf5..791844a8b 100644 --- a/apps/OpenSignServer/cloud/customRoute/v1/routes/updateTemplate.js +++ b/apps/OpenSignServer/cloud/customRoute/v1/routes/updateTemplate.js @@ -9,7 +9,7 @@ export default async function updateTemplate(request, response) { const token = await tokenQuery.first({ useMasterKey: true }); if (token !== undefined) { // Valid Token then proceed request - const allowedKeys = ['Name', 'Note', 'Description']; + const allowedKeys = ['name', 'note', 'description']; const objectKeys = Object.keys(request.body); const isValid = objectKeys.every(key => allowedKeys.includes(key)) && objectKeys.length > 0; if (isValid) { diff --git a/apps/OpenSignServer/cloud/parsefunction/DocumentAftersave.js b/apps/OpenSignServer/cloud/parsefunction/DocumentAftersave.js index 701ebd608..dc26a3e09 100644 --- a/apps/OpenSignServer/cloud/parsefunction/DocumentAftersave.js +++ b/apps/OpenSignServer/cloud/parsefunction/DocumentAftersave.js @@ -4,20 +4,11 @@ async function DocumentAftersave(request) { console.log('new entry is insert in contracts_Document'); const createdAt = request.object.get('createdAt'); const Folder = request.object.get('Type'); - // console.log("createdAt") - // console.log(createdAt) - // console.log("Folder") - // console.log(Folder) - // console.log("before If condition") if (createdAt && Folder === undefined) { // console.log("IN If condition") const TimeToCompleteDays = request.object.get('TimeToCompleteDays'); const ExpiryDate = new Date(createdAt); - // console.log("ExpiryDate") - // console.log(ExpiryDate) ExpiryDate.setDate(ExpiryDate.getDate() + TimeToCompleteDays); - // console.log("ExpiryDate date after update") - // console.log(ExpiryDate) const documentQuery = new Parse.Query('contracts_Document'); const updateQuery = await documentQuery.get(request.object.id, { useMasterKey: true }); updateQuery.set('ExpiryDate', ExpiryDate); @@ -37,8 +28,6 @@ async function DocumentAftersave(request) { } const signers = request.object.get('Signers'); - // console.log("Signers") - // console.log(signers.length) // update acl of New Document If There are signers present in array if (signers && signers.length > 0) { await updateAclDoc(request.object.id); @@ -48,7 +37,7 @@ async function DocumentAftersave(request) { } } } else { - if (request.user) { + if (request?.user) { const signers = request.object.get('Signers'); if (signers && signers.length > 0) { await updateAclDoc(request.object.id); @@ -69,6 +58,7 @@ async function DocumentAftersave(request) { // console.log(objId) const Query = new Parse.Query('contracts_Document'); Query.include('Signers'); + Query.include('CreatedBy'); const updateACL = await Query.get(objId, { useMasterKey: true }); const res = JSON.parse(JSON.stringify(updateACL)); // console.log("res"); @@ -91,9 +81,10 @@ async function DocumentAftersave(request) { const newACL = new Parse.ACL(); newACL.setPublicReadAccess(false); newACL.setPublicWriteAccess(false); - newACL.setReadAccess(request.user, true); - newACL.setWriteAccess(request.user, true); - + if (res?.CreatedBy) { + newACL.setReadAccess(res?.CreatedBy?.objectId, true); + newACL.setWriteAccess(res?.CreatedBy?.objectId, true); + } UsersPtr.forEach(x => { newACL.setReadAccess(x.objectId, true); newACL.setWriteAccess(x.objectId, true); @@ -104,9 +95,9 @@ async function DocumentAftersave(request) { } async function updateSelfDoc(objId) { - // console.log("In side updateSelfDoc func") // console.log(objId) const Query = new Parse.Query('contracts_Document'); + Query.include('CreatedBy'); const updateACL = await Query.get(objId, { useMasterKey: true }); const res = JSON.parse(JSON.stringify(updateACL)); // console.log("res"); @@ -114,8 +105,10 @@ async function DocumentAftersave(request) { const newACL = new Parse.ACL(); newACL.setPublicReadAccess(false); newACL.setPublicWriteAccess(false); - newACL.setReadAccess(request.user, true); - newACL.setWriteAccess(request.user, true); + if (res?.CreatedBy) { + newACL.setReadAccess(res?.CreatedBy?.objectId, true); + newACL.setWriteAccess(res?.CreatedBy?.objectId, true); + } updateACL.setACL(newACL); updateACL.save(null, { useMasterKey: true }); } diff --git a/apps/OpenSignServer/cloud/parsefunction/TemplateAfterSave.js b/apps/OpenSignServer/cloud/parsefunction/TemplateAfterSave.js index 556cf1c39..96389e6cc 100644 --- a/apps/OpenSignServer/cloud/parsefunction/TemplateAfterSave.js +++ b/apps/OpenSignServer/cloud/parsefunction/TemplateAfterSave.js @@ -34,6 +34,7 @@ export default async function TemplateAfterSave(request) { // console.log(objId) const Query = new Parse.Query('contracts_Template'); Query.include('Signers'); + Query.include('CreatedBy'); const updateACL = await Query.get(objId, { useMasterKey: true }); const res = JSON.parse(JSON.stringify(updateACL)); // console.log("res"); @@ -56,9 +57,10 @@ export default async function TemplateAfterSave(request) { const newACL = new Parse.ACL(); newACL.setPublicReadAccess(false); newACL.setPublicWriteAccess(false); - newACL.setReadAccess(request.user, true); - newACL.setWriteAccess(request.user, true); - + if (res?.CreatedBy) { + newACL.setReadAccess(res?.CreatedBy?.objectId, true); + newACL.setWriteAccess(res?.CreatedBy?.objectId, true); + } UsersPtr.forEach(x => { newACL.setReadAccess(x.objectId, true); newACL.setWriteAccess(x.objectId, true); @@ -72,6 +74,7 @@ export default async function TemplateAfterSave(request) { // console.log("Inside updateSelfDoc func") const Query = new Parse.Query('contracts_Template'); + Query.include('CreatedBy'); const updateACL = await Query.get(objId, { useMasterKey: true }); // const res = JSON.parse(JSON.stringify(updateACL)); // console.log("res"); @@ -79,8 +82,10 @@ export default async function TemplateAfterSave(request) { const newACL = new Parse.ACL(); newACL.setPublicReadAccess(false); newACL.setPublicWriteAccess(false); - newACL.setReadAccess(request.user, true); - newACL.setWriteAccess(request.user, true); + if (res?.CreatedBy) { + newACL.setReadAccess(res?.CreatedBy?.objectId, true); + newACL.setWriteAccess(res?.CreatedBy?.objectId, true); + } updateACL.setACL(newACL); updateACL.save(null, { useMasterKey: true }); }