diff --git a/dist/package-shared/functions/api/users/api-login.d.ts b/dist/package-shared/functions/api/users/api-login.d.ts index bdffdbf..9c8ebdc 100644 --- a/dist/package-shared/functions/api/users/api-login.d.ts +++ b/dist/package-shared/functions/api/users/api-login.d.ts @@ -2,4 +2,4 @@ import { APILoginFunctionParams, APILoginFunctionReturn } from "../../../types"; /** * # API Login */ -export default function apiLoginUser({ encryptionKey, email, username, password, database, additionalFields, email_login, email_login_code, email_login_field, token, skipPassword, social, useLocal, dbUserId, }: APILoginFunctionParams): Promise; +export default function apiLoginUser({ encryptionKey, email, username, password, database, additionalFields, email_login, email_login_code, email_login_field, token, skipPassword, social, useLocal, dbUserId, debug, }: APILoginFunctionParams): Promise; diff --git a/dist/package-shared/functions/api/users/api-login.js b/dist/package-shared/functions/api/users/api-login.js index 54bcf2b..b0eaad1 100644 --- a/dist/package-shared/functions/api/users/api-login.js +++ b/dist/package-shared/functions/api/users/api-login.js @@ -20,7 +20,7 @@ const hashPassword_1 = __importDefault(require("../../dsql/hashPassword")); * # API Login */ function apiLoginUser(_a) { - return __awaiter(this, arguments, void 0, function* ({ encryptionKey, email, username, password, database, additionalFields, email_login, email_login_code, email_login_field, token, skipPassword, social, useLocal, dbUserId, }) { + return __awaiter(this, arguments, void 0, function* ({ encryptionKey, email, username, password, database, additionalFields, email_login, email_login_code, email_login_field, token, skipPassword, social, useLocal, dbUserId, debug, }) { const dbFullName = (0, grab_db_full_name_1.default)({ dbName: database, userId: dbUserId }); /** * Check input validity @@ -46,13 +46,20 @@ function apiLoginUser(_a) { password: password, }) : null; - console.log(`Logging in: Checking for Existing user in ${dbFullName} database.`); + if (debug) { + console.log("apiLoginUser:database:", dbFullName); + console.log("apiLoginUser:Finding User ..."); + } let foundUser = yield (0, varDatabaseDbHandler_1.default)({ queryString: `SELECT * FROM ${dbFullName}.users WHERE email = ? OR username = ?`, queryValuesArray: [email, username], database: dbFullName, useLocal, + debug, }); + if (debug) { + console.log("apiLoginUser:foundUser:", foundUser); + } if ((!foundUser || !foundUser[0]) && !social) return { success: false, @@ -60,6 +67,9 @@ function apiLoginUser(_a) { msg: "No user found", }; let isPasswordCorrect = false; + if (debug) { + console.log("apiLoginUser:isPasswordCorrect:", isPasswordCorrect); + } if ((foundUser === null || foundUser === void 0 ? void 0 : foundUser[0]) && !email_login && skipPassword) { isPasswordCorrect = true; } @@ -72,6 +82,9 @@ function apiLoginUser(_a) { email_login_code && email_login_field) { const tempCode = foundUser[0][email_login_field]; + if (debug) { + console.log("apiLoginUser:tempCode:", tempCode); + } if (!tempCode) throw new Error("No code Found!"); const tempCodeArray = tempCode.split("-"); @@ -90,6 +103,10 @@ function apiLoginUser(_a) { payload: null, }; } + if (debug) { + console.log("apiLoginUser:isPasswordCorrect:", isPasswordCorrect); + console.log("apiLoginUser:email_login:", email_login); + } if (isPasswordCorrect && email_login) { const resetTempCode = yield (0, varDatabaseDbHandler_1.default)({ queryString: `UPDATE ${dbFullName}.users SET ${email_login_field} = '' WHERE email = ? OR username = ?`, @@ -119,6 +136,10 @@ function apiLoginUser(_a) { logged_in_status: true, date: Date.now(), }; + if (debug) { + console.log("apiLoginUser:userPayload:", userPayload); + console.log("apiLoginUser:Sending Response Object ..."); + } const resposeObject = { success: true, msg: "Login Successful", diff --git a/dist/package-shared/functions/backend/varDatabaseDbHandler.d.ts b/dist/package-shared/functions/backend/varDatabaseDbHandler.d.ts index d1b7418..bdd6327 100644 --- a/dist/package-shared/functions/backend/varDatabaseDbHandler.d.ts +++ b/dist/package-shared/functions/backend/varDatabaseDbHandler.d.ts @@ -4,9 +4,10 @@ type Param = { database?: string; tableSchema?: import("../../types").DSQL_TableSchemaType; useLocal?: boolean; + debug?: boolean; }; /** * # DB handler for specific database */ -export default function varDatabaseDbHandler({ queryString, queryValuesArray, database, tableSchema, useLocal, }: Param): Promise; +export default function varDatabaseDbHandler({ queryString, queryValuesArray, database, tableSchema, useLocal, debug, }: Param): Promise; export {}; diff --git a/dist/package-shared/functions/backend/varDatabaseDbHandler.js b/dist/package-shared/functions/backend/varDatabaseDbHandler.js index c342b44..5462949 100644 --- a/dist/package-shared/functions/backend/varDatabaseDbHandler.js +++ b/dist/package-shared/functions/backend/varDatabaseDbHandler.js @@ -15,69 +15,26 @@ Object.defineProperty(exports, "__esModule", { value: true }); exports.default = varDatabaseDbHandler; const parseDbResults_1 = __importDefault(require("./parseDbResults")); const serverError_1 = __importDefault(require("./serverError")); -const DB_HANDLER_1 = __importDefault(require("../../utils/backend/global-db/DB_HANDLER")); -const DSQL_USER_DB_HANDLER_1 = __importDefault(require("../../utils/backend/global-db/DSQL_USER_DB_HANDLER")); -const LOCAL_DB_HANDLER_1 = __importDefault(require("../../utils/backend/global-db/LOCAL_DB_HANDLER")); +const grab_dsql_connection_1 = __importDefault(require("../../utils/grab-dsql-connection")); +const conn_db_handler_1 = __importDefault(require("../../utils/db/conn-db-handler")); /** * # DB handler for specific database */ function varDatabaseDbHandler(_a) { - return __awaiter(this, arguments, void 0, function* ({ queryString, queryValuesArray, database, tableSchema, useLocal, }) { - /** - * Declare variables - * - * @description Declare "results" variable - */ - const isMaster = useLocal - ? true - : (database === null || database === void 0 ? void 0 : database.match(/^datasquirel$/)) - ? true - : false; - const FINAL_DB_HANDLER = useLocal - ? LOCAL_DB_HANDLER_1.default - : isMaster - ? DB_HANDLER_1.default - : DSQL_USER_DB_HANDLER_1.default; - let results; - /** - * Fetch from db - * - * @description Fetch data from db if no cache - */ - try { - if (queryString && - queryValuesArray && - Array.isArray(queryValuesArray) && - queryValuesArray[0]) { - results = isMaster - ? yield FINAL_DB_HANDLER(queryString, queryValuesArray) - : yield FINAL_DB_HANDLER({ - paradigm: "Full Access", - queryString, - queryValues: queryValuesArray, - }); - } - else { - results = isMaster - ? yield FINAL_DB_HANDLER(queryString) - : yield FINAL_DB_HANDLER({ - paradigm: "Full Access", - queryString, - }); - } + return __awaiter(this, arguments, void 0, function* ({ queryString, queryValuesArray, database, tableSchema, useLocal, debug, }) { + let CONNECTION = (0, grab_dsql_connection_1.default)({ fa: true }); + if (useLocal) + CONNECTION = (0, grab_dsql_connection_1.default)({ local: true }); + if (database === null || database === void 0 ? void 0 : database.match(/^datasquirel$/)) + CONNECTION = (0, grab_dsql_connection_1.default)(); + if (debug) { + console.log(`varDatabaseDbHandler:query:`, queryString); + console.log(`varDatabaseDbHandler:values:`, queryValuesArray); } - catch (error) { - console.log(`varDatabaseDbHandler Error: ${error.message}`); - (0, serverError_1.default)({ - component: "varDatabaseDbHandler/lines-29-32", - message: error.message, - }); + let results = yield (0, conn_db_handler_1.default)(CONNECTION, queryString, queryValuesArray); + if (debug) { + console.log(`varDatabaseDbHandler:results:`, results); } - /** - * Return results - * - * @description Return results add to cache if "req" param is passed - */ if (results && tableSchema) { try { const unparsedResults = results; diff --git a/dist/package-shared/types/index.d.ts b/dist/package-shared/types/index.d.ts index d941319..854e7e2 100644 --- a/dist/package-shared/types/index.d.ts +++ b/dist/package-shared/types/index.d.ts @@ -1028,6 +1028,7 @@ export type APILoginFunctionParams = { social?: boolean; useLocal?: boolean; dbUserId?: number | string; + debug?: boolean; }; export type APILoginFunctionReturn = { success: boolean; diff --git a/dist/package-shared/utils/grab-dsql-connection.d.ts b/dist/package-shared/utils/grab-dsql-connection.d.ts index f26789e..225f264 100644 --- a/dist/package-shared/utils/grab-dsql-connection.d.ts +++ b/dist/package-shared/utils/grab-dsql-connection.d.ts @@ -9,9 +9,13 @@ type Param = { */ fa?: boolean; /** - * Full Access? + * No Database Connection */ noDb?: boolean; + /** + * Is this a local connection? + */ + local?: boolean; }; /** * # Grab General CONNECTION for DSQL diff --git a/dist/users/login-user.d.ts b/dist/users/login-user.d.ts index 18607da..9dd0d08 100644 --- a/dist/users/login-user.d.ts +++ b/dist/users/login-user.d.ts @@ -21,6 +21,7 @@ type Param = { user_id?: string | number; skipPassword?: boolean; useLocal?: boolean; + debug?: boolean; skipWriteAuthFile?: boolean; apiUserID?: string | number; dbUserId?: string | number; @@ -28,5 +29,5 @@ type Param = { /** * # Login A user */ -export default function loginUser({ key, payload, database, additionalFields, response, encryptionKey, encryptionSalt, email_login, email_login_code, temp_code_field, token, user_id, skipPassword, useLocal, apiUserID, skipWriteAuthFile, dbUserId, }: Param): Promise; +export default function loginUser({ key, payload, database, additionalFields, response, encryptionKey, encryptionSalt, email_login, email_login_code, temp_code_field, token, user_id, skipPassword, useLocal, apiUserID, skipWriteAuthFile, dbUserId, debug, }: Param): Promise; export {}; diff --git a/dist/users/login-user.js b/dist/users/login-user.js index b9dacf1..c4633a4 100644 --- a/dist/users/login-user.js +++ b/dist/users/login-user.js @@ -24,7 +24,7 @@ const write_auth_files_1 = require("../package-shared/functions/backend/auth/wri * # Login A user */ function loginUser(_a) { - return __awaiter(this, arguments, void 0, function* ({ key, payload, database, additionalFields, response, encryptionKey, encryptionSalt, email_login, email_login_code, temp_code_field, token, user_id, skipPassword, useLocal, apiUserID, skipWriteAuthFile, dbUserId, }) { + return __awaiter(this, arguments, void 0, function* ({ key, payload, database, additionalFields, response, encryptionKey, encryptionSalt, email_login, email_login_code, temp_code_field, token, user_id, skipPassword, useLocal, apiUserID, skipWriteAuthFile, dbUserId, debug, }) { var _b; const grabedHostNames = (0, grab_host_names_1.default)(); const { host, port, scheme } = grabedHostNames; @@ -102,6 +102,7 @@ function loginUser(_a) { token, useLocal, dbUserId, + debug, }); } else { @@ -147,11 +148,9 @@ function loginUser(_a) { httpsRequest.end(); }); } - /** - * Make https request - * - * @description make a request to datasquirel.com - */ + if (debug) { + console.log(`loginUser:httpResponse:`, httpResponse); + } if (httpResponse === null || httpResponse === void 0 ? void 0 : httpResponse.success) { let encryptedPayload = (0, encrypt_1.default)({ data: JSON.stringify(httpResponse.payload), @@ -174,10 +173,18 @@ function loginUser(_a) { httpResponse["key"] = String(encryptedPayload); const authKeyName = cookieNames.keyCookieName; const csrfName = cookieNames.csrfCookieName; + if (debug) { + console.log(`loginUser:authKeyName:`, authKeyName); + console.log(`loginUser:csrfName:`, csrfName); + console.log(`loginUser:encryptedPayload:`, encryptedPayload); + } response === null || response === void 0 ? void 0 : response.setHeader("Set-Cookie", [ `${authKeyName}=${encryptedPayload};samesite=strict;path=/;HttpOnly=true;Secure=true`, `${csrfName}=${(_b = httpResponse.payload) === null || _b === void 0 ? void 0 : _b.csrf_k};samesite=strict;path=/;HttpOnly=true`, ]); + if (debug) { + console.log(`loginUser:Response Sent!`); + } } return httpResponse; }); diff --git a/package-shared/functions/api/users/api-login.ts b/package-shared/functions/api/users/api-login.ts index e43d050..e35d81a 100644 --- a/package-shared/functions/api/users/api-login.ts +++ b/package-shared/functions/api/users/api-login.ts @@ -25,6 +25,7 @@ export default async function apiLoginUser({ social, useLocal, dbUserId, + debug, }: APILoginFunctionParams): Promise { const dbFullName = grabDbFullName({ dbName: database, userId: dbUserId }); @@ -56,17 +57,23 @@ export default async function apiLoginUser({ }) : null; - console.log( - `Logging in: Checking for Existing user in ${dbFullName} database.` - ); + if (debug) { + console.log("apiLoginUser:database:", dbFullName); + console.log("apiLoginUser:Finding User ..."); + } let foundUser = await varDatabaseDbHandler({ queryString: `SELECT * FROM ${dbFullName}.users WHERE email = ? OR username = ?`, queryValuesArray: [email, username], database: dbFullName, useLocal, + debug, }); + if (debug) { + console.log("apiLoginUser:foundUser:", foundUser); + } + if ((!foundUser || !foundUser[0]) && !social) return { success: false, @@ -76,6 +83,10 @@ export default async function apiLoginUser({ let isPasswordCorrect = false; + if (debug) { + console.log("apiLoginUser:isPasswordCorrect:", isPasswordCorrect); + } + if (foundUser?.[0] && !email_login && skipPassword) { isPasswordCorrect = true; } else if (foundUser?.[0] && !email_login) { @@ -89,6 +100,10 @@ export default async function apiLoginUser({ ) { const tempCode: string = foundUser[0][email_login_field]; + if (debug) { + console.log("apiLoginUser:tempCode:", tempCode); + } + if (!tempCode) throw new Error("No code Found!"); const tempCodeArray = tempCode.split("-"); @@ -111,6 +126,11 @@ export default async function apiLoginUser({ }; } + if (debug) { + console.log("apiLoginUser:isPasswordCorrect:", isPasswordCorrect); + console.log("apiLoginUser:email_login:", email_login); + } + if (isPasswordCorrect && email_login) { const resetTempCode = await varDatabaseDbHandler({ queryString: `UPDATE ${dbFullName}.users SET ${email_login_field} = '' WHERE email = ? OR username = ?`, @@ -144,6 +164,11 @@ export default async function apiLoginUser({ date: Date.now(), }; + if (debug) { + console.log("apiLoginUser:userPayload:", userPayload); + console.log("apiLoginUser:Sending Response Object ..."); + } + const resposeObject: APILoginFunctionReturn = { success: true, msg: "Login Successful", diff --git a/package-shared/functions/backend/varDatabaseDbHandler.ts b/package-shared/functions/backend/varDatabaseDbHandler.ts index acb0bcf..ae6f7d0 100644 --- a/package-shared/functions/backend/varDatabaseDbHandler.ts +++ b/package-shared/functions/backend/varDatabaseDbHandler.ts @@ -1,8 +1,7 @@ import parseDbResults from "./parseDbResults"; import serverError from "./serverError"; -import DB_HANDLER from "../../utils/backend/global-db/DB_HANDLER"; -import DSQL_USER_DB_HANDLER from "../../utils/backend/global-db/DSQL_USER_DB_HANDLER"; -import LOCAL_DB_HANDLER from "../../utils/backend/global-db/LOCAL_DB_HANDLER"; +import grabDSQLConnection from "../../utils/grab-dsql-connection"; +import connDbHandler from "../../utils/db/conn-db-handler"; type Param = { queryString: string; @@ -10,6 +9,7 @@ type Param = { database?: string; tableSchema?: import("../../types").DSQL_TableSchemaType; useLocal?: boolean; + debug?: boolean; }; /** @@ -21,66 +21,27 @@ export default async function varDatabaseDbHandler({ database, tableSchema, useLocal, + debug, }: Param): Promise { - /** - * Declare variables - * - * @description Declare "results" variable - */ - const isMaster = useLocal - ? true - : database?.match(/^datasquirel$/) - ? true - : false; + let CONNECTION = grabDSQLConnection({ fa: true }); + if (useLocal) CONNECTION = grabDSQLConnection({ local: true }); + if (database?.match(/^datasquirel$/)) CONNECTION = grabDSQLConnection(); - const FINAL_DB_HANDLER: any = useLocal - ? LOCAL_DB_HANDLER - : isMaster - ? DB_HANDLER - : DSQL_USER_DB_HANDLER; - - let results; - - /** - * Fetch from db - * - * @description Fetch data from db if no cache - */ - try { - if ( - queryString && - queryValuesArray && - Array.isArray(queryValuesArray) && - queryValuesArray[0] - ) { - results = isMaster - ? await FINAL_DB_HANDLER(queryString, queryValuesArray) - : await FINAL_DB_HANDLER({ - paradigm: "Full Access", - queryString, - queryValues: queryValuesArray, - }); - } else { - results = isMaster - ? await FINAL_DB_HANDLER(queryString) - : await FINAL_DB_HANDLER({ - paradigm: "Full Access", - queryString, - }); - } - } catch (error: any) { - console.log(`varDatabaseDbHandler Error: ${error.message}`); - serverError({ - component: "varDatabaseDbHandler/lines-29-32", - message: error.message, - }); + if (debug) { + console.log(`varDatabaseDbHandler:query:`, queryString); + console.log(`varDatabaseDbHandler:values:`, queryValuesArray); + } + + let results = await connDbHandler( + CONNECTION, + queryString, + queryValuesArray + ); + + if (debug) { + console.log(`varDatabaseDbHandler:results:`, results); } - /** - * Return results - * - * @description Return results add to cache if "req" param is passed - */ if (results && tableSchema) { try { const unparsedResults = results; diff --git a/package-shared/types/index.ts b/package-shared/types/index.ts index 1c33a79..69e2ca9 100644 --- a/package-shared/types/index.ts +++ b/package-shared/types/index.ts @@ -1210,6 +1210,7 @@ export type APILoginFunctionParams = { social?: boolean; useLocal?: boolean; dbUserId?: number | string; + debug?: boolean; }; export type APILoginFunctionReturn = { success: boolean; diff --git a/package-shared/utils/grab-dsql-connection.ts b/package-shared/utils/grab-dsql-connection.ts index 947ba4c..ac81f94 100644 --- a/package-shared/utils/grab-dsql-connection.ts +++ b/package-shared/utils/grab-dsql-connection.ts @@ -10,9 +10,13 @@ type Param = { */ fa?: boolean; /** - * Full Access? + * No Database Connection */ noDb?: boolean; + /** + * Is this a local connection? + */ + local?: boolean; }; /** diff --git a/package.json b/package.json index 32db4e9..f52c30e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@moduletrace/datasquirel", - "version": "3.5.1", + "version": "3.5.2", "description": "Cloud-based SQL data management tool", "main": "dist/index.js", "bin": { diff --git a/users/login-user.ts b/users/login-user.ts index cc878f3..7ed4e40 100644 --- a/users/login-user.ts +++ b/users/login-user.ts @@ -31,6 +31,7 @@ type Param = { user_id?: string | number; skipPassword?: boolean; useLocal?: boolean; + debug?: boolean; skipWriteAuthFile?: boolean; apiUserID?: string | number; dbUserId?: string | number; @@ -57,6 +58,7 @@ export default async function loginUser({ apiUserID, skipWriteAuthFile, dbUserId, + debug, }: Param): Promise { const grabedHostNames = grabHostNames(); const { host, port, scheme } = grabedHostNames; @@ -152,6 +154,7 @@ export default async function loginUser({ token, useLocal, dbUserId, + debug, }); } else { httpResponse = await new Promise((resolve, reject) => { @@ -210,11 +213,10 @@ export default async function loginUser({ }); } - /** - * Make https request - * - * @description make a request to datasquirel.com - */ + if (debug) { + console.log(`loginUser:httpResponse:`, httpResponse); + } + if (httpResponse?.success) { let encryptedPayload = encrypt({ data: JSON.stringify(httpResponse.payload), @@ -245,10 +247,20 @@ export default async function loginUser({ const authKeyName = cookieNames.keyCookieName; const csrfName = cookieNames.csrfCookieName; + if (debug) { + console.log(`loginUser:authKeyName:`, authKeyName); + console.log(`loginUser:csrfName:`, csrfName); + console.log(`loginUser:encryptedPayload:`, encryptedPayload); + } + response?.setHeader("Set-Cookie", [ `${authKeyName}=${encryptedPayload};samesite=strict;path=/;HttpOnly=true;Secure=true`, `${csrfName}=${httpResponse.payload?.csrf_k};samesite=strict;path=/;HttpOnly=true`, ]); + + if (debug) { + console.log(`loginUser:Response Sent!`); + } } return httpResponse;