security improvement (#190)

This commit is contained in:
prafull-opensignlabs
2023-11-16 11:02:38 +05:30
committed by GitHub
parent 0a36550907
commit dead3088d6
12 changed files with 177 additions and 69 deletions
@@ -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") };
+5 -3
View File
@@ -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") };
+28 -44
View File
@@ -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 (
+2 -10
View File
@@ -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",
+2 -3
View File
@@ -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!");
+2
View File
@@ -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);
@@ -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,
@@ -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;
@@ -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());
};
+20 -2
View File
@@ -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}`);
});
}
+37
View File
@@ -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}`);
// });
@@ -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",