Compare commits

...
Author SHA1 Message Date
prafull-opensignlabsandGitHub b1b9b20e97 Update Validate.js 2025-04-29 12:10:14 +05:30
prafull-opensignlabsandGitHub 75c0cdb5f9 fix: quick send not working 2025-04-29 12:09:05 +05:30
prafull-opensignlabsandGitHub 740ccca1f6 Merge pull request #1704 from OpenSignLabs/updates-14689408163
Merge pull request #547 from OpenSignLabs/staging
2025-04-27 12:21:00 +05:30
prafull-opensignlabs f3b79cb71f Merge pull request #547 from OpenSignLabs/staging
refactor: remove extra comment
2025-04-27 06:50:12 +00:00
prafull-opensignlabsandGitHub f95ea0b9e9 Merge pull request #1702 from OpenSignLabs/updates-14689261849
fix: update migration script
2025-04-27 12:01:50 +05:30
prafull-opensignlabs 647a9ce5b4 Merge pull request #545 from OpenSignLabs/staging
fix: update migration script
2025-04-27 06:30:15 +00:00
prafull-opensignlabsandGitHub 3f3ca668f5 Merge pull request #1700 from OpenSignLabs/updates-14666117248
fix: return https protocol for signing urls
2025-04-25 19:17:21 +05:30
prafull-opensignlabs 2fd6d1a37a fix: return https protocol for signing urls 2025-04-25 13:46:14 +00:00
6 changed files with 244 additions and 192 deletions
+1 -1
View File
@@ -54,7 +54,7 @@ const Validate = () => {
) : (
<ModalUi showHeader={false} isOpen={true} showClose={false}>
<div className="flex flex-col justify-center items-center py-4 md:py-5 gap-5">
<p className="text-xl font-medium">{this("session-expired")}</p>
<p className="text-xl font-medium">{t("session-expired")}</p>
<button onClick={handleLoginBtn} className="op-btn op-btn-neutral">
{t("login")}
</button>
-3
View File
@@ -1,9 +1,6 @@
# Use an official Node runtime as the base image
FROM node:22.14.0
# install java
RUN wget https://downloads.opensign.me/jdk-23_linux-x64_bin.deb \
&& dpkg -i jdk-23_linux-x64_bin.deb
# Set the working directory inside the container
WORKDIR /usr/src/app
@@ -1,5 +1,5 @@
import axios from 'axios';
import { cloudServerUrl, replaceMailVaribles } from '../../Utils.js';
import { cloudServerUrl, mailTemplate, replaceMailVaribles } from '../../Utils.js';
const serverUrl = cloudServerUrl; //process.env.SERVER_URL;
const appId = process.env.APP_ID;
async function deductcount(docsCount, extUserId) {
@@ -244,7 +244,7 @@ export default async function createBatchDocs(request) {
};
try {
if (request?.user) {
return await batchQuery(request.user.id, Documents, Ip, parseConfig, '', type, publicUrl);
return await batchQuery(request.user.id, Documents, Ip, parseConfig, type, publicUrl);
} else {
throw new Parse.Error(Parse.Error.INVALID_SESSION_TOKEN, 'User is not authenticated.');
}
@@ -2,210 +2,246 @@
*
* @param {Parse} Parse
*/
// Helper to create or update a schema
async function ensureSchema(Parse, className, setupFn) {
const schema = new Parse.Schema(className);
setupFn(schema);
try {
// If class exists, update it
await schema.update();
} catch (e) {
// Otherwise, create it
await schema.save();
}
}
// Helper to revert CLP (safe if class doesnt exist)
async function patchSchema(Parse, className, setupFn) {
const schema = new Parse.Schema(className);
setupFn(schema);
try {
await schema.update();
} catch (e) {}
}
exports.up = async Parse => {
const schema = new Parse.Schema('contracts_Signature');
schema.setCLP({
get: { '*': true },
find: { '*': true },
count: { '*': true },
create: { '*': true },
update: { '*': true },
delete: {},
addField: {},
await ensureSchema(Parse, 'contracts_Signature', schema => {
schema.setCLP({
get: { '*': true },
find: { '*': true },
count: { '*': true },
create: { '*': true },
update: { '*': true },
delete: {},
addField: {},
});
});
await schema.update();
const docSchema = new Parse.Schema('contracts_Document');
docSchema.setCLP({
get: { '*': true },
find: { requiresAuthentication: true },
count: { '*': true },
create: { '*': true },
update: { '*': true },
delete: {},
addField: { requiresAuthentication: true },
await ensureSchema(Parse, 'contracts_Document', schema => {
schema.setCLP({
get: { '*': true },
find: { requiresAuthentication: true },
count: { '*': true },
create: { '*': true },
update: { '*': true },
delete: {},
addField: { requiresAuthentication: true },
});
});
await docSchema.update();
const templateSchema = new Parse.Schema('contracts_Template');
templateSchema.setCLP({
get: { '*': true },
find: {},
count: { '*': true },
create: { '*': true },
update: { '*': true },
delete: {},
addField: { requiresAuthentication: true },
await ensureSchema(Parse, 'contracts_Template', schema => {
schema.setCLP({
get: { '*': true },
find: {},
count: { '*': true },
create: { '*': true },
update: { '*': true },
delete: {},
addField: { requiresAuthentication: true },
});
});
await templateSchema.update();
const dataFiles = new Parse.Schema('partners_DataFiles');
dataFiles.setCLP({
get: {},
find: {},
count: {},
create: { '*': true },
update: {},
delete: {},
addField: { '*': true },
await ensureSchema(Parse, 'partners_DataFiles', schema => {
schema.setCLP({
get: {},
find: {},
count: {},
create: { '*': true },
update: {},
delete: {},
addField: { '*': true },
});
});
await dataFiles.update();
const pTenant = new Parse.Schema('partners_Tenant');
pTenant.setCLP({
get: {},
find: {},
count: {},
create: {},
update: {},
delete: {},
addField: {},
await ensureSchema(Parse, 'partners_Tenant', schema => {
schema.setCLP({
get: {},
find: {},
count: {},
create: {},
update: {},
delete: {},
addField: {},
});
});
await pTenant.update();
const TenantCredits = new Parse.Schema('partners_TenantCredits');
TenantCredits.setCLP({
get: { '*': true },
find: { '*': true },
count: { '*': true },
create: { '*': true },
update: { '*': true },
delete: {},
addField: { '*': true },
await ensureSchema(Parse, 'partners_TenantCredits', schema => {
schema.setCLP({
get: { '*': true },
find: { '*': true },
count: { '*': true },
create: { '*': true },
update: { '*': true },
delete: {},
addField: { '*': true },
});
});
await TenantCredits.update();
const _user = new Parse.Schema('_User');
_user.setCLP({
get: { '*': true },
find: { '*': true },
count: { '*': true },
create: { '*': true },
update: { '*': true },
delete: {},
addField: {},
await ensureSchema(Parse, '_User', schema => {
schema.setCLP({
get: { '*': true },
find: { '*': true },
count: { '*': true },
create: { '*': true },
update: { '*': true },
delete: {},
addField: {},
});
});
await _user.update();
const Migrationdb = new Parse.Schema('Migrationdb');
Migrationdb.setCLP({
get: {},
find: {},
count: {},
create: {},
update: {},
delete: {},
addField: {},
await ensureSchema(Parse, 'Migrationdb', schema => {
schema.setCLP({
get: {},
find: {},
count: {},
create: {},
update: {},
delete: {},
addField: {},
});
});
await Migrationdb.update();
const contactbook = new Parse.Schema('contracts_Contactbook');
contactbook.setCLP({
get: { '*': true },
find: { '*': true },
count: { '*': true },
create: { '*': true },
update: { '*': true },
delete: {},
addField: {},
await ensureSchema(Parse, 'contracts_Contactbook', schema => {
schema.setCLP({
get: { '*': true },
find: { '*': true },
count: { '*': true },
create: { '*': true },
update: { '*': true },
delete: {},
addField: {},
});
});
return contactbook.update();
};
/**
*
* @param {Parse} Parse
*/
exports.down = async Parse => {
const schema = new Parse.Schema('contracts_Signature');
schema.setCLP({
get: { '*': true },
find: { '*': true },
count: { '*': true },
create: { '*': true },
update: { '*': true },
delete: { '*': true },
addField: { '*': true },
await patchSchema(Parse, 'contracts_Signature', schema => {
schema.setCLP({
get: { '*': true },
find: { '*': true },
count: { '*': true },
create: { '*': true },
update: { '*': true },
delete: { '*': true },
addField: { '*': true },
});
});
await schema.update();
const docSchema = new Parse.Schema('contracts_Document');
docSchema.setCLP({
get: { '*': true },
find: { '*': true },
count: { '*': true },
create: { '*': true },
update: { '*': true },
delete: { '*': true },
addField: { '*': true },
await patchSchema(Parse, 'contracts_Document', schema => {
schema.setCLP({
get: { '*': true },
find: { '*': true },
count: { '*': true },
create: { '*': true },
update: { '*': true },
delete: { '*': true },
addField: { '*': true },
});
});
await docSchema.update();
const templateSchema = new Parse.Schema('contracts_Template');
templateSchema.setCLP({
get: { '*': true },
find: { '*': true },
count: { '*': true },
create: { '*': true },
update: { '*': true },
delete: { '*': true },
addField: { '*': true },
await patchSchema(Parse, 'contracts_Template', schema => {
schema.setCLP({
get: { '*': true },
find: { '*': true },
count: { '*': true },
create: { '*': true },
update: { '*': true },
delete: { '*': true },
addField: { '*': true },
});
});
await templateSchema.update();
const dataFiles = new Parse.Schema('partners_DataFiles');
dataFiles.setCLP({
get: { '*': true },
find: { '*': true },
count: { '*': true },
create: { '*': true },
update: { '*': true },
delete: { '*': true },
addField: { '*': true },
await patchSchema(Parse, 'partners_DataFiles', schema => {
schema.setCLP({
get: { '*': true },
find: { '*': true },
count: { '*': true },
create: { '*': true },
update: { '*': true },
delete: { '*': true },
addField: { '*': true },
});
});
await dataFiles.update();
const pTenant = new Parse.Schema('partners_Tenant');
pTenant.setCLP({
get: { '*': true },
find: { '*': true },
count: { '*': true },
create: { '*': true },
update: { '*': true },
delete: { '*': true },
addField: { '*': true },
await patchSchema(Parse, 'partners_Tenant', schema => {
schema.setCLP({
get: { '*': true },
find: { '*': true },
count: { '*': true },
create: { '*': true },
update: { '*': true },
delete: { '*': true },
addField: { '*': true },
});
});
await pTenant.update();
const TenantCredits = new Parse.Schema('partners_TenantCredits');
TenantCredits.setCLP({
get: { '*': true },
find: { '*': true },
count: { '*': true },
create: { '*': true },
update: { '*': true },
delete: { '*': true },
addField: { '*': true },
await patchSchema(Parse, 'partners_TenantCredits', schema => {
schema.setCLP({
get: { '*': true },
find: { '*': true },
count: { '*': true },
create: { '*': true },
update: { '*': true },
delete: { '*': true },
addField: { '*': true },
});
});
await TenantCredits.update();
const _user = new Parse.Schema('_User');
_user.setCLP({
get: { '*': true },
find: { '*': true },
count: { '*': true },
create: { '*': true },
update: { '*': true },
delete: { '*': true },
addField: { '*': true },
await patchSchema(Parse, '_User', schema => {
schema.setCLP({
get: { '*': true },
find: { '*': true },
count: { '*': true },
create: { '*': true },
update: { '*': true },
delete: { '*': true },
addField: { '*': true },
});
});
await _user.update();
const Migrationdb = new Parse.Schema('Migrationdb');
Migrationdb.setCLP({
get: { '*': true },
find: { '*': true },
count: { '*': true },
create: { '*': true },
update: { '*': true },
delete: { '*': true },
addField: { '*': true },
await patchSchema(Parse, 'Migrationdb', schema => {
schema.setCLP({
get: { '*': true },
find: { '*': true },
count: { '*': true },
create: { '*': true },
update: { '*': true },
delete: { '*': true },
addField: { '*': true },
});
});
await Migrationdb.update();
const contactbook = new Parse.Schema('contracts_Contactbook');
contactbook.setCLP({
get: { '*': true },
find: { '*': true },
count: { '*': true },
create: { '*': true },
update: { '*': true },
delete: { '*': true },
addField: { '*': true },
await patchSchema(Parse, 'contracts_Contactbook', schema => {
schema.setCLP({
get: { '*': true },
find: { '*': true },
count: { '*': true },
create: { '*': true },
update: { '*': true },
delete: { '*': true },
addField: { '*': true },
});
});
return contactbook.update();
};
@@ -0,0 +1,19 @@
/**
*
* @param {Parse} Parse
*/
exports.up = async Parse => {
const userschema = new Parse.Schema('_User');
userschema.addString('name');
return userschema.update(null, { useMasterKey: true });
};
/**
*
* @param {Parse} Parse
*/
exports.down = async Parse => {
const userschema = new Parse.Schema('_User');
userschema.deleteField('name');
return userschema.update(null, { useMasterKey: true });
};
+2 -2
View File
@@ -160,7 +160,7 @@ app.use(express.json({ limit: '50mb' }));
app.use(express.urlencoded({ limit: '50mb', extended: true }));
app.use(function (req, res, next) {
req.headers['x-real-ip'] = getUserIP(req);
const publicUrl = req?.protocol + '://' + req?.get('host');
const publicUrl = 'https://' + req?.get('host');
req.headers['public_url'] = publicUrl; // process.env.PUBLIC_URL
next();
});
@@ -231,6 +231,7 @@ if (!process.env.TESTING) {
console.log('opensign-server running on port ' + port + '.');
const isWindows = process.platform === 'win32';
// console.log('isWindows', isWindows);
createContactIndex();
const migrate = isWindows
? `set APPLICATION_ID=${process.env.APP_ID}&& set SERVER_URL=${cloudServerUrl}&& set MASTER_KEY=${process.env.MASTER_KEY}&& npx parse-dbtool migrate`
@@ -245,7 +246,6 @@ if (!process.env.TESTING) {
console.error(`Error: ${stderr}`);
return;
}
createContactIndex();
console.log(`Command output: ${stdout}`);
});
});