mirror of
https://github.com/OpenSignLabs/OpenSign.git
synced 2026-09-03 16:28:56 +02:00
Compare commits
8
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b1b9b20e97 | ||
|
|
75c0cdb5f9 | ||
|
|
740ccca1f6 | ||
|
|
f3b79cb71f | ||
|
|
f95ea0b9e9 | ||
|
|
647a9ce5b4 | ||
|
|
3f3ca668f5 | ||
|
|
2fd6d1a37a |
@@ -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>
|
||||
|
||||
@@ -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 doesn’t 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 });
|
||||
};
|
||||
@@ -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}`);
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user