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 27a7fa5..bdffdbf 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, }: 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, }: 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 2a16ea3..54bcf2b 100644 --- a/dist/package-shared/functions/api/users/api-login.js +++ b/dist/package-shared/functions/api/users/api-login.js @@ -13,14 +13,15 @@ var __importDefault = (this && this.__importDefault) || function (mod) { }; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = apiLoginUser; +const grab_db_full_name_1 = __importDefault(require("../../../utils/grab-db-full-name")); const varDatabaseDbHandler_1 = __importDefault(require("../../backend/varDatabaseDbHandler")); 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, }) { - const dbFullName = database.replace(/[^a-z0-9_]/g, ""); + 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, }) { + const dbFullName = (0, grab_db_full_name_1.default)({ dbName: database, userId: dbUserId }); /** * Check input validity * @@ -45,14 +46,13 @@ function apiLoginUser(_a) { password: password, }) : null; - console.log("Finding DSQL User ..."); + console.log(`Logging in: Checking for Existing user in ${dbFullName} database.`); let foundUser = yield (0, varDatabaseDbHandler_1.default)({ queryString: `SELECT * FROM ${dbFullName}.users WHERE email = ? OR username = ?`, queryValuesArray: [email, username], database: dbFullName, useLocal, }); - console.log("foundUser", foundUser); if ((!foundUser || !foundUser[0]) && !social) return { success: false, diff --git a/dist/package-shared/types/index.d.ts b/dist/package-shared/types/index.d.ts index 684f662..d941319 100644 --- a/dist/package-shared/types/index.d.ts +++ b/dist/package-shared/types/index.d.ts @@ -143,6 +143,7 @@ export interface PackageUserLoginRequestBody { social?: boolean; dbSchema?: DSQL_DatabaseSchemaType; skipPassword?: boolean; + dbUserId: string | number; } export interface PackageUserLoginLocalBody { payload: any; @@ -1026,6 +1027,7 @@ export type APILoginFunctionParams = { skipPassword?: boolean; social?: boolean; useLocal?: boolean; + dbUserId?: number | string; }; export type APILoginFunctionReturn = { success: boolean; diff --git a/dist/package-shared/utils/grab-db-full-name.d.ts b/dist/package-shared/utils/grab-db-full-name.d.ts new file mode 100644 index 0000000..d77309c --- /dev/null +++ b/dist/package-shared/utils/grab-db-full-name.d.ts @@ -0,0 +1,9 @@ +type Param = { + dbName: string; + userId?: string | number; +}; +/** + * # Grab Database Full Name + */ +export default function grabDbFullName({ dbName, userId }: Param): string; +export {}; diff --git a/dist/package-shared/utils/grab-db-full-name.js b/dist/package-shared/utils/grab-db-full-name.js new file mode 100644 index 0000000..d822768 --- /dev/null +++ b/dist/package-shared/utils/grab-db-full-name.js @@ -0,0 +1,14 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.default = grabDbFullName; +/** + * # Grab Database Full Name + */ +function grabDbFullName({ dbName, userId }) { + const sanitizedName = dbName.replace(/[^a-z0-9\_]/g, ""); + const cleanedDbName = sanitizedName.replace(/datasquirel_user_\d+_/, ""); + if (!userId) + return cleanedDbName; + const dbNamePrefix = `datasquirel_user_${userId}_`; + return dbNamePrefix + cleanedDbName; +} diff --git a/dist/users/login-user.d.ts b/dist/users/login-user.d.ts index 111689d..18607da 100644 --- a/dist/users/login-user.d.ts +++ b/dist/users/login-user.d.ts @@ -23,9 +23,10 @@ type Param = { useLocal?: boolean; skipWriteAuthFile?: boolean; apiUserID?: string | number; + dbUserId?: string | number; }; /** * # 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, }: 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, }: Param): Promise; export {}; diff --git a/dist/users/login-user.js b/dist/users/login-user.js index 800f10a..b9dacf1 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, }) { + 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, }) { var _b; const grabedHostNames = (0, grab_host_names_1.default)(); const { host, port, scheme } = grabedHostNames; @@ -101,18 +101,11 @@ function loginUser(_a) { email_login_field: emailLoginTempCodeFieldName, token, useLocal, + dbUserId, }); } else { - /** - * Make https request - * - * @description make a request to datasquirel.com - * - * @type {{ success: boolean, payload: import("../package-shared/types").DATASQUIREL_LoggedInUser | null, userId?: number, msg?: string }} - */ httpResponse = yield new Promise((resolve, reject) => { - /** @type {import("../package-shared/types").PackageUserLoginRequestBody} */ const reqPayload = { encryptionKey: finalEncryptionKey, payload, @@ -123,6 +116,7 @@ function loginUser(_a) { email_login_field: emailLoginTempCodeFieldName, token, skipPassword: skipPassword, + dbUserId: dbUserId || 0, }; const reqPayloadJSON = JSON.stringify(reqPayload); const httpsRequest = scheme.request({ @@ -137,13 +131,7 @@ function loginUser(_a) { port, hostname: host, path: `/api/user/${user_id || grabedHostNames.user_id}/login-user`, - }, - /** - * Callback Function - * - * @description https request callback - */ - (res) => { + }, (res) => { var str = ""; res.on("data", function (chunk) { str += chunk; diff --git a/package-shared/functions/api/users/api-login.ts b/package-shared/functions/api/users/api-login.ts index 8f3a737..e43d050 100644 --- a/package-shared/functions/api/users/api-login.ts +++ b/package-shared/functions/api/users/api-login.ts @@ -3,6 +3,7 @@ import { APILoginFunctionReturn, DATASQUIREL_LoggedInUser, } from "../../../types"; +import grabDbFullName from "../../../utils/grab-db-full-name"; import varDatabaseDbHandler from "../../backend/varDatabaseDbHandler"; import hashPassword from "../../dsql/hashPassword"; @@ -23,8 +24,9 @@ export default async function apiLoginUser({ skipPassword, social, useLocal, + dbUserId, }: APILoginFunctionParams): Promise { - const dbFullName = database.replace(/[^a-z0-9_]/g, ""); + const dbFullName = grabDbFullName({ dbName: database, userId: dbUserId }); /** * Check input validity @@ -54,7 +56,9 @@ export default async function apiLoginUser({ }) : null; - console.log("Finding DSQL User ..."); + console.log( + `Logging in: Checking for Existing user in ${dbFullName} database.` + ); let foundUser = await varDatabaseDbHandler({ queryString: `SELECT * FROM ${dbFullName}.users WHERE email = ? OR username = ?`, @@ -63,8 +67,6 @@ export default async function apiLoginUser({ useLocal, }); - console.log("foundUser", foundUser); - if ((!foundUser || !foundUser[0]) && !social) return { success: false, diff --git a/package-shared/types/index.ts b/package-shared/types/index.ts index 768623d..1c33a79 100644 --- a/package-shared/types/index.ts +++ b/package-shared/types/index.ts @@ -158,6 +158,7 @@ export interface PackageUserLoginRequestBody { social?: boolean; dbSchema?: DSQL_DatabaseSchemaType; skipPassword?: boolean; + dbUserId: string | number; } export interface PackageUserLoginLocalBody { @@ -1208,6 +1209,7 @@ export type APILoginFunctionParams = { skipPassword?: boolean; social?: boolean; useLocal?: boolean; + dbUserId?: number | string; }; export type APILoginFunctionReturn = { success: boolean; diff --git a/package-shared/utils/grab-db-full-name.ts b/package-shared/utils/grab-db-full-name.ts new file mode 100644 index 0000000..d344e1c --- /dev/null +++ b/package-shared/utils/grab-db-full-name.ts @@ -0,0 +1,18 @@ +type Param = { + dbName: string; + userId?: string | number; +}; + +/** + * # Grab Database Full Name + */ +export default function grabDbFullName({ dbName, userId }: Param): string { + const sanitizedName = dbName.replace(/[^a-z0-9\_]/g, ""); + const cleanedDbName = sanitizedName.replace(/datasquirel_user_\d+_/, ""); + + if (!userId) return cleanedDbName; + + const dbNamePrefix = `datasquirel_user_${userId}_`; + + return dbNamePrefix + cleanedDbName; +} diff --git a/package.json b/package.json index 1cb907e..32db4e9 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@moduletrace/datasquirel", - "version": "3.5.0", + "version": "3.5.1", "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 02c9d26..cc878f3 100644 --- a/users/login-user.ts +++ b/users/login-user.ts @@ -9,6 +9,7 @@ import { writeAuthFile } from "../package-shared/functions/backend/auth/write-au import { APILoginFunctionReturn, DSQL_DatabaseSchemaType, + PackageUserLoginRequestBody, } from "../package-shared/types"; type Param = { @@ -32,6 +33,7 @@ type Param = { useLocal?: boolean; skipWriteAuthFile?: boolean; apiUserID?: string | number; + dbUserId?: string | number; }; /** @@ -54,6 +56,7 @@ export default async function loginUser({ useLocal, apiUserID, skipWriteAuthFile, + dbUserId, }: Param): Promise { const grabedHostNames = grabHostNames(); const { host, port, scheme } = grabedHostNames; @@ -148,29 +151,22 @@ export default async function loginUser({ email_login_field: emailLoginTempCodeFieldName, token, useLocal, + dbUserId, }); } else { - /** - * Make https request - * - * @description make a request to datasquirel.com - * - * @type {{ success: boolean, payload: import("../package-shared/types").DATASQUIREL_LoggedInUser | null, userId?: number, msg?: string }} - */ httpResponse = await new Promise((resolve, reject) => { - /** @type {import("../package-shared/types").PackageUserLoginRequestBody} */ - const reqPayload: import("../package-shared/types").PackageUserLoginRequestBody = - { - encryptionKey: finalEncryptionKey, - payload, - database, - additionalFields, - email_login, - email_login_code, - email_login_field: emailLoginTempCodeFieldName, - token, - skipPassword: skipPassword, - }; + const reqPayload: PackageUserLoginRequestBody = { + encryptionKey: finalEncryptionKey, + payload, + database, + additionalFields, + email_login, + email_login_code, + email_login_field: emailLoginTempCodeFieldName, + token, + skipPassword: skipPassword, + dbUserId: dbUserId || 0, + }; const reqPayloadJSON = JSON.stringify(reqPayload); @@ -192,11 +188,6 @@ export default async function loginUser({ }/login-user`, }, - /** - * Callback Function - * - * @description https request callback - */ (res) => { var str = "";