diff --git a/apps/OpenSign/src/components/LoginFacebook.js b/apps/OpenSign/src/components/LoginFacebook.js index e6b77eed3..442fcb3e7 100644 --- a/apps/OpenSign/src/components/LoginFacebook.js +++ b/apps/OpenSign/src/components/LoginFacebook.js @@ -27,14 +27,14 @@ const LoginFacebook = ({ setThirdpartyLoader(true); const details = { Email: response.email, - Name: response.name, + Name: response.name }; setUserDetails({ ...userDetails, ...details }); const fDetails = { Id: response.userID, AccessToken: response.accessToken, Name: response.name, - Email: response.email, + Email: response.email }; setFBDetails({ ...fBDetails, ...fDetails }); const res = await checkExtUser(fDetails); @@ -42,9 +42,11 @@ const LoginFacebook = ({ }; const checkExtUser = async (details) => { - const extUser = new Parse.Query("contracts_Users"); - extUser.equalTo("Email", details.Email); - const extRes = await extUser.first(); + // const extUser = new Parse.Query("contracts_Users"); + // extUser.equalTo("Email", details.Email); + // const extRes = await extUser.first(); + const params = { email: details.Email }; + const extRes = await Parse.Cloud.run("getUserDetails", params); // console.log("extRes ", extRes); if (extRes) { const params = { ...details, Phone: extRes.get("Phone") }; diff --git a/apps/OpenSign/src/components/LoginGoogle.js b/apps/OpenSign/src/components/LoginGoogle.js index 5fbf3309c..7e00b8e8c 100644 --- a/apps/OpenSign/src/components/LoginGoogle.js +++ b/apps/OpenSign/src/components/LoginGoogle.js @@ -66,9 +66,11 @@ const GoogleSignInBtn = ({ } }; const checkExtUser = async (details) => { - const extUser = new Parse.Query("contracts_Users"); - extUser.equalTo("Email", details.Gmail); - const extRes = await extUser.first(); + // const extUser = new Parse.Query("contracts_Users"); + // extUser.equalTo("Email", details.Gmail); + // const extRes = await extUser.first(); + const params = { email: details.Gmail }; + const extRes = await Parse.Cloud.run("getUserDetails", params); // console.log("extRes ", extRes); if (extRes) { const params = { ...details, Phone: extRes.get("Phone") }; diff --git a/apps/OpenSign/src/routes/Login.js b/apps/OpenSign/src/routes/Login.js index 6da17e83c..25ea70907 100644 --- a/apps/OpenSign/src/routes/Login.js +++ b/apps/OpenSign/src/routes/Login.js @@ -334,23 +334,6 @@ function Login(props) { sessionToken: user.getSessionToken() }; handleSubmitbtn(payload); - // setState({ - // ...state, - // loading: false, - // toastColor: "#d9534f", - // toastDescription: - // "You dont have access to this application." - // }); - - // const x = document.getElementById("snackbar"); - // x.className = "show"; - // setTimeout(function () { - // x.className = x.className.replace( - // "show", - // "" - // ); - // }, 2000); - // localStorage.setItem("accesstoken", null); console.error( "Error while fetching Follow", error @@ -596,6 +579,30 @@ function Login(props) { setThirdpartyLoader(false); setState({ ...state, loading: false }); if (process.env.REACT_APP_ENABLE_SUBSCRIPTION) { + if (billingDate) { + if (billingDate > new Date()) { + localStorage.removeItem("userDetails"); + navigate( + `/${element.pageType}/${element.pageId}` + ); + } else { + navigate(`/subscription`); + } + } else { + navigate(`/subscription`); + } + } + } + } else { + localStorage.setItem("PageLanding", element.pageId); + localStorage.setItem( + "defaultmenuid", + element.menuId + ); + localStorage.setItem("pageType", element.pageType); + setState({ ...state, loading: false }); + setThirdpartyLoader(false); + if (process.env.REACT_APP_ENABLE_SUBSCRIPTION) { if (billingDate) { if (billingDate > new Date()) { localStorage.removeItem("userDetails"); @@ -610,31 +617,7 @@ function Login(props) { } } } - } else { - localStorage.setItem("PageLanding", element.pageId); - localStorage.setItem( - "defaultmenuid", - element.menuId - ); - localStorage.setItem("pageType", element.pageType); - setState({ ...state, loading: false }); - setThirdpartyLoader(false); - if (process.env.REACT_APP_ENABLE_SUBSCRIPTION) { - if (billingDate) { - if (billingDate > new Date()) { - localStorage.removeItem("userDetails"); - navigate( - `/${element.pageType}/${element.pageId}` - ); - } else { - navigate(`/subscription`); - } - } else { - navigate(`/subscription`); - } - } - } - }, + }, (error) => { const payload = { sessionToken: sessionToken @@ -716,9 +699,10 @@ function Login(props) { await axios .post(url, JSON.stringify(body), { headers: headers1 }) - .then((roles) => { + .then((axiosres) => { + const roles = axiosres.data.result; if (roles) { - userRoles = roles.data.result; + userRoles = roles; let _currentRole = ""; if (userRoles.length > 1) { if ( diff --git a/apps/OpenSign/src/routes/Pgsignup.js b/apps/OpenSign/src/routes/Pgsignup.js index bda1934a4..c47adbfcf 100644 --- a/apps/OpenSign/src/routes/Pgsignup.js +++ b/apps/OpenSign/src/routes/Pgsignup.js @@ -67,9 +67,8 @@ const PgSignUp = (props) => { const userSettings = JSON.parse(localStorage.getItem("userSettings")); const extClass = userSettings[0].extended_class; // console.log("extClass ", extClass); - const checkUser = new Parse.Query(extClass); - checkUser.equalTo("Email", userDetails.email); - const res = await checkUser.first(); + const params = { email: userDetails.email }; + const res = await Parse.Cloud.run("getUserDetails", params); // console.log("res", res); if (res) { const checkUser = new Parse.Query(extClass); @@ -279,13 +278,6 @@ const PgSignUp = (props) => { "" ); localStorage.setItem("_user_role", _role); - - if (element.enableCart) { - localStorage.setItem("EnableCart", element.enableCart); - props.setEnableCart(element.enableCart); - } else { - localStorage.removeItem("EnableCart"); - } // Get TenentID from Extendend Class localStorage.setItem( "extended_class", diff --git a/apps/OpenSign/src/routes/Signup.js b/apps/OpenSign/src/routes/Signup.js index d688eaacc..280e5f9a3 100644 --- a/apps/OpenSign/src/routes/Signup.js +++ b/apps/OpenSign/src/routes/Signup.js @@ -101,9 +101,8 @@ const Signup = (props) => { }) .catch(async (err) => { if (err.code === 202) { - const userQuery = new Parse.Query("contracts_Users"); - userQuery.equalTo("Email", email); - const res = await userQuery.first(); + const params = { email: email }; + const res = await Parse.Cloud.run("getUserDetails", params); // console.log("Res ", res); if (res) { alert("User already exists with this username!"); diff --git a/apps/OpenSignServer/cloud/main.js b/apps/OpenSignServer/cloud/main.js index 45cc0efae..2facd600c 100644 --- a/apps/OpenSignServer/cloud/main.js +++ b/apps/OpenSignServer/cloud/main.js @@ -13,6 +13,7 @@ import sendMailOTPv1 from './parsefunction/SendMailOTPv1.js'; import SendMailv1 from './parsefunction/SendMailv1.js'; import AuthLoginAsMail from './parsefunction/AuthLoginAsMail.js'; import getUserId from './parsefunction/getUserId.js'; +import getUserDetails from './parsefunction/getUserDetails.js'; Parse.Cloud.define('AddUserToRole', addUserToGroups); Parse.Cloud.define('UserGroups', getUserGroups); @@ -29,3 +30,4 @@ Parse.Cloud.define('SendOTPMailV1', sendMailOTPv1); Parse.Cloud.define('sendmail', SendMailv1); Parse.Cloud.define('AuthLoginAsMail', AuthLoginAsMail); Parse.Cloud.define('getUserId', getUserId); +Parse.Cloud.define('getUserDetails', getUserDetails); diff --git a/apps/OpenSignServer/cloud/parsefunction/ZohoDetails.js b/apps/OpenSignServer/cloud/parsefunction/ZohoDetails.js index f3d14c616..f2249e53b 100644 --- a/apps/OpenSignServer/cloud/parsefunction/ZohoDetails.js +++ b/apps/OpenSignServer/cloud/parsefunction/ZohoDetails.js @@ -50,7 +50,7 @@ export default async function ZohoDetails(request) { phone: userData.data.data.subscription.contactpersons[0].mobile, name: first_name + ' ' + last_name, email: userData.data.data.subscription.contactpersons[0].email, - nextBillingDate: userData.data.expiring_time, + nextBillingDate: userData.data.data.subscription.next_billing_at, company: company_name, plan: userData.data.data.subscription.plan, customer_id: userData.data.data.subscription.customer_id, diff --git a/apps/OpenSignServer/cloud/parsefunction/getUserDetails.js b/apps/OpenSignServer/cloud/parsefunction/getUserDetails.js new file mode 100644 index 000000000..970d50f22 --- /dev/null +++ b/apps/OpenSignServer/cloud/parsefunction/getUserDetails.js @@ -0,0 +1,12 @@ +async function getUserDetails(request) { + try { + const userQuery = new Parse.Query('contracts_Users'); + userQuery.equalTo('Email', request.params.email); + const res = await userQuery.first({ useMasterKey: true }); + return res; + } catch (err) { + console.log('Err ', err); + return err; + } +} +export default getUserDetails; diff --git a/apps/OpenSignServer/databases/migrations/20231110174122-create_setclp.cjs b/apps/OpenSignServer/databases/migrations/20231110174122-create_setclp.cjs new file mode 100644 index 000000000..b3a670318 --- /dev/null +++ b/apps/OpenSignServer/databases/migrations/20231110174122-create_setclp.cjs @@ -0,0 +1,60 @@ +/** + * + * @param {Parse} Parse + */ +exports.up = async Parse => { + // TODO: set className here + const className = 'Contracts_Users'; + const schema = new Parse.Schema(className); + schema.addString('Name'); + schema.addString('Phone'); + schema.addString('JobTitle'); + schema.addString('Email'); + schema.addString('Company'); + schema.addString('UserRole'); + schema.addObject('Plan'); + schema.addString('Customer_id'); + schema.addString('Subscription_id'); + schema.addString('Next_billing_date'); + schema.addBoolean('IsContactEntry'); + schema.addBoolean('ShareWithTeam'); + schema.addPointer('TenantId', "partners_Tenant") + schema.addPointer('UserId', "_User") + schema.addPointer("CreatedBy", "_User") + schema.setCLP({ + get: {}, + find: {}, + count: {}, + create: {}, + update: {}, + delete: {}, + addField: {}, + }); + + return schema.save(); + + + // const config = new Config(process.env.APP_ID, process.env.PARSE_MOUNT); + // const schema = await config.database.loadSchema(); + // await schema.setPermissions('myclass', { + // get: { requiresAuthentication: true }, + // find: { requiresAuthentication: true }, + // count: { requiresAuthentication: true }, + // create: { requiresAuthentication: true }, + // update: { requiresAuthentication: true }, + // delete: { requiresAuthentication: true }, + // addField: {}, + // }); +}; + +/** + * + * @param {Parse} Parse + */ +exports.down = async Parse => { + // TODO: set className here + const className = 'Contracts_Users'; + const schema = new Parse.Schema(className); + + return schema.purge().then(() => schema.delete()); +}; diff --git a/apps/OpenSignServer/index.js b/apps/OpenSignServer/index.js index 13814d3cc..14ca95558 100644 --- a/apps/OpenSignServer/index.js +++ b/apps/OpenSignServer/index.js @@ -17,11 +17,11 @@ import S3Adapter from 'parse-server-s3-adapter'; import FSFilesAdapter from 'parse-server-fs-adapter'; import AWS from 'aws-sdk'; import { app as customRoute } from './cloud/customRoute/customApp.js'; -import { createTransport } from 'nodemailer'; +import { exec } from 'child_process'; const spacesEndpoint = new AWS.Endpoint(process.env.DO_ENDPOINT); // console.log("configuration ", configuration); -if (process.env.USE_LOCAL !== 'TRUE') { +if (process.env.USE_LOCAL !== "TRUE") { const s3Options = { bucket: process.env.DO_SPACE, // globalConfig.S3FilesAdapter.bucket, baseUrl: process.env.DO_BASEURL, @@ -184,4 +184,22 @@ if (!process.env.TESTING) { }); // This will enable the Live Query real-time server await ParseServer.createLiveQueryServer(httpServer); + + const migrate = + 'APPLICATION_ID=legadranaxn SERVER_URL=http://localhost:8080/app MASTER_KEY=XnAwPDRQQyMr npx parse-dbtool migrate'; + // `APPLICATION_ID=${process.env.APP_ID} SERVER_URL=${process.env.SERVER_URL} MASTER_KEY=${process.env.MASTER_KEY} npx parse-dbtool migrate`; + + exec(migrate, (error, stdout, stderr) => { + if (error) { + console.error(`Error: ${error.message}`); + return; + } + + if (stderr) { + console.error(`Error: ${stderr}`); + return; + } + + console.log(`Command output: ${stdout}`); + }); } diff --git a/apps/OpenSignServer/runmigrate.js b/apps/OpenSignServer/runmigrate.js new file mode 100644 index 000000000..1757b0e1b --- /dev/null +++ b/apps/OpenSignServer/runmigrate.js @@ -0,0 +1,37 @@ +// const { exec } = require('child_process'); +import { exec } from 'child_process'; + +const migrate = + 'APPLICATION_ID=legadranaxn SERVER_URL=http://localhost:8080/app MASTER_KEY=XnAwPDRQQyMr npx parse-dbtool migrate'; +// `APPLICATION_ID=${process.env.APP_ID} SERVER_URL=${process.env.SERVER_URL} MASTER_KEY=${process.env.MASTER_KEY} npx parse-dbtool migrate`; + +exec(migrate, (error, stdout, stderr) => { + if (error) { + console.error(`Error: ${error.message}`); + return; + } + + if (stderr) { + console.error(`Error: ${stderr}`); + return; + } + + console.log(`Command output: ${stdout}`); +}); + +// const seeder = +// 'APPLICATION_ID=legadranaxn SERVER_URL=http://localhost:8080/app MASTER_KEY=XnAwPDRQQyMr npx parse-dbtool seed'; + +// exec(seeder, (error, stdout, stderr) => { +// if (error) { +// console.error(`Error: ${error.message}`); +// return; +// } + +// if (stderr) { +// console.error(`Error: ${stderr}`); +// return; +// } + +// console.log(`Command output: ${stdout}`); +// }); diff --git a/apps/mongo/default-data/legadraGCva.w_dashboard.json b/apps/mongo/default-data/legadraGCva.w_dashboard.json index 3ca1737a5..3f2c2794f 100644 --- a/apps/mongo/default-data/legadraGCva.w_dashboard.json +++ b/apps/mongo/default-data/legadraGCva.w_dashboard.json @@ -40,7 +40,7 @@ "id": "c1935cc0-28d4-3d73-b72a-8c1e3d18a17f", "queryType": "", "class": "contracts_Document", - "query": "where={\"CreatedBy\":{\"__type\":\"Pointer\",\"className\":\"_User\",\"objectId\":\"#UserId.objectId#\"},\"IsCompleted\":{\"$ne\":true},\"IsDeclined\":{\"$ne\":true},\"Type\":{\"$ne\":\"Folder\"},\"Placeholders\":{\"$ne\":null},\"ExpiryDate\":{\"#*gt\":{\"__type\":\"#Date#\",\"iso\":\"#today#\"}}}&count=1", + "query": "where={\"IsDeclined\":{\"$ne\":true},\"IsCompleted\":{\"$ne\":true},\"Type\":{\"$ne\":\"Folder\"},\"Placeholders\":{\"$ne\":null},\"ExpiryDate\":{\"#*gt\":{\"__type\":\"#Date#\",\"iso\":\"#today#\"}}}&include=Signers,AuditTrail.UserPtr", "key": "count", "Redirect_type": "Report", "Redirect_id": "1MwEuxLEkF",