diff --git a/apps/OpenSignServer/cloud/customRoute/v1/routes/CreateDocumentWithTemplate.js b/apps/OpenSignServer/cloud/customRoute/v1/routes/CreateDocumentWithTemplate.js index 6efa6f84d..3ae07bac3 100644 --- a/apps/OpenSignServer/cloud/customRoute/v1/routes/CreateDocumentWithTemplate.js +++ b/apps/OpenSignServer/cloud/customRoute/v1/routes/CreateDocumentWithTemplate.js @@ -1,17 +1,9 @@ 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 = 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; - } + const url = process.env.SERVER_URL; try { const reqToken = request.headers['x-api-token']; if (!reqToken) { @@ -48,52 +40,31 @@ export default async function createDocumentWithTemplate(request, response) { if (template?.Description) { object.set('Description', template.Description); } - 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); + if (template?.Signers) { + object.set('Signers', template?.Signers); } - 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); } @@ -104,10 +75,7 @@ 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: protocol + '/load/signmicroapp/placeholdersign/' + res.id, - }); + return response.json({ objectId: res.id, url: url }); } 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 ba6ffa503..59aa21aa2 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,143 +16,127 @@ export default async function createContact(request, response) { // Valid Token then proceed request const userPtr = token.get('userId'); try { - const contactbook = new Parse.Query('contracts_Contactbook'); - contactbook.equalTo('Email', email); - contactbook.equalTo('CreatedBy', userPtr); + const Tenant = new Parse.Query('partners_Tenant'); + Tenant.equalTo('UserId', userPtr); + const tenantRes = await Tenant.first({ useMasterKey: true }); - const userExists = await contactbook.first({ useMasterKey: true }); + 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); - 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 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 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, + 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, }); } - 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); + } else { 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) { - return response.status(400).json({ error: 'Something went wrong, please try again later!' }); + 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!' }); + } } } 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 e4c7a4a7f..c34601520 100644 --- a/apps/OpenSignServer/cloud/customRoute/v1/routes/createDocument.js +++ b/apps/OpenSignServer/cloud/customRoute/v1/routes/createDocument.js @@ -1,26 +1,16 @@ // 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) { @@ -31,7 +21,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 && signers.length > 0) { + if (signers) { const userPtr = token.get('userId'); let fileUrl; if (request.files?.[0]) { @@ -73,44 +63,56 @@ export default async function createDocument(request, response) { object.set('URL', fileUrl); object.set('CreatedBy', userPtr); object.set('ExtUserPtr', extUserPtr); - if (signers && signers.length > 0) { + if (signers) { 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', contact); + 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); } if (folderId) { object.set('Folder', folderPtr); @@ -124,7 +126,7 @@ export default async function createDocument(request, response) { const res = await object.save(null, { useMasterKey: true }); return response.json({ objectId: res.id, - url: protocol + '/load/signmicroapp/placeholdersign/' + res.id, + url: 'https://' + url + '/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 4879d7988..ecd48381a 100644 --- a/apps/OpenSignServer/cloud/customRoute/v1/routes/createTemplate.js +++ b/apps/OpenSignServer/cloud/customRoute/v1/routes/createTemplate.js @@ -1,21 +1,13 @@ 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) { @@ -60,44 +52,30 @@ export default async function createTemplate(request, response) { object.set('URL', fileUrl); object.set('CreatedBy', userPtr); object.set('ExtUserPtr', extUserPtr); - if (signers && signers.length > 0) { + if (signers) { 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', contact); + 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, + })) + ); } if (folderId) { object.set('Folder', folderPtr); @@ -111,7 +89,7 @@ export default async function createTemplate(request, response) { const res = await object.save(null, { useMasterKey: true }); return response.json({ objectId: res.id, - url: protocol + '/load/signmicroapp/template/' + res.id, + url: 'https://' + url + '/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 c022d0d38..9b55c3cf0 100644 --- a/apps/OpenSignServer/cloud/customRoute/v1/routes/getWebhook.js +++ b/apps/OpenSignServer/cloud/customRoute/v1/routes/getWebhook.js @@ -1,4 +1,5 @@ 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 675fe6e90..3c2051a31 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 c6ecc0c2c..2f0b76c53 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 791844a8b..d3445bcf5 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 dc26a3e09..701ebd608 100644 --- a/apps/OpenSignServer/cloud/parsefunction/DocumentAftersave.js +++ b/apps/OpenSignServer/cloud/parsefunction/DocumentAftersave.js @@ -4,11 +4,20 @@ 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); @@ -28,6 +37,8 @@ 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); @@ -37,7 +48,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); @@ -58,7 +69,6 @@ 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"); @@ -81,10 +91,9 @@ async function DocumentAftersave(request) { const newACL = new Parse.ACL(); newACL.setPublicReadAccess(false); newACL.setPublicWriteAccess(false); - if (res?.CreatedBy) { - newACL.setReadAccess(res?.CreatedBy?.objectId, true); - newACL.setWriteAccess(res?.CreatedBy?.objectId, true); - } + newACL.setReadAccess(request.user, true); + newACL.setWriteAccess(request.user, true); + UsersPtr.forEach(x => { newACL.setReadAccess(x.objectId, true); newACL.setWriteAccess(x.objectId, true); @@ -95,9 +104,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"); @@ -105,10 +114,8 @@ async function DocumentAftersave(request) { const newACL = new Parse.ACL(); newACL.setPublicReadAccess(false); newACL.setPublicWriteAccess(false); - if (res?.CreatedBy) { - newACL.setReadAccess(res?.CreatedBy?.objectId, true); - newACL.setWriteAccess(res?.CreatedBy?.objectId, true); - } + newACL.setReadAccess(request.user, true); + newACL.setWriteAccess(request.user, 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 96389e6cc..556cf1c39 100644 --- a/apps/OpenSignServer/cloud/parsefunction/TemplateAfterSave.js +++ b/apps/OpenSignServer/cloud/parsefunction/TemplateAfterSave.js @@ -34,7 +34,6 @@ 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"); @@ -57,10 +56,9 @@ export default async function TemplateAfterSave(request) { const newACL = new Parse.ACL(); newACL.setPublicReadAccess(false); newACL.setPublicWriteAccess(false); - if (res?.CreatedBy) { - newACL.setReadAccess(res?.CreatedBy?.objectId, true); - newACL.setWriteAccess(res?.CreatedBy?.objectId, true); - } + newACL.setReadAccess(request.user, true); + newACL.setWriteAccess(request.user, true); + UsersPtr.forEach(x => { newACL.setReadAccess(x.objectId, true); newACL.setWriteAccess(x.objectId, true); @@ -74,7 +72,6 @@ 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"); @@ -82,10 +79,8 @@ export default async function TemplateAfterSave(request) { const newACL = new Parse.ACL(); newACL.setPublicReadAccess(false); newACL.setPublicWriteAccess(false); - if (res?.CreatedBy) { - newACL.setReadAccess(res?.CreatedBy?.objectId, true); - newACL.setWriteAccess(res?.CreatedBy?.objectId, true); - } + newACL.setReadAccess(request.user, true); + newACL.setWriteAccess(request.user, true); updateACL.setACL(newACL); updateACL.save(null, { useMasterKey: true }); }