diff --git a/apps/OpenSign/src/json/plansArr.json b/apps/OpenSign/src/json/plansArr.json index d4ae65baa..8d337fdb0 100644 --- a/apps/OpenSign/src/json/plansArr.json +++ b/apps/OpenSign/src/json/plansArr.json @@ -33,7 +33,7 @@ "target": "_self", "benefits": [ "Sign Unlimited Documents", - "Unlimited Secure Doc Storage with OpenSignDrive", + "Unlimited Secure Doc Storage with OpenSign™ Drive", "Unlimited Guest Signers", "Unlimited completion certificates", "Unique Code(OTP) verification for guest signers", diff --git a/apps/OpenSign/src/primitives/GetReportDisplay.js b/apps/OpenSign/src/primitives/GetReportDisplay.js index b9786d55d..8e50fb667 100644 --- a/apps/OpenSign/src/primitives/GetReportDisplay.js +++ b/apps/OpenSign/src/primitives/GetReportDisplay.js @@ -371,7 +371,7 @@ const ReportTable = ({ )} {heading.includes("Folder") && ( - {item?.Folder?.Name || "OpenSignDrive"} + {item?.Folder?.Name || "OpenSign™ Drive"} )} diff --git a/apps/OpenSignServer/cloud/customRoute/v1/apiV1.js b/apps/OpenSignServer/cloud/customRoute/v1/apiV1.js index 84418f549..2d6d391c0 100644 --- a/apps/OpenSignServer/cloud/customRoute/v1/apiV1.js +++ b/apps/OpenSignServer/cloud/customRoute/v1/apiV1.js @@ -17,9 +17,10 @@ import getTemplatetList from './routes/getTemplateList.js'; import updateTemplate from './routes/updateTemplate.js'; import createContact from './routes/createContact.js'; import multer from 'multer'; -import fs from 'node:fs'; +// import fs from 'node:fs'; import updateDocument from './routes/updateDocument.js'; import deleteDocument from './routes/deleteDocument.js'; +// import createDocumentWithTemplate from './routes/CreateDocumentWithTemplate.js'; dotenv.config(); const storage = multer.memoryStorage(); @@ -47,6 +48,8 @@ app.get('/contactlist', getContactList); // create Document app.post('/createdocument', upload.array('file', 1), createDocument); +// create Document with templateId +// app.post('/createdocument/:template_id', createDocumentWithTemplate); // get Document on the basis of id app.get('/document/:document_id', getDocument); @@ -60,7 +63,7 @@ app.delete('/document/:document_id', deleteDocument); app.get('/documentlist/:doctype', getDocumentList); // create Template -app.post('/createtemplate',upload.array('file', 1), createTemplate); +app.post('/createtemplate', upload.array('file', 1), createTemplate); // get template on the basis of id app.get('/template/:template_id', getTemplate); @@ -73,4 +76,3 @@ app.delete('/template/:template_id', deletedTemplate); // get all types of documents on the basis of doctype app.get('/templatelist', getTemplatetList); - diff --git a/apps/OpenSignServer/cloud/customRoute/v1/routes/createContact.js b/apps/OpenSignServer/cloud/customRoute/v1/routes/createContact.js index c95691066..2079f059a 100644 --- a/apps/OpenSignServer/cloud/customRoute/v1/routes/createContact.js +++ b/apps/OpenSignServer/cloud/customRoute/v1/routes/createContact.js @@ -14,11 +14,10 @@ export default async function createContact(request, response) { const token = await tokenQuery.first({ useMasterKey: true }); if (token !== undefined) { // Valid Token then proceed request - const id = token.get('Id'); - const userId = { __type: 'Pointer', className: '_User', objectId: id }; + const userPtr = token.get('userId'); try { const Tenant = new Parse.Query('partners_Tenant'); - Tenant.equalTo('UserId', userId); + Tenant.equalTo('UserId', userPtr); const tenantRes = await Tenant.first({ useMasterKey: true }); const contactQuery = new Parse.Object('contracts_Contactbook'); @@ -56,13 +55,13 @@ export default async function createContact(request, response) { userId: user.id, }; await axios.post(roleurl, body, { headers: headers }); - const currentUser = userId; + const currentUser = userPtr; contactQuery.set('CreatedBy', currentUser); contactQuery.set('UserId', user); const acl = new Parse.ACL(); - acl.setReadAccess(id, true); - acl.setWriteAccess(id, true); + acl.setReadAccess(userPtr.id, true); + acl.setWriteAccess(userPtr.id, true); acl.setReadAccess(user.id, true); acl.setWriteAccess(user.id, true); contactQuery.setACL(acl); @@ -79,7 +78,7 @@ export default async function createContact(request, response) { }); } } catch (err) { - console.log('err ', err); + console.log('err in', err); if (err.code === 202) { const params = { email: email }; const userRes = await Parse.Cloud.run('getUserId', params); @@ -95,15 +94,15 @@ export default async function createContact(request, response) { userId: userRes.id, }; await axios.post(roleurl, body, { headers: headers }); - contactQuery.set('CreatedBy', userId); + contactQuery.set('CreatedBy', userPtr); contactQuery.set('UserId', { __type: 'Pointer', className: '_User', objectId: userRes.id, }); const acl = new Parse.ACL(); - acl.setReadAccess(id, true); - acl.setWriteAccess(id, true); + acl.setReadAccess(userPtr.id, true); + acl.setWriteAccess(userPtr.id, true); acl.setReadAccess(userRes.id, true); acl.setWriteAccess(userRes.id, true); @@ -121,6 +120,9 @@ export default async function createContact(request, response) { }); } } 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!' }); @@ -128,7 +130,13 @@ export default async function createContact(request, response) { } } catch (err) { console.log('err ', err); - return response.status(400).json({ error: 'Something went wrong, please try again later!' }); + if (err.code === 137) { + return response.status(137).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 2724e3fc6..05c99ccde 100644 --- a/apps/OpenSignServer/cloud/customRoute/v1/routes/createDocument.js +++ b/apps/OpenSignServer/cloud/customRoute/v1/routes/createDocument.js @@ -9,12 +9,6 @@ export default async function createDocument(request, response) { const url = process.env.SERVER_URL; const fileData = request.files[0] ? request.files[0].buffer : null; try { - const file = new Parse.File(request.files[0].originalname, { - base64: fileData.toString('base64'), - }); - await file.save({ useMasterKey: true }); - const fileUrl = file.url(); - const reqToken = request.headers['x-api-token']; if (!reqToken) { return response.status(400).json({ error: 'Please Provide API Token' }); @@ -24,11 +18,15 @@ export default async function createDocument(request, response) { const token = await tokenQuery.first({ useMasterKey: true }); if (token !== undefined) { // Valid Token then proceed request - const id = token.get('Id'); - const userId = { __type: 'Pointer', className: '_User', objectId: id }; + const userPtr = token.get('userId'); + const file = new Parse.File(request.files?.[0]?.originalname, { + base64: fileData.toString('base64'), + }); + await file.save({ useMasterKey: true }); + const fileUrl = file.url(); const contractsUser = new Parse.Query('contracts_Users'); - contractsUser.equalTo('UserId', userId); + contractsUser.equalTo('UserId', userPtr); const extUser = await contractsUser.first({ useMasterKey: true }); const extUserPtr = { __type: 'Pointer', className: 'contracts_Users', objectId: extUser.id }; @@ -43,10 +41,11 @@ export default async function createDocument(request, response) { object.set('Description', description); } object.set('URL', fileUrl); - object.set('CreatedBy', userId); + object.set('CreatedBy', userPtr); object.set('ExtUserPtr', extUserPtr); if (signers) { - const placeholders = signers.map(x => ({ + const parseSigners = JSON.parse(signers); + const placeholders = parseSigners.map(x => ({ email: x, Id: randomId(), Role: '', @@ -63,8 +62,8 @@ export default async function createDocument(request, response) { const newACL = new Parse.ACL(); newACL.setPublicReadAccess(false); newACL.setPublicWriteAccess(false); - newACL.setReadAccess(id, true); - newACL.setWriteAccess(id, true); + newACL.setReadAccess(userPtr.id, true); + newACL.setWriteAccess(userPtr.id, true); object.setACL(newACL); const res = await object.save(null, { useMasterKey: true }); return response.json({ objectId: res.id, url: url }); diff --git a/apps/OpenSignServer/cloud/customRoute/v1/routes/createTemplate.js b/apps/OpenSignServer/cloud/customRoute/v1/routes/createTemplate.js index a2728bbcd..83580707f 100644 --- a/apps/OpenSignServer/cloud/customRoute/v1/routes/createTemplate.js +++ b/apps/OpenSignServer/cloud/customRoute/v1/routes/createTemplate.js @@ -9,11 +9,6 @@ export default async function createTemplate(request, response) { const url = process.env.SERVER_URL; const fileData = request.files[0] ? request.files[0].buffer : null; try { - const file = new Parse.File(request.files[0].originalname, { - base64: fileData.toString('base64'), - }); - await file.save({ useMasterKey: true }); - const fileUrl = file.url(); const reqToken = request.headers['x-api-token']; if (!reqToken) { return response.status(400).json({ error: 'Please Provide API Token' }); @@ -23,9 +18,12 @@ export default async function createTemplate(request, response) { const token = await tokenQuery.first({ useMasterKey: true }); if (token !== undefined) { // Valid Token then proceed request - const id = token.get('Id'); - const userId = { __type: 'Pointer', className: '_User', objectId: id }; - + const userPtr = token.get('userId'); + const file = new Parse.File(request.files?.[0]?.originalname, { + base64: fileData.toString('base64'), + }); + await file.save({ useMasterKey: true }); + const fileUrl = file.url(); const contractsUser = new Parse.Query('contracts_Users'); contractsUser.equalTo('UserId', userId); const extUser = await contractsUser.first({ useMasterKey: true }); @@ -42,10 +40,11 @@ export default async function createTemplate(request, response) { object.set('Description', description); } object.set('URL', fileUrl); - object.set('CreatedBy', userId); + object.set('CreatedBy', userPtr); object.set('ExtUserPtr', extUserPtr); if (signers) { - const placeholders = signers.map((x, i) => ({ + const parseSigners = JSON.parse(signers); + const placeholders = parseSigners.map((x, i) => ({ email: x, Id: randomId(), Role: 'User ' + (i + 1), @@ -62,8 +61,8 @@ export default async function createTemplate(request, response) { const newACL = new Parse.ACL(); newACL.setPublicReadAccess(false); newACL.setPublicWriteAccess(false); - newACL.setReadAccess(id, true); - newACL.setWriteAccess(id, true); + newACL.setReadAccess(userPtr.id, true); + newACL.setWriteAccess(userPtr.id, true); object.setACL(newACL); const res = await object.save(null, { useMasterKey: true }); return response.json({ objectId: res.id, url: url }); diff --git a/apps/OpenSignServer/cloud/customRoute/v1/routes/deleteContact.js b/apps/OpenSignServer/cloud/customRoute/v1/routes/deleteContact.js index 1dadb0e0f..b9e57012a 100644 --- a/apps/OpenSignServer/cloud/customRoute/v1/routes/deleteContact.js +++ b/apps/OpenSignServer/cloud/customRoute/v1/routes/deleteContact.js @@ -9,11 +9,10 @@ export default async function deleteContact(request, response) { const token = await tokenQuery.first({ useMasterKey: true }); if (token !== undefined) { // Valid Token then proceed request - const id = token.get('Id'); - const userId = { __type: 'Pointer', className: '_User', objectId: id }; + const userPtr = token.get('userId'); const Contactbook = new Parse.Query('contracts_Contactbook'); Contactbook.equalTo('objectId', request.params.contact_id); - Contactbook.equalTo('CreatedBy', userId); + Contactbook.equalTo('CreatedBy', userPtr); const res = await Contactbook.first({ useMasterKey: true }); if (res) { const isDeleted = res.get('IsDeleted'); diff --git a/apps/OpenSignServer/cloud/customRoute/v1/routes/deleteDocument.js b/apps/OpenSignServer/cloud/customRoute/v1/routes/deleteDocument.js index 71259085f..543dd73ba 100644 --- a/apps/OpenSignServer/cloud/customRoute/v1/routes/deleteDocument.js +++ b/apps/OpenSignServer/cloud/customRoute/v1/routes/deleteDocument.js @@ -9,11 +9,10 @@ export default async function deleteDocument(request, response) { const token = await tokenQuery.first({ useMasterKey: true }); if (token !== undefined) { // Valid Token then proceed request - const id = token.get('Id'); - const userId = { __type: 'Pointer', className: '_User', objectId: id }; + const userPtr = token.get('userId'); const Document = new Parse.Query('contracts_Document'); Document.equalTo('objectId', request.params.document_id); - Document.equalTo('CreatedBy', userId); + Document.equalTo('CreatedBy', userPtr); const res = await Document.first({ useMasterKey: true }); if (res) { const isArchive = res.get('IsArchive'); diff --git a/apps/OpenSignServer/cloud/customRoute/v1/routes/deleteTemplate.js b/apps/OpenSignServer/cloud/customRoute/v1/routes/deleteTemplate.js index de3586195..9967f9001 100644 --- a/apps/OpenSignServer/cloud/customRoute/v1/routes/deleteTemplate.js +++ b/apps/OpenSignServer/cloud/customRoute/v1/routes/deleteTemplate.js @@ -9,11 +9,10 @@ export default async function deletedTemplate(request, response) { const token = await tokenQuery.first({ useMasterKey: true }); if (token !== undefined) { // Valid Token then proceed request - const id = token.get('Id'); - const userId = { __type: 'Pointer', className: '_User', objectId: id }; + const userPtr = token.get('userId'); const template = new Parse.Query('contracts_Template'); template.equalTo('objectId', request.params.template_id); - template.equalTo('CreatedBy', userId); + template.equalTo('CreatedBy', userPtr); const res = await template.first({ useMasterKey: true }); if (res) { const isArchive = res.get('IsArchive'); diff --git a/apps/OpenSignServer/cloud/customRoute/v1/routes/getContact.js b/apps/OpenSignServer/cloud/customRoute/v1/routes/getContact.js index ad5eea4d5..0a68b31bc 100644 --- a/apps/OpenSignServer/cloud/customRoute/v1/routes/getContact.js +++ b/apps/OpenSignServer/cloud/customRoute/v1/routes/getContact.js @@ -9,11 +9,10 @@ export default async function getContact(request, response) { const token = await tokenQuery.first({ useMasterKey: true }); if (token !== undefined) { // Valid Token then proceed request - const id = token.get('Id'); - const userId = { __type: 'Pointer', className: '_User', objectId: id }; + const userPtr = token.get('userId'); const Contactbook = new Parse.Query('contracts_Contactbook'); Contactbook.equalTo('objectId', request.params.contact_id); - Contactbook.equalTo('CreatedBy', userId); + Contactbook.equalTo('CreatedBy', userPtr); Contactbook.notEqualTo('IsDeleted', true); Contactbook.select('Name,Email,Phone'); diff --git a/apps/OpenSignServer/cloud/customRoute/v1/routes/getContactList.js b/apps/OpenSignServer/cloud/customRoute/v1/routes/getContactList.js index 02c6dd620..a6b74a819 100644 --- a/apps/OpenSignServer/cloud/customRoute/v1/routes/getContactList.js +++ b/apps/OpenSignServer/cloud/customRoute/v1/routes/getContactList.js @@ -9,12 +9,12 @@ export default async function getContactList(request, response) { const token = await tokenQuery.first({ useMasterKey: true }); if (token !== undefined) { // Valid Token then proceed request - const id = token.get('Id'); - const userId = { __type: 'Pointer', className: '_User', objectId: id }; + const userPtr = token.get('userId'); + const limit = request?.query?.limit ? request.query.limit : 100; const skip = request?.query?.skip ? request.query.skip : 0; const Contactbook = new Parse.Query('contracts_Contactbook'); - Contactbook.equalTo('CreatedBy', userId); + Contactbook.equalTo('CreatedBy', userPtr); Contactbook.notEqualTo('IsDeleted', true); Contactbook.limit(limit); Contactbook.skip(skip); diff --git a/apps/OpenSignServer/cloud/customRoute/v1/routes/getDocument.js b/apps/OpenSignServer/cloud/customRoute/v1/routes/getDocument.js index d59ba86b2..76046aa5e 100644 --- a/apps/OpenSignServer/cloud/customRoute/v1/routes/getDocument.js +++ b/apps/OpenSignServer/cloud/customRoute/v1/routes/getDocument.js @@ -9,11 +9,10 @@ export default async function getDocument(request, response) { const token = await tokenQuery.first({ useMasterKey: true }); if (token !== undefined) { // Valid Token then proceed request - const id = token.get('Id'); - const userId = { __type: 'Pointer', className: '_User', objectId: id }; + const userPtr = token.get('userId'); const Document = new Parse.Query('contracts_Document'); Document.equalTo('objectId', request.params.document_id); - Document.equalTo('CreatedBy', userId); + Document.equalTo('CreatedBy', userPtr); Document.notEqualTo('IsArchive', true); Document.include('Signers'); Document.include('Folder'); diff --git a/apps/OpenSignServer/cloud/customRoute/v1/routes/getDocumentList.js b/apps/OpenSignServer/cloud/customRoute/v1/routes/getDocumentList.js index 3ef4d338c..f586cc2c6 100644 --- a/apps/OpenSignServer/cloud/customRoute/v1/routes/getDocumentList.js +++ b/apps/OpenSignServer/cloud/customRoute/v1/routes/getDocumentList.js @@ -15,7 +15,7 @@ export default async function getDocumentList(request, response) { const token = await tokenQuery.first({ useMasterKey: true }); if (token !== undefined) { // Valid Token then proceed request - const userId = token.get('Id'); + const userPtr = token.get('userId'); const docType = request.params.doctype; const limit = request?.query?.limit ? request.query.limit : 100; const skip = request?.query?.skip ? request.query.skip : 0; @@ -42,7 +42,7 @@ export default async function getDocumentList(request, response) { default: reportId = ''; } - const json = reportId && reportJson(reportId, userId); + const json = reportId && reportJson(reportId, userPtr.id); const clsName = 'contracts_Document'; if (reportId && json) { const { params, keys } = json; @@ -59,14 +59,14 @@ export default async function getDocumentList(request, response) { if (res.data && res.data.results.length > 0) { const updateRes = res.data.results.map(x => ({ objectId: x.objectId, - title: x.Name, - note: x.Note || '', - folder: x?.Folder?.Name || 'OpenSign™ Drive', - file: x?.SignedUrl || x.URL, - owner: x?.ExtUserPtr?.Name, - signers: x?.Signers?.map(y => y?.Name) || '', - created_at: x.createdAt, - updated_at: x.updatedAt, + Title: x.Name, + Note: x.Note || '', + Folder: x?.Folder?.Name || 'OpenSign™ Drive', + File: x?.SignedUrl || x.URL, + Owner: x?.ExtUserPtr?.Name, + Signers: x?.Signers?.map(y => y?.Name) || '', + createdAt: x.createdAt, + updatedAt: x.updatedAt, })); return response.json({ result: updateRes }); } else { diff --git a/apps/OpenSignServer/cloud/customRoute/v1/routes/getTemplate.js b/apps/OpenSignServer/cloud/customRoute/v1/routes/getTemplate.js index 2621707fc..f69bd896a 100644 --- a/apps/OpenSignServer/cloud/customRoute/v1/routes/getTemplate.js +++ b/apps/OpenSignServer/cloud/customRoute/v1/routes/getTemplate.js @@ -9,11 +9,10 @@ export default async function getTemplate(request, response) { const token = await tokenQuery.first({ useMasterKey: true }); if (token !== undefined) { // Valid Token then proceed request - const id = token.get('Id'); - const userId = { __type: 'Pointer', className: '_User', objectId: id }; + const userPtr = token.get('userId'); const Template = new Parse.Query('contracts_Template'); Template.equalTo('objectId', request.params.template_id); - Template.equalTo('CreatedBy', userId); + Template.equalTo('CreatedBy', userPtr); Template.notEqualTo('IsArchive', true); Template.include('Signers'); Template.include('Folder'); diff --git a/apps/OpenSignServer/cloud/customRoute/v1/routes/getTemplateList.js b/apps/OpenSignServer/cloud/customRoute/v1/routes/getTemplateList.js index d8e046853..0e641e20a 100644 --- a/apps/OpenSignServer/cloud/customRoute/v1/routes/getTemplateList.js +++ b/apps/OpenSignServer/cloud/customRoute/v1/routes/getTemplateList.js @@ -14,18 +14,14 @@ export default async function getTemplatetList(request, response) { const token = await tokenQuery.first({ useMasterKey: true }); if (token !== undefined) { // Valid Token then proceed request - const userId = token.get('Id'); + const userPtr = token.get('userId'); const limit = request?.query?.limit ? request.query.limit : 100; const skip = request?.query?.skip ? request.query.skip : 0; const clsName = 'contracts_Template'; const params = { Type: { $ne: 'Folder' }, - CreatedBy: { - __type: 'Pointer', - className: '_User', - objectId: userId, - }, + CreatedBy: userPtr, IsArchive: { $ne: true }, }; const keys = [ diff --git a/apps/OpenSignServer/cloud/customRoute/v1/routes/getUser.js b/apps/OpenSignServer/cloud/customRoute/v1/routes/getUser.js index 20015f0b9..54f92ef52 100644 --- a/apps/OpenSignServer/cloud/customRoute/v1/routes/getUser.js +++ b/apps/OpenSignServer/cloud/customRoute/v1/routes/getUser.js @@ -11,9 +11,9 @@ export default async function getUser(request, response) { const token = await tokenQuery.first({ useMasterKey: true }); if (token !== undefined) { // Valid Token then proceed request - const userId = token.get('Id'); + const userPtr = token.get('userId'); const query = new Parse.Query('contracts_Users'); - query.equalTo('UserId', { __type: 'Pointer', className: '_User', objectId: userId }); + query.equalTo('UserId', userPtr); query.exclude('IsContactEntry,TourStatus,UserRole,TenantId,UserId,CreatedBy,Plan'); const user = await query.first({ useMasterKey: true }); if (user) { @@ -26,7 +26,7 @@ export default async function getUser(request, response) { JobTitle: parseRes.JobTitle, Company: parseRes.Company, createdAt: parseRes.createdAt, - updateAt: parseRes.updateAt, + updatedAt: parseRes.updatedAt, }); } else { return response.status(404).json({ error: 'User not found!' }); diff --git a/apps/OpenSignServer/cloud/customRoute/v1/routes/updateDocument.js b/apps/OpenSignServer/cloud/customRoute/v1/routes/updateDocument.js index f30b07389..2f0b76c53 100644 --- a/apps/OpenSignServer/cloud/customRoute/v1/routes/updateDocument.js +++ b/apps/OpenSignServer/cloud/customRoute/v1/routes/updateDocument.js @@ -8,16 +8,15 @@ 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 id = token.get('Id'); + // 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) { - const userId = { __type: 'Pointer', className: '_User', objectId: id }; + const userPtr = token.get('userId'); const document = new Parse.Query('contracts_Document'); document.equalTo('objectId', request.params.document_id); - document.equalTo('CreatedBy', userId); + document.equalTo('CreatedBy', userPtr); const res = await document.first({ useMasterKey: true }); if (res) { const isArchive = res.get('IsArchive'); diff --git a/apps/OpenSignServer/cloud/customRoute/v1/routes/updateTemplate.js b/apps/OpenSignServer/cloud/customRoute/v1/routes/updateTemplate.js index c2cdbbeee..d3445bcf5 100644 --- a/apps/OpenSignServer/cloud/customRoute/v1/routes/updateTemplate.js +++ b/apps/OpenSignServer/cloud/customRoute/v1/routes/updateTemplate.js @@ -9,15 +9,14 @@ export default async function updateTemplate(request, response) { const token = await tokenQuery.first({ useMasterKey: true }); if (token !== undefined) { // Valid Token then proceed request - const id = token.get('Id'); const allowedKeys = ['Name', 'Note', 'Description']; const objectKeys = Object.keys(request.body); const isValid = objectKeys.every(key => allowedKeys.includes(key)) && objectKeys.length > 0; if (isValid) { - const userId = { __type: 'Pointer', className: '_User', objectId: id }; + const userPtr = token.get('userId'); const template = new Parse.Query('contracts_Template'); template.equalTo('objectId', request.params.template_id); - template.equalTo('CreatedBy', userId); + template.equalTo('CreatedBy', userPtr); const res = await template.first({ useMasterKey: true }); if (res) { const isArchive = res.get('IsArchive'); diff --git a/apps/OpenSignServer/cloud/parsefunction/generateApiToken.js b/apps/OpenSignServer/cloud/parsefunction/generateApiToken.js index bdf7842cc..8f39ccfdb 100644 --- a/apps/OpenSignServer/cloud/parsefunction/generateApiToken.js +++ b/apps/OpenSignServer/cloud/parsefunction/generateApiToken.js @@ -12,7 +12,7 @@ export default async function generateApiToken(request) { const userId = userRes.data && userRes.data.objectId; if (userId) { const tokenQuery = new Parse.Query('appToken'); - tokenQuery.equalTo('Id', userId); + tokenQuery.equalTo('userId', { __type: 'Pointer', className: '_User', objectId: userId }); const token = await tokenQuery.first({ useMasterKey: true }); if (token !== undefined) { // return exsiting Token @@ -31,7 +31,7 @@ export default async function generateApiToken(request) { const appTokenQuery = new appToken(); const token = generateApiKey({ method: 'base62', prefix: 'opensign' }); appTokenQuery.set('token', token); - appTokenQuery.set('Id', userId); + appTokenQuery.set('userId', { __type: 'Pointer', className: '_User', objectId: userId }); const newRes = await appTokenQuery.save(null, { useMasterKey: true }); return newRes; } diff --git a/apps/OpenSignServer/cloud/parsefunction/getapitoken.js b/apps/OpenSignServer/cloud/parsefunction/getapitoken.js index 5e12d6a39..570679f57 100644 --- a/apps/OpenSignServer/cloud/parsefunction/getapitoken.js +++ b/apps/OpenSignServer/cloud/parsefunction/getapitoken.js @@ -11,7 +11,7 @@ export default async function getapitoken(request) { const userId = userRes.data && userRes.data.objectId; if (userId) { const tokenQuery = new Parse.Query('appToken'); - tokenQuery.equalTo('Id', userId); + tokenQuery.equalTo('userId', { __type: 'Pointer', className: '_User', objectId: userId }); const res = await tokenQuery.first({ useMasterKey: true }); if (res) { return { status: 'success', result: res.get('token') }; @@ -19,6 +19,11 @@ export default async function getapitoken(request) { } } catch (err) { console.log('Err', err); - return { status: 'error', result: err }; + console.log('err', err); + if (err.code == 209) { + return { error: 'Invalid session token' }; + } else { + return { error: "You don't have access!" }; + } } } diff --git a/apps/OpenSignServer/index.js b/apps/OpenSignServer/index.js index b69429e59..92deb1572 100644 --- a/apps/OpenSignServer/index.js +++ b/apps/OpenSignServer/index.js @@ -74,6 +74,7 @@ export const config = { import('./cloud/main.js'); }, appId: process.env.APP_ID || 'myAppId', + maxLimit: 500, masterKey: process.env.MASTER_KEY || '', //Add your master key here. Keep it secret! masterKeyIps: ['0.0.0.0/0', '::1'], // '::1' serverURL: process.env.SERVER_URL || 'http://localhost:8080/app', // Don't forget to change to https if needed