Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion apps/OpenSign/src/json/plansArr.json
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down
2 changes: 1 addition & 1 deletion apps/OpenSign/src/primitives/GetReportDisplay.js
Original file line number Diff line number Diff line change
Expand Up @@ -371,7 +371,7 @@ const ReportTable = ({
)}
{heading.includes("Folder") && (
<td className="px-4 py-2">
{item?.Folder?.Name || "OpenSignDrive"}
{item?.Folder?.Name || "OpenSign™ Drive"}
</td>
)}
<td className="px-4 py-2">
Expand Down
8 changes: 5 additions & 3 deletions apps/OpenSignServer/cloud/customRoute/v1/apiV1.js
Original file line number Diff line number Diff line change
Expand Up @@ -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();
Expand Down Expand Up @@ -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);

Expand All @@ -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);
Expand All @@ -73,4 +76,3 @@ app.delete('/template/:template_id', deletedTemplate);

// get all types of documents on the basis of doctype
app.get('/templatelist', getTemplatetList);

30 changes: 19 additions & 11 deletions apps/OpenSignServer/cloud/customRoute/v1/routes/createContact.js
Original file line number Diff line number Diff line change
Expand Up @@ -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');
Expand Down Expand Up @@ -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);
Expand All @@ -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);
Expand All @@ -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);

Expand All @@ -121,14 +120,23 @@ 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!' });
}
}
} 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!' });
Expand Down
25 changes: 12 additions & 13 deletions apps/OpenSignServer/cloud/customRoute/v1/routes/createDocument.js
Original file line number Diff line number Diff line change
Expand Up @@ -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' });
Expand All @@ -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 };

Expand All @@ -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: '',
Expand All @@ -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 });
Expand Down
23 changes: 11 additions & 12 deletions apps/OpenSignServer/cloud/customRoute/v1/routes/createTemplate.js
Original file line number Diff line number Diff line change
Expand Up @@ -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' });
Expand All @@ -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 });
Expand All @@ -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),
Expand All @@ -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 });
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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');
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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');
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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');
Expand Down
5 changes: 2 additions & 3 deletions apps/OpenSignServer/cloud/customRoute/v1/routes/getContact.js
Original file line number Diff line number Diff line change
Expand Up @@ -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');

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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');
Expand Down
20 changes: 10 additions & 10 deletions apps/OpenSignServer/cloud/customRoute/v1/routes/getDocumentList.js
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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;
Expand All @@ -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 {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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');
Expand Down
Loading