Skip to content

Commit cdd92f6

Browse files
Merge branch 'staging' of https://github.com/OpenSignLabs/OpenSign into react-tour
2 parents 5e55f0d + b08fa9b commit cdd92f6

File tree

9 files changed

+239
-175
lines changed

9 files changed

+239
-175
lines changed

apps/OpenSign/package-lock.json

Lines changed: 58 additions & 40 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

apps/OpenSign/package.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
"@reduxjs/toolkit": "^2.2.7",
1212
"axios": "^1.7.7",
1313
"file-saver": "^2.0.5",
14-
"i18next": "^23.15.1",
14+
"i18next": "^23.15.2",
1515
"i18next-browser-languagedetector": "^8.0.0",
1616
"i18next-http-backend": "^2.6.2",
1717
"jszip": "^3.10.1",
@@ -37,7 +37,7 @@
3737
"react-i18next": "^15.0.2",
3838
"react-konva": "^18.2.10",
3939
"react-pdf": "^9.1.1",
40-
"react-quill-new": "^3.3.2",
40+
"react-quill-new": "^3.3.3",
4141
"react-redux": "^9.1.2",
4242
"react-rnd": "^10.4.13",
4343
"react-router-dom": "^6.26.2",
@@ -105,10 +105,10 @@
105105
"commitizen": "^4.3.1",
106106
"concurrently": "^9.0.1",
107107
"css-loader": "^7.1.2",
108-
"daisyui": "^4.12.11",
108+
"daisyui": "^4.12.12",
109109
"dotenv": "^16.4.5",
110110
"dotenv-webpack": "^8.1.0",
111-
"eslint": "^9.11.1",
111+
"eslint": "^9.12.0",
112112
"eslint-plugin-prettier": "^5.2.1",
113113
"eslint-plugin-react": "^7.37.1",
114114
"lint-staged": "^15.2.10",

apps/OpenSign/src/constant/Utils.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -711,7 +711,8 @@ export const createDocument = async (
711711
AutomaticReminders: Doc?.AutomaticReminders || false,
712712
RemindOnceInEvery: parseInt(Doc?.RemindOnceInEvery || 5),
713713
IsEnableOTP: Doc?.IsEnableOTP || false,
714-
IsTourEnabled: Doc?.IsTourEnabled || false
714+
IsTourEnabled: Doc?.IsTourEnabled || false,
715+
IsFileAdapter: Doc?.IsFileAdapter || false
715716
};
716717

717718
try {

apps/OpenSignServer/cloud/customRoute/v1/apiV1.js

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ import getContact from './routes/getContact.js';
1010
import deleteContact from './routes/deleteContact.js';
1111
import getContactList from './routes/getContactList.js';
1212
import draftDocument from './routes/draftDocument.js';
13-
import createTemplate from './routes/createTemplate.js';
1413
import getTemplate from './routes/getTemplate.js';
1514
import deletedTemplate from './routes/deleteTemplate.js';
1615
import getTemplatetList from './routes/getTemplateList.js';
@@ -81,9 +80,6 @@ app.get('/documentlist/:doctype', getDocumentList);
8180
// create Template with co-ordinate
8281
app.post('/createtemplate', createTemplatewithCoordinate);
8382

84-
// create Template
85-
app.post('/drafttemplate', createTemplate);
86-
8783
// create Template with binary
8884
app.post('/createtemplatewithbinary', upload.array('file', 1), createTemplatewithCoordinate);
8985

apps/OpenSignServer/cloud/customRoute/v1/routes/CreateDocumentWithTemplate.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -213,6 +213,7 @@ export default async function createDocumentWithTemplate(request, response) {
213213
if (folderId) {
214214
object.set('Folder', folderPtr);
215215
}
216+
object.set('IsFileAdapter', template?.IsFileAdapter || false);
216217
const newACL = new Parse.ACL();
217218
newACL.setPublicReadAccess(false);
218219
newACL.setPublicWriteAccess(false);

apps/OpenSignServer/cloud/customRoute/v1/routes/createDocumentwithCoordinate.js

Lines changed: 26 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import {
88
sanitizeFileName,
99
cloudServerUrl,
1010
} from '../../../../Utils.js';
11+
import uploadFileToS3 from '../../../parsefunction/uploadFiletoS3.js';
1112

1213
// `sendDoctoWebhook` is used to send res data of document on webhook
1314
async function sendDoctoWebhook(doc, WebhookUrl, userId) {
@@ -88,6 +89,7 @@ export default async function createDocumentwithCoordinate(request, response) {
8889
};
8990
const extUsers = new Parse.Query('contracts_Users');
9091
extUsers.equalTo('UserId', userPtr);
92+
extUsers.include('TenantId');
9193
const extUser = await extUsers.first({ useMasterKey: true });
9294

9395
const subscription = new Parse.Query('contracts_Subscriptions');
@@ -115,6 +117,7 @@ export default async function createDocumentwithCoordinate(request, response) {
115117
.status(400)
116118
.json({ error: 'Please add at least one signature widget for all signers' });
117119
}
120+
const parseExtUser = JSON.parse(JSON.stringify(extUser));
118121
let fileUrl;
119122
if (request.files?.[0]) {
120123
const base64 = fileData?.toString('base64');
@@ -127,23 +130,32 @@ export default async function createDocumentwithCoordinate(request, response) {
127130
saveFileUsage(buffer.length, fileUrl, parseUser.userId.objectId);
128131
} else {
129132
const filename = sanitizeFileName(`${name}.pdf`);
130-
const file = new Parse.File(filename, { base64: base64File }, 'application/pdf');
131-
await file.save({ useMasterKey: true });
132-
fileUrl = file.url();
133+
if (parseExtUser?.TenantId?.ActiveFileAdapter) {
134+
const adapter = {
135+
fileAdapter: parseExtUser?.TenantId?.ActiveFileAdapter,
136+
bucketName: parseExtUser?.TenantId?.FileAdapter?.bucketName,
137+
region: parseExtUser?.TenantId?.FileAdapter?.region,
138+
endpoint: parseExtUser?.TenantId?.FileAdapter?.endpoint,
139+
accessKeyId: parseExtUser?.TenantId?.FileAdapter?.accessKeyId,
140+
secretAccessKey: parseExtUser?.TenantId?.FileAdapter?.secretAccessKey,
141+
baseUrl: parseExtUser?.TenantId?.FileAdapter?.baseUrl,
142+
};
143+
const filedata = Buffer.from(base64File, 'base64');
144+
// `uploadFileToS3` is used to save document in user's file storage
145+
fileUrl = await uploadFileToS3(filedata, filename, 'application/pdf', adapter);
146+
} else {
147+
const file = new Parse.File(filename, { base64: base64File }, 'application/pdf');
148+
await file.save({ useMasterKey: true });
149+
fileUrl = file.url();
150+
}
133151
const buffer = Buffer.from(base64File, 'base64');
134152
saveFileUsage(buffer.length, fileUrl, parseUser.userId.objectId);
135153
}
136-
const contractsUser = new Parse.Query('contracts_Users');
137-
contractsUser.equalTo('UserId', userPtr);
138-
const extUser = await contractsUser.first({ useMasterKey: true });
139-
const parseExtUser = JSON.parse(JSON.stringify(extUser));
140-
141154
const extUserPtr = {
142155
__type: 'Pointer',
143156
className: 'contracts_Users',
144157
objectId: extUser.id,
145158
};
146-
147159
const object = new Parse.Object('contracts_Document');
148160
object.set('Name', name);
149161

@@ -167,6 +179,11 @@ export default async function createDocumentwithCoordinate(request, response) {
167179
object.set('IsEnableOTP', IsEnableOTP);
168180
object.set('IsTourEnabled', isTourEnabled);
169181
object.set('IsSendMail', send_email);
182+
if (parseExtUser?.TenantId?.ActiveFileAdapter) {
183+
object.set('IsFileAdapter', true);
184+
} else {
185+
object.set('IsFileAdapter', false);
186+
}
170187
let contact = [];
171188
if (signers && signers.length > 0) {
172189
let parseSigners;

0 commit comments

Comments
 (0)