Skip to content

Commit b0e26b8

Browse files
refactor: add analytics code for internal tracking
1 parent 5142a8c commit b0e26b8

24 files changed

+580
-51
lines changed

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

Lines changed: 38 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -61,11 +61,16 @@ export default async function createDocumentWithTemplate(request, response) {
6161
}
6262
const tokenQuery = new Parse.Query('appToken');
6363
tokenQuery.equalTo('token', reqToken);
64+
tokenQuery.include('userId');
6465
const token = await tokenQuery.first({ useMasterKey: true });
6566
if (token !== undefined) {
6667
// Valid Token then proceed request
67-
const userPtr = token.get('userId');
68-
68+
const parseUser = JSON.parse(JSON.stringify(token));
69+
const userPtr = {
70+
__type: 'Pointer',
71+
className: '_User',
72+
objectId: parseUser.userId.objectId,
73+
};
6974
const templateQuery = new Parse.Query('contracts_Template');
7075
templateQuery.include('ExtUserPtr');
7176
const templateRes = await templateQuery.get(templateId, { useMasterKey: true });
@@ -170,8 +175,8 @@ export default async function createDocumentWithTemplate(request, response) {
170175
const newACL = new Parse.ACL();
171176
newACL.setPublicReadAccess(false);
172177
newACL.setPublicWriteAccess(false);
173-
newACL.setReadAccess(userPtr.id, true);
174-
newACL.setWriteAccess(userPtr.id, true);
178+
newACL.setReadAccess(userPtr.objectId, true);
179+
newACL.setWriteAccess(userPtr.objectId, true);
175180
object.setACL(newACL);
176181
const res = await object.save(null, { useMasterKey: true });
177182

@@ -287,11 +292,18 @@ export default async function createDocumentWithTemplate(request, response) {
287292
createdAt: res.createdAt,
288293
};
289294
if (template.ExtUserPtr && template.ExtUserPtr?.Webhook) {
290-
sendDoctoWebhook(doc, template.ExtUserPtr?.Webhook, userPtr?.id);
295+
sendDoctoWebhook(doc, template.ExtUserPtr?.Webhook, userPtr?.objectId);
291296
}
292297
} catch (err) {
293298
console.log('Err', err);
294299
}
300+
if (request.posthog) {
301+
request.posthog?.capture({
302+
distinctId: parseUser.userId.email,
303+
event: 'create_document_with_templateid',
304+
properties: { response_code: 200 },
305+
});
306+
}
295307
return response.json({
296308
objectId: res.id,
297309
signurl: contact.map(x => ({
@@ -302,12 +314,33 @@ export default async function createDocumentWithTemplate(request, response) {
302314
});
303315
// }
304316
} else {
317+
if (request.posthog) {
318+
request.posthog?.capture({
319+
distinctId: parseUser.userId.email,
320+
event: 'create_document_with_templateid',
321+
properties: { response_code: 400 },
322+
});
323+
}
305324
return response.status(400).json({ error: 'Please provide signers properly!' });
306325
}
307326
} else {
327+
if (request.posthog) {
328+
request.posthog?.capture({
329+
distinctId: parseUser.userId.email,
330+
event: 'create_document_with_templateid',
331+
properties: { response_code: 400 },
332+
});
333+
}
308334
return response.status(400).json({ error: 'Please setup template properly!' });
309335
}
310336
} else {
337+
if (request.posthog) {
338+
request.posthog?.capture({
339+
distinctId: parseUser.userId.email,
340+
event: 'create_document_with_templateid',
341+
properties: { response_code: 404 },
342+
});
343+
}
311344
return response.status(404).json({ error: 'Invalid template id!' });
312345
}
313346
} else {

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

Lines changed: 42 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,17 @@ export default async function createContact(request, response) {
1111
}
1212
const tokenQuery = new Parse.Query('appToken');
1313
tokenQuery.equalTo('token', reqToken);
14+
tokenQuery.include('userId');
1415
const token = await tokenQuery.first({ useMasterKey: true });
1516
if (token !== undefined) {
1617
// Valid Token then proceed request
17-
const userPtr = token.get('userId');
18+
const parseUser = JSON.parse(JSON.stringify(token));
19+
const userPtr = {
20+
__type: 'Pointer',
21+
className: '_User',
22+
objectId: parseUser.userId.objectId,
23+
};
24+
1825
try {
1926
const contactbook = new Parse.Query('contracts_Contactbook');
2027
contactbook.equalTo('Email', email);
@@ -23,6 +30,13 @@ export default async function createContact(request, response) {
2330
const userExists = await contactbook.first({ useMasterKey: true });
2431

2532
if (userExists) {
33+
if (request.posthog) {
34+
request.posthog?.capture({
35+
distinctId: parseUser.userId.email,
36+
event: 'create_contact',
37+
properties: { response_code: 401 },
38+
});
39+
}
2640
return response
2741
.status(401)
2842
.json({ error: 'Contact already exists!', objectId: userExists.id });
@@ -72,8 +86,8 @@ export default async function createContact(request, response) {
7286
contactQuery.set('UserId', user);
7387

7488
const acl = new Parse.ACL();
75-
acl.setReadAccess(userPtr.id, true);
76-
acl.setWriteAccess(userPtr.id, true);
89+
acl.setReadAccess(userPtr.objectId, true);
90+
acl.setWriteAccess(userPtr.objectId, true);
7791
acl.setReadAccess(user.id, true);
7892
acl.setWriteAccess(user.id, true);
7993
contactQuery.setACL(acl);
@@ -103,18 +117,18 @@ export default async function createContact(request, response) {
103117
const body = {
104118
appName: 'contracts',
105119
roleName: 'contracts_Guest',
106-
userId: userRes.id,
120+
userId: userRes.objectId,
107121
};
108122
await axios.post(roleurl, body, { headers: headers });
109-
contactQuery.set('CreatedBy', userPtr);
123+
contactQuery.set('CreatedBy', userPtr.objectId);
110124
contactQuery.set('UserId', {
111125
__type: 'Pointer',
112126
className: '_User',
113127
objectId: userRes.id,
114128
});
115129
const acl = new Parse.ACL();
116-
acl.setReadAccess(userPtr.id, true);
117-
acl.setWriteAccess(userPtr.id, true);
130+
acl.setReadAccess(userPtr.objectId, true);
131+
acl.setWriteAccess(userPtr.objectId, true);
118132
acl.setReadAccess(userRes.id, true);
119133
acl.setWriteAccess(userRes.id, true);
120134

@@ -143,15 +157,36 @@ export default async function createContact(request, response) {
143157
} catch (err) {
144158
console.log('err ', err);
145159
if (err.code === 137) {
160+
if (request.posthog) {
161+
request.posthog?.capture({
162+
distinctId: parseUser.userId.email,
163+
event: 'create_contact',
164+
properties: { response_code: 401 },
165+
});
166+
}
146167
return response.status(401).json({ error: 'Contact already exists!' });
147168
} else {
169+
if (request.posthog) {
170+
request.posthog?.capture({
171+
distinctId: parseUser.userId.email,
172+
event: 'create_contact',
173+
properties: { response_code: 400 },
174+
});
175+
}
148176
return response
149177
.status(400)
150178
.json({ error: 'Something went wrong, please try again later!' });
151179
}
152180
}
153181
}
154182
} catch (err) {
183+
if (request.posthog) {
184+
request.posthog?.capture({
185+
distinctId: parseUser.userId.email,
186+
event: 'create_contact',
187+
properties: { response_code: 400 },
188+
});
189+
}
155190
return response.status(400).json({ error: 'Something went wrong, please try again later!' });
156191
}
157192
} else {

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

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,17 @@ export default async function createDocument(request, response) {
2121
}
2222
const tokenQuery = new Parse.Query('appToken');
2323
tokenQuery.equalTo('token', reqToken);
24+
tokenQuery.include('userId');
2425
const token = await tokenQuery.first({ useMasterKey: true });
2526
if (token !== undefined) {
27+
const parseUser = JSON.parse(JSON.stringify(token));
28+
const userPtr = {
29+
__type: 'Pointer',
30+
className: '_User',
31+
objectId: parseUser.userId.objectId,
32+
};
2633
// Valid Token then proceed request
2734
if (signers && signers.length > 0) {
28-
const userPtr = token.get('userId');
2935
let fileUrl;
3036
if (request.files?.[0]) {
3137
const file = new Parse.File(request.files?.[0]?.originalname, {
@@ -112,15 +118,29 @@ export default async function createDocument(request, response) {
112118
const newACL = new Parse.ACL();
113119
newACL.setPublicReadAccess(false);
114120
newACL.setPublicWriteAccess(false);
115-
newACL.setReadAccess(userPtr.id, true);
116-
newACL.setWriteAccess(userPtr.id, true);
121+
newACL.setReadAccess(userPtr.objectId, true);
122+
newACL.setWriteAccess(userPtr.objectId, true);
117123
object.setACL(newACL);
118124
const res = await object.save(null, { useMasterKey: true });
125+
if (request.posthog) {
126+
request.posthog?.capture({
127+
distinctId: parseUser.userId.email,
128+
event: 'draft_document',
129+
properties: { response_code: 200 },
130+
});
131+
}
119132
return response.json({
120133
objectId: res.id,
121134
url: protocol + '/load/signmicroapp/placeholdersign/' + res.id,
122135
});
123136
} else {
137+
if (request.posthog) {
138+
request.posthog?.capture({
139+
distinctId: parseUser.userId.email,
140+
event: 'draft_document',
141+
properties: { response_code: 400 },
142+
});
143+
}
124144
return response.status(400).json({ error: 'Please provide signers!' });
125145
}
126146
} else {

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

Lines changed: 25 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -67,11 +67,17 @@ export default async function createDocumentwithCoordinate(request, response) {
6767
}
6868
const tokenQuery = new Parse.Query('appToken');
6969
tokenQuery.equalTo('token', reqToken);
70+
tokenQuery.include('userId');
7071
const token = await tokenQuery.first({ useMasterKey: true });
7172
if (token !== undefined) {
7273
// Valid Token then proceed request
74+
const parseUser = JSON.parse(JSON.stringify(token));
75+
const userPtr = {
76+
__type: 'Pointer',
77+
className: '_User',
78+
objectId: parseUser.userId.objectId,
79+
};
7380
if (signers && signers.length > 0) {
74-
const userPtr = token.get('userId');
7581
let fileUrl;
7682
if (request.files?.[0]) {
7783
const file = new Parse.File(request.files?.[0]?.originalname, {
@@ -211,8 +217,8 @@ export default async function createDocumentwithCoordinate(request, response) {
211217
const newACL = new Parse.ACL();
212218
newACL.setPublicReadAccess(false);
213219
newACL.setPublicWriteAccess(false);
214-
newACL.setReadAccess(userPtr.id, true);
215-
newACL.setWriteAccess(userPtr.id, true);
220+
newACL.setReadAccess(userPtr.objectId, true);
221+
newACL.setWriteAccess(userPtr.objectId, true);
216222
object.setACL(newACL);
217223
const res = await object.save(null, { useMasterKey: true });
218224
const doc = {
@@ -225,7 +231,7 @@ export default async function createDocumentwithCoordinate(request, response) {
225231
createdAt: res.createdAt,
226232
};
227233
if (parseExtUser && parseExtUser.Webhook) {
228-
sendDoctoWebhook(doc, parseExtUser?.Webhook, userPtr?.id);
234+
sendDoctoWebhook(doc, parseExtUser?.Webhook, userPtr?.objectId);
229235
}
230236
const newDate = new Date();
231237
newDate.setDate(newDate.getDate() + 15);
@@ -328,6 +334,13 @@ export default async function createDocumentwithCoordinate(request, response) {
328334
}
329335
}
330336
// if (sendMail.data.result.status === 'success') {
337+
if (request.posthog) {
338+
request.posthog?.capture({
339+
distinctId: parseUser.userId.email,
340+
event: 'create_document',
341+
properties: { response_code: 200 },
342+
});
343+
}
331344
return response.json({
332345
objectId: res.id,
333346
signurl: contact.map(x => ({
@@ -338,13 +351,20 @@ export default async function createDocumentwithCoordinate(request, response) {
338351
});
339352
// }
340353
} else {
354+
if (request.posthog) {
355+
request.posthog?.capture({
356+
distinctId: parseUser.userId.email,
357+
event: 'create_document',
358+
properties: { response_code: 400 },
359+
});
360+
}
341361
return response.status(400).json({ error: 'Please provide signers!' });
342362
}
343363
} else {
344364
return response.status(405).json({ error: 'Invalid API Token!' });
345365
}
346366
} catch (err) {
347367
console.log('err ', err);
348-
return response.status(400).json({ error: 'Something went wrong!' });
368+
return response.status(400).json({ error: 'Something went wrong, please try again later!' });
349369
}
350370
}

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

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,16 @@ export default async function createTemplate(request, response) {
1818
}
1919
const tokenQuery = new Parse.Query('appToken');
2020
tokenQuery.equalTo('token', reqToken);
21+
tokenQuery.include('userId');
2122
const token = await tokenQuery.first({ useMasterKey: true });
2223
if (token !== undefined) {
2324
// Valid Token then proceed request
24-
const userPtr = token.get('userId');
25+
const parseUser = JSON.parse(JSON.stringify(token));
26+
const userPtr = {
27+
__type: 'Pointer',
28+
className: '_User',
29+
objectId: parseUser.userId.objectId,
30+
};
2531
let fileUrl;
2632
if (base64File) {
2733
const file = new Parse.File(`${name}.pdf`, {
@@ -100,10 +106,17 @@ export default async function createTemplate(request, response) {
100106
const newACL = new Parse.ACL();
101107
newACL.setPublicReadAccess(false);
102108
newACL.setPublicWriteAccess(false);
103-
newACL.setReadAccess(userPtr.id, true);
104-
newACL.setWriteAccess(userPtr.id, true);
109+
newACL.setReadAccess(userPtr.objectId, true);
110+
newACL.setWriteAccess(userPtr.objectId, true);
105111
object.setACL(newACL);
106112
const res = await object.save(null, { useMasterKey: true });
113+
if (request.posthog) {
114+
request.posthog?.capture({
115+
distinctId: parseUser.userId.email,
116+
event: 'draft_template',
117+
properties: { response_code: 200 },
118+
});
119+
}
107120
return response.json({
108121
objectId: res.id,
109122
url: protocol + '/load/signmicroapp/template/' + res.id,

0 commit comments

Comments
 (0)