Updates
This commit is contained in:
parent
a53e968566
commit
d8dddd5979
@ -44,7 +44,10 @@ async function localAddUser({ payload, dbSchema }) {
|
|||||||
return { success: false, payload: `Password is required to create an account` };
|
return { success: false, payload: `Password is required to create an account` };
|
||||||
}
|
}
|
||||||
|
|
||||||
const hashedPassword = hashPassword(payload.password);
|
const hashedPassword = hashPassword({
|
||||||
|
password: payload.password,
|
||||||
|
encryptionKey,
|
||||||
|
});
|
||||||
payload.password = hashedPassword;
|
payload.password = hashedPassword;
|
||||||
|
|
||||||
let fields = await varDatabaseDbHandler({
|
let fields = await varDatabaseDbHandler({
|
||||||
|
@ -26,6 +26,8 @@ async function loginLocalUser({ payload, additionalFields, dbSchema }) {
|
|||||||
const { email, username, password } = payload;
|
const { email, username, password } = payload;
|
||||||
|
|
||||||
const dbFullName = process.env.DSQL_DB_NAME || "";
|
const dbFullName = process.env.DSQL_DB_NAME || "";
|
||||||
|
const encryptionKey = process.env.DSQL_ENCRYPTION_KEY || "";
|
||||||
|
const encryptionSalt = process.env.DSQL_ENCRYPTION_SALT || "";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check input validity
|
* Check input validity
|
||||||
@ -44,7 +46,10 @@ async function loginLocalUser({ payload, additionalFields, dbSchema }) {
|
|||||||
*
|
*
|
||||||
* @description Password hash
|
* @description Password hash
|
||||||
*/
|
*/
|
||||||
let hashedPassword = hashPassword(password);
|
let hashedPassword = hashPassword({
|
||||||
|
password: password,
|
||||||
|
encryptionKey: encryptionKey,
|
||||||
|
});
|
||||||
|
|
||||||
////////////////////////////////////////
|
////////////////////////////////////////
|
||||||
////////////////////////////////////////
|
////////////////////////////////////////
|
||||||
|
@ -1,150 +0,0 @@
|
|||||||
// @ts-check
|
|
||||||
|
|
||||||
/**
|
|
||||||
* ==============================================================================
|
|
||||||
* Imports
|
|
||||||
* ==============================================================================
|
|
||||||
*/
|
|
||||||
const fs = require("fs");
|
|
||||||
|
|
||||||
////////////////////////////////////////////////
|
|
||||||
////////////////////////////////////////////////
|
|
||||||
////////////////////////////////////////////////
|
|
||||||
|
|
||||||
const { OAuth2Client } = require("google-auth-library");
|
|
||||||
|
|
||||||
const dbHandler = require("../../../engine/utils/dbHandler");
|
|
||||||
const hashPassword = require("../../../../functions/hashPassword");
|
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////////////
|
|
||||||
//////////////////////////////////////////////////////////////////////////////////
|
|
||||||
//////////////////////////////////////////////////////////////////////////////////
|
|
||||||
//////////////////////////////////////////////////////////////////////////////////
|
|
||||||
//////////////////////////////////////////////////////////////////////////////////
|
|
||||||
//////////////////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
/**
|
|
||||||
* ==============================================================================
|
|
||||||
* Main Function
|
|
||||||
* ==============================================================================
|
|
||||||
* @param {Object} params - foundUser if any
|
|
||||||
*/
|
|
||||||
module.exports = async function googleLogin({ usertype, foundUser, isSocialValidated, isUserValid, reqBody, serverRes, loginFailureReason }) {
|
|
||||||
const client = new OAuth2Client(process.env.NEXT_PUBLIC_GOOGLE_CLIENT_ID);
|
|
||||||
let isGoogleAuthValid = false;
|
|
||||||
let newFoundUser = null;
|
|
||||||
|
|
||||||
////////////////////////////////////////////////
|
|
||||||
////////////////////////////////////////////////
|
|
||||||
////////////////////////////////////////////////
|
|
||||||
|
|
||||||
try {
|
|
||||||
const ticket = await client.verifyIdToken({
|
|
||||||
idToken: reqBody.token,
|
|
||||||
audience: process.env.NEXT_PUBLIC_GOOGLE_CLIENT_ID, // Specify the CLIENT_ID of the app that accesses the backend
|
|
||||||
// Or, if multiple clients access the backend:
|
|
||||||
//[CLIENT_ID_1, CLIENT_ID_2, CLIENT_ID_3]
|
|
||||||
});
|
|
||||||
|
|
||||||
// @ts-ignore
|
|
||||||
const payload = ticket.payload;
|
|
||||||
const userid = payload["sub"];
|
|
||||||
|
|
||||||
isUserValid = payload.email_verified;
|
|
||||||
|
|
||||||
if (!isUserValid || !payload || !payload.email_verified) return;
|
|
||||||
|
|
||||||
serverRes.isUserValid = payload.email_verified;
|
|
||||||
isSocialValidated = payload.email_verified;
|
|
||||||
isGoogleAuthValid = payload.email_verified;
|
|
||||||
////// If request specified a G Suite domain:
|
|
||||||
////// const domain = payload['hd'];
|
|
||||||
|
|
||||||
let socialHashedPassword = hashPassword(payload.jti);
|
|
||||||
|
|
||||||
////////////////////////////////////////////////
|
|
||||||
////////////////////////////////////////////////
|
|
||||||
////////////////////////////////////////////////
|
|
||||||
|
|
||||||
let existinEmail = await dbHandler({
|
|
||||||
query: `SELECT * FROM ${usertype} WHERE email = ? AND social_login!='1' AND social_platform!='google'`,
|
|
||||||
values: [payload.email],
|
|
||||||
});
|
|
||||||
|
|
||||||
if (existinEmail && existinEmail[0]) {
|
|
||||||
loginFailureReason = "Email Exists Already";
|
|
||||||
isGoogleAuthValid = false;
|
|
||||||
return { isGoogleAuthValid: isGoogleAuthValid, newFoundUser: newFoundUser, loginFailureReason: loginFailureReason };
|
|
||||||
}
|
|
||||||
|
|
||||||
////////////////////////////////////////
|
|
||||||
|
|
||||||
foundUser = await dbHandler({
|
|
||||||
query: `SELECT * FROM ${usertype} WHERE email = ? AND social_login='1' AND social_platform='google'`,
|
|
||||||
values: [payload.email],
|
|
||||||
});
|
|
||||||
|
|
||||||
if (foundUser && foundUser[0]) {
|
|
||||||
newFoundUser = foundUser;
|
|
||||||
return { isGoogleAuthValid: isGoogleAuthValid, newFoundUser: newFoundUser };
|
|
||||||
}
|
|
||||||
|
|
||||||
////////////////////////////////////////////////
|
|
||||||
////////////////////////////////////////////////
|
|
||||||
////////////////////////////////////////////////
|
|
||||||
|
|
||||||
let newUser = await dbHandler({
|
|
||||||
query: `INSERT INTO ${usertype} (
|
|
||||||
first_name,
|
|
||||||
last_name,
|
|
||||||
social_platform,
|
|
||||||
social_name,
|
|
||||||
social_id,
|
|
||||||
email,
|
|
||||||
image,
|
|
||||||
image_thumbnail,
|
|
||||||
password,
|
|
||||||
verification_status,
|
|
||||||
social_login,
|
|
||||||
terms_agreement,
|
|
||||||
date_created,
|
|
||||||
date_code
|
|
||||||
) VALUES (
|
|
||||||
'${payload.given_name}',
|
|
||||||
'${payload.family_name}',
|
|
||||||
'google',
|
|
||||||
'google_${payload.email.replace(/@.*/, "")}',
|
|
||||||
'${payload.sub}',
|
|
||||||
'${payload.email}',
|
|
||||||
'${payload.picture}',
|
|
||||||
'${payload.picture}',
|
|
||||||
'${socialHashedPassword}',
|
|
||||||
'1',
|
|
||||||
'1',
|
|
||||||
'1',
|
|
||||||
'${Date()}',
|
|
||||||
'${Date.now()}'
|
|
||||||
)`,
|
|
||||||
});
|
|
||||||
|
|
||||||
newFoundUser = await dbHandler({
|
|
||||||
query: `SELECT * FROM ${usertype} WHERE id = ?`,
|
|
||||||
values: [newUser.insertId],
|
|
||||||
});
|
|
||||||
|
|
||||||
////////////////////////////////////////////////
|
|
||||||
////////////////////////////////////////////////
|
|
||||||
////////////////////////////////////////////////
|
|
||||||
} catch (error) {
|
|
||||||
loginFailureReason = error;
|
|
||||||
|
|
||||||
isUserValid = false;
|
|
||||||
isSocialValidated = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
////////////////////////////////////////////////
|
|
||||||
////////////////////////////////////////////////
|
|
||||||
////////////////////////////////////////////////
|
|
||||||
|
|
||||||
return { isGoogleAuthValid: isGoogleAuthValid, newFoundUser: newFoundUser };
|
|
||||||
};
|
|
@ -1,10 +1,5 @@
|
|||||||
// @ts-check
|
// @ts-check
|
||||||
|
|
||||||
const hashPassword = require("../../functions/hashPassword");
|
|
||||||
const addUsersTableToDb = require("../engine/addUsersTableToDb");
|
|
||||||
const varDatabaseDbHandler = require("../engine/utils/varDatabaseDbHandler");
|
|
||||||
const addDbEntry = require("../query/utils/addDbEntry");
|
|
||||||
const runQuery = require("../query/utils/runQuery");
|
|
||||||
const updateDbEntry = require("../query/utils/updateDbEntry");
|
const updateDbEntry = require("../query/utils/updateDbEntry");
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1,14 +1,25 @@
|
|||||||
|
/** # MODULE TRACE
|
||||||
|
======================================================================
|
||||||
|
* Detected 4 files that call this module. The files are listed below:
|
||||||
|
======================================================================
|
||||||
|
* `require` Statement Found in [add-user.js] => file:///d:\GitHub\dsql\engine\user\add-user.js
|
||||||
|
* `require` Statement Found in [login-user.js] => file:///d:\GitHub\dsql\engine\user\login-user.js
|
||||||
|
* `require` Statement Found in [googleLogin.js] => file:///d:\GitHub\dsql\engine\user\social\utils\googleLogin.js
|
||||||
|
* `require` Statement Found in [update-user.js] => file:///d:\GitHub\dsql\engine\user\update-user.js
|
||||||
|
==== MODULE TRACE END ==== */
|
||||||
|
|
||||||
// @ts-check
|
// @ts-check
|
||||||
|
|
||||||
const { createHmac } = require("crypto");
|
const { createHmac } = require("crypto");
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* # Hash password Function
|
* # Hash password Function
|
||||||
* @param {string} password
|
* @param {object} param0
|
||||||
|
* @param {string} param0.password - Password to hash
|
||||||
|
* @param {string} param0.encryptionKey - Encryption key
|
||||||
* @returns {string}
|
* @returns {string}
|
||||||
*/
|
*/
|
||||||
module.exports = function hashPassword(password) {
|
module.exports = function hashPassword({ password, encryptionKey }) {
|
||||||
const encryptionKey = process.env.DSQL_ENCRYPTION_KEY || "";
|
|
||||||
const hmac = createHmac("sha512", encryptionKey);
|
const hmac = createHmac("sha512", encryptionKey);
|
||||||
hmac.update(password);
|
hmac.update(password);
|
||||||
let hashed = hmac.digest("base64");
|
let hashed = hmac.digest("base64");
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "datasquirel",
|
"name": "datasquirel",
|
||||||
"version": "1.8.7",
|
"version": "1.8.8",
|
||||||
"description": "Cloud-based SQL data management tool",
|
"description": "Cloud-based SQL data management tool",
|
||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
"bin": {
|
"bin": {
|
||||||
|
Loading…
Reference in New Issue
Block a user